public async Task <IActionResult> Index() { AircraftIndexModel viewModel = new AircraftIndexModel { AircraftSearches = new List <AircraftSearch>(), Notification = new AlertNotification() }; return(View(viewModel)); }
public async Task <IActionResult> Search(AircraftRequestModel aircraftRequestModel) { List <AircraftType> matchedAircraftTypes = string.IsNullOrEmpty(aircraftRequestModel.AircraftType) ? await _context.AircraftTypes.ToListAsync() : await _context.AircraftTypes.Where(act => act.Name.Contains(aircraftRequestModel.AircraftType)).ToListAsync(); List <Guid> ListAircraftTypeId = matchedAircraftTypes.Select(act => act.Id).ToList(); List <Aircraft> matchedAircraft = await _context.Aircrafts.Where(ac => ListAircraftTypeId.Contains(ac.AircraftTypeId)).ToListAsync(); List <Guid> ListAirlineId = matchedAircraft.Select(ac => ac.AirlineId).ToList(); List <Airline> matchedAirlines = string.IsNullOrEmpty(aircraftRequestModel.Airline) ? await _context.Airlines.Where(al => ListAirlineId.Contains(al.Id)).ToListAsync() : await _context.Airlines.Where(al => al.Name.Contains(aircraftRequestModel.Airline)).ToListAsync(); List <AircraftSearch> aircraftSearches = new List <AircraftSearch>(); foreach (var aircraft in matchedAircraft) { AircraftType aircraftTypeFound = matchedAircraftTypes.FirstOrDefault(act => act.Id == aircraft.AircraftTypeId); Airline airlineFound = matchedAirlines.FirstOrDefault(al => al.Id == aircraft.AirlineId); if (aircraftTypeFound != null && airlineFound != null) { AircraftSearch newAircraftSearch = new AircraftSearch { AircraftType = aircraftTypeFound, CurrentAirline = airlineFound }; aircraftSearches.Add(newAircraftSearch); } } AircraftIndexModel viewModel = new AircraftIndexModel() { AircraftSearches = aircraftSearches, Notification = new AlertNotification() }; return(View("Index", viewModel)); }