public async Task<ActionResult> AcceptFlightInvite(int id) { FlightInvitation invite = dbContext.FlightInvitations.Include(fi => fi.Reservation).FirstOrDefault(fi => fi.Id == id); if (invite != null) { invite.Reservation.Confirmed = true; dbContext.Entry(invite).State = EntityState.Deleted; await dbContext.SaveChangesAsync(); } else { return NotFound(); } return Ok(); }
public async Task<ActionResult> DeclineFlightInvite(int id) { FlightInvitation invite = dbContext.FlightInvitations.Include(fi => fi.Reservation).ThenInclude(r => r.Flight).FirstOrDefault(fi => fi.Id == id); if (invite != null) { FreeReservedSeats(invite.Reservation); dbContext.Entry(invite).State = EntityState.Deleted; await dbContext.SaveChangesAsync(); } else { return NotFound(); } return Ok(); }
public async Task<ActionResult> CreateReservation(NewReservationParams data) { Flight flight = dbContext.Flights.Find(data.FlightId); string username = User.Claims.First(c => c.Type == "UserName").Value; User user = userManager.FindByNameAsync(username).Result; if (flight != null) { Reservation personalReservation = new Reservation() { Flight = flight, User = user, Seats = "", Confirmed = true }; for (int i = 0; i < data.Passengers.Length; i++) { string passenger = data.Passengers[i]; if (passenger.Equals("Self") || passenger.Equals("UU")) { personalReservation.Seats += data.Seats[i] + ","; } else { User friend = userManager.FindByNameAsync(passenger).Result; Reservation friendReservation = new Reservation() { Flight = flight, User = friend, Seats = data.Seats[i].ToString(), Confirmed = false }; dbContext.Reservations.Add(friendReservation); // Add invitation FlightInvitation invitation = new FlightInvitation() { From = user, To = friend, Reservation = friendReservation }; dbContext.FlightInvitations.Add(invitation); } // Reserve seat on flight char[] seatsString = flight.Seats.ToCharArray(); seatsString[data.Seats[i] - 1] = '1'; flight.Seats = new string(seatsString); } // Remove last comma string seats = personalReservation.Seats; personalReservation.Seats = seats.Remove(seats.Length - 1); dbContext.Reservations.Add(personalReservation); await dbContext.SaveChangesAsync(); } else { return BadRequest(); } return Ok(); }