Ejemplo n.º 1
0
        private void AcceptAllWaitsForVehicle_WaitMaxRequest(int id)
        {
            var reqs = Uow.Repository <TConnectRequest>().Query().Get().Where(r => r.TConnectedVehicleId.Equals(id)).OrderByDescending(r => r.RequestedHoldMinutes).ToList();

            foreach (TConnectRequest req in reqs)
            {
                req.TConnectStatusId = (int)TConnectStatuses.Accepted;
                Uow.Repository <TConnectRequest>().Update(req);
            }


            TConnectedVehicle vehicle = Uow.Repository <TConnectedVehicle>().Find(id);

            if (reqs.Count > 0)
            {
                //Since we are accepting all waits (on the assumption that excessive wait times should not be permitted
                //via the window calculation in SaveTrip), then we can use the greated requestedHoldMinutes as the current accepted hold.
                vehicle.CurrentAcceptedHoldMinutes = reqs.First().RequestedHoldMinutes;
            }
            Uow.Repository <TConnectedVehicle>().Update(vehicle);
            Uow.Save();
        }
Ejemplo n.º 2
0
        public void MonitorTConnect_UpdateExistingTConnect_AutoAccept_Passes()
        {
            using (IDbContext idtoFakeContext = new IDTOFakeContext())
                using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext))
                {
                    List <Step> steps;
                    TConnect    mt;
                    Trip        trip;
                    SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt);
                    DateTime newEta = ((DateTime)mt.StartWindow).AddMinutes(5);

                    //Add a TconnectRequest so the path follows the update path
                    TConnectRequest newRequest = new TConnectRequest();
                    newRequest.TConnectedVehicleId  = 2;
                    newRequest.TConnectId           = mt.Id;
                    newRequest.EstimatedTimeArrival = newEta;
                    newRequest.RequestedHoldMinutes = 2;
                    newRequest.TConnectStatusId     = (int)TConnectStatuses.New;
                    unitOfWork.Repository <TConnectRequest>().Insert(newRequest);
                    unitOfWork.Save();

                    //Add another tconnectrequest for another traveler for the same vehicle
                    TConnectedVehicle v = new TConnectedVehicle();
                    v.Id = 2;
                    v.CurrentAcceptedHoldMinutes = 7;
                    unitOfWork.Repository <TConnectedVehicle>().Insert(v);
                    unitOfWork.Save();

                    MonitorTConnect(unitOfWork, mt, newEta);

                    var             treq    = unitOfWork.Repository <TConnectRequest>().Query().Get();
                    TConnectRequest request = treq.Where(t => t.TConnectId.Equals(mt.Id)).First();
                    Assert.AreEqual(5, request.RequestedHoldMinutes, "Existing TConnectRequest should have been upated to 3 minutes");
                    Assert.AreEqual((int)TConnectStatuses.Accepted, request.TConnectStatusId, "Status should be Accepted");
                }
        }
Ejemplo n.º 3
0
        private void RejectAllWaitsForVehicle(int id)
        {
            var reqs = Uow.Repository <TConnectRequest>().Query().Get().Include(r => r.TConnect).Include(r => r.TConnect.OutboundStep).Where(r => r.TConnectedVehicleId.Equals(id)).ToList();

            foreach (TConnectRequest req in reqs)
            {
                req.TConnectStatusId = (int)TConnectStatuses.Rejected;
                Uow.Repository <TConnectRequest>().Update(req);

                //When TConnectRequests are rejected, we also stop monitoring them,
                //because if they made up time later, we don't want them to pop up a second time
                //to be rejected again.
                req.TConnect.TConnectStatusId = (int)TConnectStatuses.Done;
                Uow.Repository <TConnect>().Update(req.TConnect);
                Uow.Repository <TripEvent>().Insert(new TripEvent(req.TConnect.OutboundStep.TripId, "T-Connect Request rejected by dispatcher"));
            }


            TConnectedVehicle vehicle = Uow.Repository <TConnectedVehicle>().Find(id);

            vehicle.CurrentAcceptedHoldMinutes = 0;
            Uow.Repository <TConnectedVehicle>().Update(vehicle);
            Uow.Save();
        }