public ActionResult Create()
        {
            TripInputVIewModel viewModel = new TripInputVIewModel()
            {
                TownsSelectList = this.TownProvider.GetCachedTowns(),
                AvailableSeatsSelectList = this.TripProvider.GetAvailableSeatsSelectList(),
                AddressPickUpSelectList = this.TripProvider.GetAddressPickUpSelectList()
            };

            return this.View(viewModel);
        }
        public ActionResult Index(TripInputVIewModel trip)
        {
            if (trip.FromId == trip.ToId)
            {
                this.ModelState.AddModelError("From", "From and To towns should be different");
            }

            if (!this.ModelState.IsValid)
            {
                this.TempData[WebApplicationConstants.TempDataMessageKey] = "From and To towns should be different";
                return this.RedirectToAction("Create");
            }

            string currentUserId = this.User.Identity.GetUserId();

            Trip serviceResponceTrip = this.TripServices.Create(
                    trip.FromId,
                    trip.ToId,
                    trip.DateOfLeaving,
                    trip.AvailableSeats,
                    trip.PlaceOfLeaving,
                    trip.PickUpFromAddress,
                    trip.Description,
                    trip.ETA,
                    trip.Price,
                    currentUserId);

            this.NotificationServices.Create(
                serviceResponceTrip.Id,
                currentUserId,
                currentUserId,
                NotificationConstants.CloseTripDriverRequestTitle,
                string.Format(NotificationConstants.CloseTripDriverRequestFormat, serviceResponceTrip.FromId, serviceResponceTrip.ToId, serviceResponceTrip.DateOfLeaving.ToString("dd/MM/yyyy HH:mm")),
                NotificationKey.FinishTripDriverRequest,
                serviceResponceTrip.DateOfLeaving.AddDays(NotificationConstants.CloseTripDriverRequestAvaialableDaysAfterTripFinished),
                serviceResponceTrip.ETA);

            return this.RedirectToRoute("TripDetails", new { id = serviceResponceTrip.Id });
        }