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}"));
            }
        }