Esempio n. 1
0
        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));
        }