public ApiResponse ScheduleFlight(SchduleFlightRequest request) { if (request.PilotId == 0) { return(new ApiResponse(Errors.PilotId_InValid)); } if (!Helper.IsDepartureAndReturnDateValid(request.DepDateTime, request.ReturnDateTime)) { return(new ApiResponse(Errors.DepatureOrReturn_DateTime_InValid)); } var pilotList = _repository.GetPilotList(); if (pilotList == null || pilotList.Crew.Count == 0) { return(new ApiResponse(Errors.Database_error)); } var flightList = _repository.GetFlightList(); if (flightList == null || flightList.Flight.Count == 0) { return(new ApiResponse(Errors.Database_error)); } var day = Helper.GetDayOfWeek(request.DepDateTime); var pilotMatched = pilotList.Crew.Any(x => x.ID == request.PilotId && x.WorkDays.Any(y => y.Contains(day))); if (!pilotMatched) { return(new ApiResponse(Errors.Pilot_Not_Found)); } var flightExist = flightList.Flight.Any(x => x.PilotId == request.PilotId && x.DepDateTime.Equals(request.DepDateTime) && x.ReturnDateTime.Equals(request.ReturnDateTime)); if (flightExist) { return(new ApiResponse(Errors.Pilot_Schduled_Already)); } flightList.Flight.Add(new Flight { PilotId = request.PilotId, DepDateTime = request.DepDateTime, ReturnDateTime = request.ReturnDateTime }); _repository.ScheduleFlight(flightList); var response = new ScheduleFlightResponse() { PilotId = request.PilotId, DepDateTime = request.DepDateTime, ReturnDateTime = request.ReturnDateTime }; return(new ApiResponse() { Result = response }); }
public async Task <IActionResult> SchduleFlight([FromBody] SchduleFlightRequest request) { var res = _services.ScheduleFlight(request); return(Ok(res)); }