public IHttpActionResult UpdateTrip(int id, AddTripBindingModel model)
        {
            var trip = this.Data.Trips.Find(id);

            if (trip == null)
            {
                return this.BadRequest(string.Format("There is no trip with Id {0}", id));
            }

            var loggedUserId = this.User.Identity.GetUserId();

            if (trip.DriverId != loggedUserId)
            {
                return this.Unauthorized();
            }

            if (model == null)
            {
                return this.BadRequest("Model cannot be null (no data in request)");
            }

            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            trip.ArrivalCityId = model.ArrivalCityId;
            trip.DepartureCityId = model.DepartureCityId;
            trip.DepartureDate = model.DepartureDate;
            trip.AvailableSeats = model.AvaibleSeats;
            trip.Description = model.Description;
            trip.Title = model.Title;

            this.Data.SaveChanges();

            var data = this.Data.Trips
                .All().Where(t => t.Id == trip.Id)
                .Select(TripViewModel.Create)
                .FirstOrDefault();

            return this.Ok(data);
        }
        public IHttpActionResult PostTrip(AddTripBindingModel model)
        {
            if (model == null)
            {
                return this.BadRequest("Model cannot be null (no data in request)");
            }

            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var departureCity = this.Data.Cities.Find(model.DepartureCityId);
            var arrivalCity = this.Data.Cities.Find(model.ArrivalCityId);

            if (departureCity == null)
            {
                return this.BadRequest("Departure city does not exist!");
            }

            if (arrivalCity == null)
            {
                return this.BadRequest("Arrival city does not exist!");
            }

            var trip = new Trip()
            {
                Title = model.Title,
                ArrivalCityId = model.ArrivalCityId,
                Description = model.Description,
                AvailableSeats = model.AvaibleSeats,
                DepartureCityId = model.DepartureCityId,
                DepartureDate = model.DepartureDate,
                DriverId = this.User.Identity.GetUserId()
            };

            this.Data.Trips.Add(trip);
            this.Data.SaveChanges();

            var data = this.Data.Trips
                .All().Where(t => t.Id == trip.Id)
                .Select(TripViewModel.Create)
                .FirstOrDefault();

            return this.Ok(data);
        }