public IHttpActionResult SingleRideDetail(int rid)
        {
            Ride   r = new RideDAC().SelectById(rid);
            String s = "";

            return(Ok(r));
        }
        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 SendTextMessageToPassenger(int pid, int rid, string message)
        {
            Ride  rtemp     = new RideDAC().SelectById(rid);
            Users driver    = new UsersDAC().SelectById(rtemp.UserId);
            Users passenger = new UsersDAC().SelectById(pid);

            NotifyTextMessageToPassenger(passenger.Token, driver.UserName, message, "TextMessageToPassenger");
            return(Ok());
        }
        public IHttpActionResult SelectAllRides()
        {
            Ride r = new Ride();

            r.RideStatusId = 1;
            List <Ride> rides = new RideDAC().SelectAllRides(r);

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

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

            if (rides != null)
            {
                return(Ok(rides));
            }
            return(NotFound());
        }
        public IHttpActionResult KickoutPassenger(int rid, int uid)
        {
            RideRequest rr = new RideRequest();

            rr.PassengerId   = uid;
            rr.RideId        = rid;
            rr.RequestStatus = "2";
            new RideRequestDAC().DeleteRideRequest(rr);
            Ride rtemp = new RideDAC().SelectById(rid);

            rtemp.AvailableSeats += 1;
            new RideDAC().RideUpdate(rtemp);
            Users  driver    = new UsersDAC().SelectById(rtemp.UserId);
            Users  passenger = new UsersDAC().SelectById(uid);
            string message   = driver.UserName + " removed you from ride " + rtemp.Source + " to " + rtemp.Destination + ".";

            NotifyPassengerRideKickoutStatus(passenger.Token, message, "DriverRemovedPassenger");
            return(Ok());
        }
        public IHttpActionResult LeaveRide(int uid, int rid)
        {
            RideRequest rr = new RideRequest();

            rr.PassengerId   = uid;
            rr.RideId        = rid;
            rr.RequestStatus = "2";
            new RideRequestDAC().DeleteRideRequest(rr);
            Ride rtemp = new RideDAC().SelectById(rid);

            rtemp.AvailableSeats += 1;
            new RideDAC().RideUpdate(rtemp);
            Users  driver    = new UsersDAC().SelectById(rtemp.UserId);
            Users  passenger = new UsersDAC().SelectById(uid);
            String message   = passenger.UserName + " left your ride from " + rtemp.Source + " to " + rtemp.Destination + " which you posted earlier! ";

            NotifyDriverPassengerLeftStatus(driver.Token, message, "PassengerLeft");
            return(Ok());
        }
        public IHttpActionResult RideRequestNotify(RideRequest rr)
        {
            RideRequest rrquest = new RideRequest();

            rrquest.PassengerId    = rr.PassengerId;
            rrquest.RideId         = rr.RideId;
            rrquest.PickupLocation = rr.PickupLocation;
            rrquest.Destination    = rr.Destination;
            rrquest.TotalAmount    = rr.TotalAmount;
            rrquest.RequestStatus  = "1";
            new RideRequestDAC().Insert(rrquest);
            Ride   r         = new RideDAC().SelectById(rr.RideId);
            Users  u         = new UsersDAC().SelectById(r.UserId);
            Users  passenger = new UsersDAC().SelectById(rr.PassengerId);
            string message   = "" + passenger.UserName + " requested to join your ride.";
            String res       = SendNotificationFromFirebaseCloud(u.Token, passenger, rrquest, r, message, "Driver");

            return(Ok());
        }
        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 AcceptRejectRideRequestNotify(int uid, int rid, string action)
        {
            if (action == "AcceptRequest")
            {
                RideRequest rRequest = new RideRequest();
                rRequest.PassengerId   = uid;
                rRequest.RideId        = rid;
                rRequest.RequestStatus = "2";
                new RideRequestDAC().RideRequestStatusUpdate(rRequest);
                Ride rtemp = new RideDAC().SelectById(rid);
                rtemp.AvailableSeats -= 1;
                new RideDAC().RideUpdate(rtemp);
                //new RideDAC().RideStatusUpdate(rtemp);
                Ride        r         = new RideDAC().SelectById(rid);
                Users       u         = new UsersDAC().SelectById(r.UserId);
                Users       passenger = new UsersDAC().SelectById(uid);
                string      message   = "" + u.UserName + " accepted your ride joining request.";
                RideRequest rr        = new RideRequest();
                String      res       = SendNotificationFromFirebaseCloud(passenger.Token, u, rr, r, message, "PassengerAccepted");
                return(Ok());
            }
            else if (action == "RejectRequest")
            {
                RideRequest rRequest = new RideRequest();
                rRequest.PassengerId   = uid;
                rRequest.RideId        = rid;
                rRequest.RequestStatus = "3";
                new RideRequestDAC().RideRequestStatusUpdate(rRequest);
                Ride        r         = new RideDAC().SelectById(rid);
                Users       u         = new UsersDAC().SelectById(r.UserId);
                Users       passenger = new UsersDAC().SelectById(uid);
                string      message   = "" + u.UserName + " rejected your ride joining request.";
                RideRequest rr        = new RideRequest();
                String      res       = SendNotificationFromFirebaseCloud(passenger.Token, u, rr, r, message, "PassengerRejected");
                return(Ok());
            }

            return(null);
        }
        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());
            }
        }