public async Task <bool> ConfirmPilotSchedule(PilotScheduleConfirmationRequest request) { var reservationExpiry = _timeProvider.UtcNow().AddMinutes(-10); var pilotSchedules = await _fileService.GetPilotSchedulesForDay(request.DepartureDateTime.Date); var schedule = pilotSchedules.FirstOrDefault(p => !p.IsConfirmed && p.ReservationKey == request.ReservationKey && p.PilotId == request.PilotId); if (schedule == null || schedule.ReservationTime < reservationExpiry) { return(false); } schedule.IsConfirmed = true; await _fileService.UpdatePilotSchedule(schedule); return(true); }
public async Task ConfirmPilot_HasExpiredReservation_ReturnsFalse() { SetDefaultNow(); var reservationKey = "test"; var pilots = new[] { new PilotWorkSchedule() { Base = Base.Berlin, PilotId = Pilot1, WorkDays = AllDays } }; var schedules = new[] { new PilotScheduleInfo() { PilotId = Pilot1, DepartureDateTime = TwoPm, ReturnDateTime = FourPm, IsConfirmed = false, ReservationTime = ExpiredDate, ReservationKey = reservationKey } }; _fileServiceMock.Setup(x => x.GetPilotWorkSchedules()).ReturnsAsync(pilots); _fileServiceMock.Setup(x => x.GetPilotSchedulesForDay(TwoPm.Date)).ReturnsAsync(schedules); var request = new PilotScheduleConfirmationRequest() { Location = Base.Berlin, DepartureDateTime = TwoPm, ReturnDateTime = FourPm, PilotId = Pilot1, ReservationKey = reservationKey }; var result = await _service.ConfirmPilotSchedule(request); Assert.False(result); }
public async Task <ActionResult <PilotScheduleConfirmationResult> > Confirm(PilotScheduleConfirmationRequest request) { bool result = await _scheduleService.ConfirmPilotSchedule(request); return(new PilotScheduleConfirmationResult(result)); }