public async Task <IActionResult> BookTicket(Trip model) { if (ModelState.IsValid) { if (model.DestinationFromId == model.DestinationToId) { ModelState.AddModelError("DestinationToId", ModelErrors.DestinationError); ViewData["destinations"] = await _busDestinationService.GetDestinationsAsync(); return(View()); } } try { IEnumerable <Trip> trips = await _tripService.FilterTrips(model.DestinationFromId, model.DestinationToId, model.Departure, model.FreeSeatCount); if (trips.ToList().Count == 0) { ViewData["destinations"] = await _busDestinationService.GetDestinationsAsync(); ViewData["message"] = Alerts.NO_MATCHING_TRIPS; return(View(nameof(BookTicket))); } else { model.DestinationFrom = trips.FirstOrDefault().DestinationFrom; model.DestinationTo = trips.FirstOrDefault().DestinationTo; ViewData["trips"] = trips; return(View("SelectTrip", model)); } } catch (Exception) { return(Redirect($"/Error/{500}")); } }