public HttpResponse AddUserToTrip(string tripId) { var trip = this.data.Trips.Where(t => t.Id == tripId).FirstOrDefault(); var user = this.data.Users.Where(x => x.Id == this.User.Id).FirstOrDefault(); var isAlreadyJoined = this.data.UserTrips.Any(x => x.TripId == tripId && x.UserId == this.User.Id); if (isAlreadyJoined) { return(Redirect($"/Trips/Details?tripId={tripId}")); } if (trip.Seats == 0) { return(Redirect($"/Trips/Details?tripId={tripId}")); } trip.Seats -= 1; var userTrip = new Data.Models.UserTrip { Trip = trip, User = user }; this.data.UserTrips.Add(userTrip); this.data.SaveChanges(); return(this.Redirect("/Trips/All")); }
public HttpResponse AddUserToTrip(string tripId) { var tripsId = data.Trips.Select(t => t.Id).ToList(); if (!tripId.Contains(tripId)) { return(BadRequest()); } var trip = data.Trips .Include(t => t.UserTrips) .Where(t => t.Id == tripId) .FirstOrDefault(); if (trip.Seats > 0) { if (!trip.UserTrips.Select(u => u.UserId).Contains(User.Id)) { var userTrip = new Data.Models.UserTrip { UserId = User.Id, TripId = tripId }; data.UsersTrips.Add(userTrip); data.SaveChanges(); trip.Seats--; data.SaveChanges(); } else { //return Error("You are already booked for this trip."); return(Redirect($"/Trips/Details?tripId={tripId}")); } } return(Redirect("/Trips/All")); }