public IHttpActionResult Post(PassengerJourneyViewModel passengerJourney) { if (_adapter.AddPassenger(passengerJourney)) return Ok(); else return BadRequest("There are no more spots available"); }
//(AllTrips VIEW: Shown only for passengers and drivers who want to be passengers in another trip) ADD A PASSENGER TO A JOURNEY //(WHEN USER CLICKS ON 'REQUEST SPOT') public bool AddPassenger(PassengerJourneyViewModel passengerJourney) { using (ApplicationDbContext db = new ApplicationDbContext()) { if ((db.DriverJourneys.FirstOrDefault(x => x.Id == passengerJourney.TripId).SeatsAvailable) <= 0) return false; else db.DriverJourneys.FirstOrDefault(x => x.Id == passengerJourney.TripId).SeatsAvailable -= passengerJourney.NumSeats; if (db.PassengerJourneys.Any(x => x.User.UserName == passengerJourney.Username && x.DriverJourneyId == passengerJourney.TripId)) { PassengerJourney pj = db.PassengerJourneys.FirstOrDefault(x => x.User.UserName == passengerJourney.Username && x.DriverJourneyId == passengerJourney.TripId); pj.NumSeats += passengerJourney.NumSeats; pj.IsConfirmed = false; db.SaveChanges(); return true; } db.PassengerJourneys.AddOrUpdate(x => x.Id, new PassengerJourney() { UserId = db.Users.FirstOrDefault(x => x.UserName == passengerJourney.Username).Id, DriverJourneyId = passengerJourney.TripId, IsConfirmed = false, NumSeats = passengerJourney.NumSeats }); db.SaveChanges(); return true; } }
//(UserTrips VIEW: Shown only for drivers) Accept a request for a spot in a car from a passenger public void AcceptRequest(PassengerJourneyViewModel trip) { using (ApplicationDbContext db = new ApplicationDbContext()) { PassengerJourney pj = db.PassengerJourneys.FirstOrDefault(x => x.DriverJourneyId == trip.TripId && x.User.UserName == trip.Username); pj.IsConfirmed = true; db.SaveChanges(); } }
public IHttpActionResult Put(PassengerJourneyViewModel trip) { _adapter.AcceptRequest(trip); return Ok(); }
public IHttpActionResult Post(PassengerJourneyViewModel trip) { _adapter.CancelRequest(trip); return Ok(); }
//(UserTrips VIEW: Shown for passengers and drivers who are passengers in other trips) //Cancel a request for a spot in a car for a passenger public void CancelRequest(PassengerJourneyViewModel trip) { using (ApplicationDbContext db = new ApplicationDbContext()) { PassengerJourney pj = db.PassengerJourneys.FirstOrDefault(x => x.DriverJourneyId == trip.TripId && x.User.UserName == trip.Username); db.DriverJourneys.FirstOrDefault(x => x.Id == trip.TripId).SeatsAvailable += pj.NumSeats; db.PassengerJourneys.Remove(pj); db.SaveChanges(); } }