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));
        }
示例#3
0
 public ValidationResponse ValidateFlightSearchRequest(FlightServiceSearchRequest req)
 {
     return(_searchRequestValidator.Validate(req));
 }