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