public IHttpActionResult RideEnded(int rid)
        {
            Ride r = new Ride();

            r.Id           = rid;
            r.RideStatusId = 3;
            new RideDAC().RideStatusUpdate(r);
            Ride        rtemp  = new RideDAC().SelectById(rid);
            Users       driver = new UsersDAC().SelectById(rtemp.UserId);
            RideRequest rr     = new RideRequest();

            rr.RideId        = rid;
            rr.RequestStatus = "2";
            List <RideRequest> rrlist = new RideRequestDAC().SelectALLAcceptedRequestByRideId(rr);

            if (rrlist != null)
            {
                foreach (RideRequest i in rrlist)
                {
                    Users  passenger = new UsersDAC().SelectById(i.PassengerId);
                    string message   = "Rate your ride with " + driver.UserName + " from " + rtemp.Source + " to " + rtemp.Destination + ".";
                    NotifyRateDriverToJoinedPassengers(passenger.Token, driver, rtemp, message, "RateDriver");
                }
            }
            return(Ok());
        }
        public IHttpActionResult CancelRide(int rid)
        {
            Ride r = new Ride();

            r.Id           = rid;
            r.RideStatusId = 4;
            new RideDAC().RideStatusUpdate(r);
            Ride        ride   = new RideDAC().SelectById(rid);
            Users       driver = new UsersDAC().SelectById(ride.UserId);
            RideRequest rr     = new RideRequest();

            rr.RideId        = rid;
            rr.RequestStatus = "2";
            List <RideRequest> rrlist = new RideRequestDAC().SelectALLAcceptedRequestByRideId(rr);

            if (rrlist != null)
            {
                foreach (RideRequest i in rrlist)
                {
                    Users  u       = new UsersDAC().SelectById(i.PassengerId);
                    String message = driver.UserName + " Cancelled the ride from " + ride.Source + " to " + ride.Destination + " which you joined! ";
                    NotifyCancelledRideStatus(u.Token, message, "JoinedPassengers");
                }
            }
            new RideRequestDAC().DeleteAllRideRequestsByRideId(rid);
            return(Ok());
        }
        public IHttpActionResult JoinedRiders(int rid)
        {
            RideRequest rr = new RideRequest();

            rr.RideId        = rid;
            rr.RequestStatus = "2";
            List <RideRequest>       rrlist = new RideRequestDAC().SelectALLAcceptedRequestByRideId(rr);
            List <JoinedRidersModel> jrlist = new List <JoinedRidersModel>();

            if (rrlist != null)
            {
                foreach (RideRequest m in rrlist)
                {
                    JoinedRidersModel jrmodel = new JoinedRidersModel();
                    Users             utemp   = new UsersDAC().SelectById(m.PassengerId);
                    jrmodel.Id             = m.Id;
                    jrmodel.PassengerId    = m.PassengerId;
                    jrmodel.PickupLocation = m.PickupLocation;
                    jrmodel.Destination    = m.Destination;
                    jrmodel.RideId         = m.RideId;
                    jrmodel.RequestStatus  = m.RequestStatus;
                    jrmodel.TotalAmount    = m.TotalAmount;
                    jrmodel.UserName       = utemp.UserName;
                    jrlist.Add(jrmodel);
                }
                jrlist.TrimExcess();
                return(Ok(jrlist));
            }
            else
            {
                return(NotFound());
            }
        }
        public IHttpActionResult RideRequestExist(int uid, int rid)
        {
            RideRequest rr = new RideRequestDAC().SelectRequestByRideIdAndPassengerId(uid, rid);

            if (rr != null)
            {
                return(Ok());
            }
            return(NotFound());
        }
        public IHttpActionResult SelectRideRequests(int uid)
        {
            Ride r = new Ride();

            r.RideStatusId = 1;
            r.UserId       = uid;
            List <Ride>              rides     = new RideDAC().SelectAllRidesByUserId(r);
            List <RideRequest>       rtemplist = new List <RideRequest>();
            List <JoinedRidersModel> jrlist    = new List <JoinedRidersModel>();

            if (rides != null)
            {
                foreach (Ride ride in rides)
                {
                    rtemplist = new RideRequestDAC().SelectAllPendingRideRequestByRideId(ride.Id);
                    if (rtemplist != null)
                    {
                        foreach (RideRequest m in rtemplist)
                        {
                            JoinedRidersModel jrmodel = new JoinedRidersModel();
                            Users             utemp   = new UsersDAC().SelectById(m.PassengerId);
                            jrmodel.Id             = m.Id;
                            jrmodel.PassengerId    = m.PassengerId;
                            jrmodel.PickupLocation = m.PickupLocation;
                            jrmodel.Destination    = m.Destination;
                            jrmodel.RideId         = m.RideId;
                            jrmodel.RequestStatus  = m.RequestStatus;
                            jrmodel.TotalAmount    = m.TotalAmount;
                            jrmodel.UserName       = utemp.UserName;
                            jrlist.Add(jrmodel);
                        }
                        rtemplist.Clear();
                    }
                }
                jrlist.TrimExcess();
                return(Ok(jrlist));
            }
            return(NotFound());
        }
        public IHttpActionResult SelectJoinedRides(int uid)
        {
            RideRequest rr = new RideRequest();

            rr.PassengerId   = uid;
            rr.RequestStatus = "2";
            List <RideRequest> rrlist = new RideRequestDAC().SelectALLAcceptedRequestByPassengerId(rr);
            List <Ride>        rides  = new List <Ride>();

            if (rrlist != null)
            {
                foreach (RideRequest m in rrlist)
                {
                    Ride rtemp = new RideDAC().SelectById(m.RideId);
                    rides.Add(rtemp);
                }
                rides.TrimExcess();
                return(Ok(rides));
            }
            else
            {
                return(NotFound());
            }
        }