add

Thursday, 19 January 2023

Thursday, 30 January 2020

Tuesday, 3 July 2018

How much time does an OLA (Uber, Meru, TaxiForSure) like app take in development?

App : Online Taxi Booking
User App
Register/Signup
  • Login page will appear that will redirect to Home page
Signup/Login
  • Signup:- Facebook, Google, Mobile Number(OTP) / Skip
  • User can Sign in using Social media or by entering the phone no./Password
Login
  • Social media or Username, Password
Create New Profile Screen
  • In this screen user has ability to create new account by filling these parameters:
Upload Profile
  • First Name, Last Name, Email, Gender, Select Country, Address, Mobile Number, Password
User Interface & Map
  • User dashboard and Google map
  • Available Car types
Notification Screen
  • Ability to see Notification request accepted
  • Ability to see Notification request received
  • Notification after Payment Confirmation
  • Booking
Current location from map
  • Application will select location through GPS
User defined position
  • User can select desired position as pickup
Set Destination
  • User will have to enter the desired destination at time of booking
  • User can also change destination after arrival of driver
Get Ride Estimate
  • User can view ride charges info
Booking Process: Simple steps to book your ride
  1. Enable Location Service
  2. Open Taxi app in your mobile.
  3. Select Cab option (Mini, Micro, Sedan, Shared Ride etc.), or go with already selected one.
  4. Touch "SET PICKUP LOCATION".
  5. Touch "Request SEDAN", it will start trying to connect you with nearest driver.
  6. App shows your Car number plate, persons, distance, estimate button. Your Cab is booked. OTP generated
  7. Keep track of your cab on app, when it arrives, enter the OTP and take ride.
  8. At destination, driver completes the ride then rate your ride before taking next ride
Contact Driver
  • Contact Driver After Booking
  • User can call driver/track location in map
  • User can click to view Driver description
Track Driver
  • Driver can be tracked after confirming ride
  • User can view approx. time of driver arrival
  • User can call driver or cancel the ride
Ride Initiate Process
  • User will share the OTP with driver to begin the ride
  • Driver and User map will flow in parallel
Track Ride : How it works
  • Open the Taxi app.
  • Set up your Family Profile.
  • When one of your members takes a ride with Taxi under the Family Profile, you’ll be automatically notified with their trip details.
  • You can follow the trip’s progress live on the map within your own Taxi app.
  • The cost of the ride is automatically billed to you and you will both receive a copy of the receipt.
Other Detail
  • Share ride details (optional)
  • User can share ride details with Family
Destination reached
  • User can stop the ride / extend ride
  • When stop, ride charges will be displayed
Driver Rating
  • Rating is based on User experience
  • User can also view the trip (car info, driver info, charges & source and destination info)
User Menu
  • Name of User
  • Profile Image
  • Home
  • Payment
  • Notification
  • Setting(Change Pass, Emergency contact)
  • Customer Support(Data Call / Whatsapp Call)
  • Refer a Friend (Win free ride)
  • Logout
Payment / Feedback
  • Payment : Payment can be given through Cash/Card
  • Feedback : Feedback is based on travelling experience
Driver App
  • Functional Hierarchy / Screen Flow
  • Ask driver to enable the location
Driver Registration
  • Manual Registration (submitting copy of Car’s Registration certificate, Pollution card, driving License.) vehicle insurance, vehicle permit, share links of Social media (Facebook/Google +), Email ID, Phone number, Photos of them self and car, etc.
  • Online Registration (uploading copy of Car’s Registration certificate, Pollution card, driving License.) vehicle insurance, vehicle permit, add links of Social media (Facebook/Google +), Email ID, Phone number (OTP verification), Photos of them self and car, etc.
  • Admin have to Verify documents and make driver active.
  • Admin will provide login credentials to driver with Username and Password on their registered phone (SMS) or Email ID.
Login Screen :Social Media (Facebook, Google + etc.)
  • Username/Email
  • Password
Home Screen
  • Source, Destination, Car categories, location pin, Navigation bar, Map
Online Screen
  • Pickup Request (Time, fare, location)
Menu : Sidebar Menu/Navigation
  • Home, Notification, Driver Support, Setting, Dashboard, Earning (Today/Weekly-Amount earned, time consumed, trip taken i.e. list view), refer friend (invite link shared via whatsapp, Facebook, text etc.), Logout
Request : Accept/Reject Request
  • After being requested by user diver can either accept/reject the ride for that user
  • If accepted driver will have to move towards selected location
Location of Customer
  • After request is accepted driver will know the location of user
  • Driver can reach the location through GPS
Contact User after booking
  • User will be contacted by driver once Cab is reached on the source point or nearby user
Initiate Ride
  • Driver will ask OTP from user and begin ride
Track : Track through Google Map
  • Google map navigation will open by filling the User’s location
Payment/Feedback :
Payment
  • After reaching on destination user will pay for the ride
Feedback
Driver will enter ride feedback
Update Ride Info
  • When ride is finished, driver will update
Reach Destination
  • When User reaches the destination, he will stop the ride
  • Payment is done and driver is rated
Customer : Customer Experience
  • Driver can add the user experience on that ride
Customer Rating
  • Driver will rate the customer according to ride interaction and behavior of customer
Admin panel (Web) : Twitter bootstrap with ROR or PHP, Database PostGres.
Manage Driver/Customer
  • Admin have rights to manage the customer and driver
  • Features will be available to both the user and customer as per the requirements of driver and customer
Ride Booked by Driver/Customer
  • Rides booked by user can be seen by admin.
  • Rides being completed by driver can be viewed.
  • Rides not accepted by drivers can also be tracked, for analysis
Manage Driver through GPS
  • Admin have the capability to manage the driver location and routes taken through GPS
Flags for driver area i.e. boundary division
  • Flags will be set for driver so that driver will be available in particular area assigned
Overall history
  • History need to be maintained in case of an emergency, admin need to keep track of history regarding user and driver
All data will be accessible
  • An admin will have rights to access the data of driver and customer regarding drives being booked
Manage transaction
  • Transaction need to be managed through fare generation screen after ride is over
  • A secure receipt need to be generated when destination is reached
Add/remove vehicle category
  • App admin will have rights to add or remove driver as per performance and status of quality service
Base km/Mile, Base Fare, Fare per unit (mile Or km)
  • These fare depends upon the category chosen (Mini, Micro, Sedan, Shared etc.)
Valid driver info with vehicle
  • Fraud driver should be avoided with verified driver and vehicle registration.
  • Vehicle and driver document must be up to date i.e. driver license, car registration and pollution document
Manage document of driver
  • Driver and Car doc must be vali

Tuesday, 19 June 2018

How To Fill DropDown in GridView

Fill DropDown in GridView


In this article I’m going to explain how to use DropDownList control in ASP.NET using C#.
  ASP.NET allows you to use any server controls in GridView. In this article I’ll show you how
to use DropDownList control in GridView.
          DropDownList can be used to select only one item at a time item. It’s very easy to use DropDownList control
in GridView. We need to use OnRowDataBound event to bind DropDownList.
Description: http://www.dotnetfox.com/Document/1117/0photo3.jpg

Table Design (Employee Details):
Column Name
Data Type
empid
varchar(50)
name
varchar(100)
designation
varchar(50)
city
varchar(50)
country
varchar(50)
Create table script:
CREATE TABLE [dbo].[EmployeeDetails](
          [empid] [varchar](50) NULL,
          [name] [varchar](100) NULL,
          [designation] [varchar](100) NULL,
          [city] [varchar](50) NULL,
          [country] [varchar](50) NULL
) ON [PRIMARY]

Table Design (Designation):
Column Name
Data Type
id
int
designation
varchar(100)
Create table script:
CREATE TABLE [dbo].[Designation](
          [id] [int] NULL,
          [designation] [varchar](50) NULL
) ON [PRIMARY]

Designer Source Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="gvEmployeeDetails" runat="server" Width="100%"
 AutoGenerateColumns="false"
            ShowFooter="true" OnRowCommand="gvEmployeeDetails_RowCommand" 
OnRowDataBound="gvEmployeeDetails_OnRowDataBound">
            <Columns>
                <asp:TemplateField HeaderText="Employee ID">
                    <ItemTemplate>
                        <asp:Label ID="lblEmpID" runat="server" Text=
'<%#DataBinder.Eval(Container.DataItem, "empid") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtAddEmpID" runat="server"></asp:TextBox>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Name">
                    <ItemTemplate>
                        <asp:Label ID="lblName" runat="server" Text=
'<%#DataBinder.Eval(Container.DataItem, "name") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtAddName" runat="server"></asp:TextBox>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Designation">
                    <ItemTemplate>
                        <asp:Label ID="lblDesignation" runat="server" 
Text='<%#DataBinder.Eval(Container.DataItem, "designation") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:DropDownList ID="ddlDesignation" runat="server">
                        </asp:DropDownList>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="City">
                    <ItemTemplate>
                        <asp:Label ID="lblCity" runat="server" 
Text='<%#DataBinder.Eval(Container.DataItem, "city") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtAddCity" runat="server"></asp:TextBox>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Country">
                    <ItemTemplate>
                        <asp:Label ID="lblCountry" runat="server"
 Text='<%#DataBinder.Eval(Container.DataItem, "country") %>'></asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                        <asp:TextBox ID="txtAddCountry" runat="server"></asp:TextBox>
                    </FooterTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Action">
                    <FooterTemplate>
                        <asp:LinkButton ID="lbtnAdd" runat="server" 
CommandName="ADD" Text="Add" Width="100px"></asp:LinkButton>
                    </FooterTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
    </form>
</body>
</html> 
Code Behind:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
   SqlConnection conn = new SqlConnection("Data Source=SPIDER;
Initial Catalog=Demo;Integrated Security=True");
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindData();
        }
    }
     protected void BindData()
    {
        DataSet ds = new DataSet();    
        conn.Open();
        string cmdstr = "Select * from EmployeeDetails";
        SqlCommand cmd = new SqlCommand(cmdstr, conn);
        SqlDataAdapter adp = new SqlDataAdapter(cmd);
        adp.Fill(ds);
        cmd.ExecuteNonQuery();
        conn.Close();
        gvEmployeeDetails.DataSource = ds;
        gvEmployeeDetails.DataBind();       
    }

    protected void gvEmployeeDetails_RowCommand(object sender,
 GridViewCommandEventArgs e)
    {
        if (e.CommandName.Equals("ADD"))
        {
            TextBox txtAddEmpID = (TextBox)gvEmployeeDetails.FooterRow.
FindControl("txtAddEmpID");
            TextBox txtAddName = (TextBox)gvEmployeeDetails.FooterRow.
FindControl("txtAddName");
            DropDownList ddlDesignation = (DropDownList)gvEmployeeDetails.
FooterRow.FindControl("ddlDesignation");
            TextBox txtAddCity = (TextBox)gvEmployeeDetails.FooterRow.
FindControl("txtAddCity");
            TextBox txtAddCountry = (TextBox)gvEmployeeDetails.FooterRow.
FindControl("txtAddCountry");
          
            conn.Open();
            string cmdstr = "insert into EmployeeDetails(empid,name,designation,city,country)
values(@empid,@name,@designation,@city,@country)";
            SqlCommand cmd = new SqlCommand(cmdstr, conn);
            cmd.Parameters.AddWithValue("@empid", txtAddEmpID.Text);
            cmd.Parameters.AddWithValue("@name", txtAddName.Text);
            cmd.Parameters.AddWithValue("@designation",
ddlDesignation.SelectedItem.ToString());
            cmd.Parameters.AddWithValue("@city", txtAddCity.Text);
            cmd.Parameters.AddWithValue("@country", txtAddCountry.Text);
            cmd.ExecuteNonQuery();
            conn.Close();
            BindData();
        }     
    }   
    protected void gvEmployeeDetails_OnRowDataBound(object sender,
 GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Footer)
        {
            DropDownList ddlDesignation = (DropDownList)e.Row.FindControl("ddlDesignation");
            DataSet ds = new DataSet();
            conn.Open();
            string cmdstr = "Select * from Designation";
            SqlCommand cmd = new SqlCommand(cmdstr, conn);
            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            adp.Fill(ds);           
            ddlDesignation.DataSource = ds.Tables[0];
            ddlDesignation.DataTextField = "designation";
            ddlDesignation.DataValueField = "id";
            ddlDesignation.DataBind();
            ddlDesignation.Items.Insert(0, new ListItem("--Select--""0"));
            conn.Close();
        } 
    }
}