public ValidationResponse Validate(FlightServiceSearchRequest request) { var errors = new List <string>(); if (request == null) { errors.Add("Request cannot be null."); return(new ValidationResponse(false).Set(errors)); } if (string.IsNullOrWhiteSpace(request.To)) { errors.Add("To cannot be null or empty."); } if (string.IsNullOrWhiteSpace(request.From)) { errors.Add("From cannot be null or empty."); } if (!DateTime.TryParse(request.DepartureDate, out _)) { errors.Add("Date/Time is not valid."); } if (string.Equals(request.To, request.From, StringComparison.OrdinalIgnoreCase)) { errors.Add("Origin/Destination airports cannot be same."); } return(errors.Count > 0 ? new ValidationResponse(false).Set(errors) : new ValidationResponse(true)); }
public async Task <FlightServiceSearchResponse> SearchFlights(FlightServiceSearchRequest request) { var validationResponse = _validationService.ValidateFlightSearchRequest(request); if (validationResponse.Succeeded) { var list = (await Query().Where(f => f.From.AirportCode == request.From && f.To.AirportCode == request.To && f.DepartureTime.Contains(request.DepartureDate)).ToListAsync()) .DistinctBy(f => new { f.To, f.ArrivalTime, f.Carrier, f.DepartureTime, f.From }).ToList(); return(new FlightServiceSearchResponse(true).Set(list)); } return(new FlightServiceSearchResponse(false).Set(validationResponse.Errors)); }
public ValidationResponse ValidateFlightSearchRequest(FlightServiceSearchRequest req) { return(_searchRequestValidator.Validate(req)); }