void AddPassenger(FEPassenger passengerToAdd, int tripId) { var passenger = new Passenger() { TripId = tripId, UserId = passengerToAdd.UserId }; appDbContext.Passengers.Add(passenger); }
List <FEPassenger> preparePassengers(List <Passenger> passengers, List <User> users) { List <FEPassenger> passengersFE = new List <FEPassenger>(); foreach (Passenger pass in passengers) { FEPassenger passToAdd = new FEPassenger { UserId = pass.UserId, TripId = pass.TripId, FullName = users.SingleOrDefault(user => user.UserId == pass.UserId).FullName }; passengersFE.Add(passToAdd); } return(passengersFE); }
public async Task <FETrip> Update(FETrip newTrip, UpdateTripRequest updateTripRequest) { var passengers = GetListOfPassengers(newTrip.ID.Value); if (updateTripRequest != null) { if (updateTripRequest.PassengerId != null) { if (updateTripRequest.IsLeaving.Value) { var passengerToRemove = newTrip.Passengers.FirstOrDefault(passenger => passenger.UserId == updateTripRequest.PassengerId); newTrip.Passengers.Remove(passengerToRemove); RemovePassenger(passengerToRemove); } else { if (!passengers.Exists(p => p.UserId == updateTripRequest.PassengerId)) { if (newTrip.DriverID == updateTripRequest.PassengerId.Value) { throw new InvalidOperationException(ErrorMessages.JoinOwnTrip); } if (newTrip.LeavingDate < DateTime.Now) { throw new InvalidOperationException(ErrorMessages.JoinPastTrip); } if (newTrip.MaxSeats <= passengers.Count) { throw new InvalidOperationException(ErrorMessages.NoAvailableSeatsLeft); } FEPassenger passengerToAdd = new FEPassenger { TripId = (int)newTrip.ID, UserId = (int)updateTripRequest.PassengerId, FullName = appDbContext.Users.FirstOrDefault(user => user.UserId == updateTripRequest.PassengerId).FullName }; newTrip.Passengers.Add(passengerToAdd); AddPassenger(passengerToAdd, newTrip.ID.Value); } } } } if (newTrip.ID != null) { int index = (int)newTrip.ID; Trip oldTrip = (from t in appDbContext.Trips where t.TripId == index select t).SingleOrDefault(); Trip updatedTrip = new Trip(); updatedTrip = oldTrip; if (oldTrip != null) { UpdateTrip(ref updatedTrip, newTrip); appDbContext.Entry(oldTrip).State = EntityState.Detached; appDbContext.Entry(updatedTrip).State = EntityState.Modified; await appDbContext.SaveChangesAsync(); } else { newTrip = await Create(newTrip); } } else { newTrip = await Create(newTrip); } return(newTrip); }
void RemovePassenger(FEPassenger passengerToRemove) { var passenger = appDbContext.Passengers.FirstOrDefault(pass => pass.UserId == passengerToRemove.UserId); appDbContext.Passengers.Remove(passenger); }