public IHttpActionResult ReleaseSeat([FromBody] long[] seatIds) { if (seatIds == null || seatIds.Length < 1) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var seatsToRelease = flightSeatRepository.GetFlightSeatsById(seatIds); if (seatsToRelease == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } var flightId = seatsToRelease[0].FlightId; var flightTickets = ticketRepository.GetTicketsOfFlight(flightId); var closedSeats = flightTickets.Where(t => seatIds.Contains(t.SeatId)); if (closedSeats.Count() > 0) { return(BadRequest("The Seat cannot be released because a ticket is already purchased!")); } seatsToRelease.ForEach(fs => fs.ReleaseSeat()); unitOfWork.Complete(); var flightService = new FlightHubService(); flightService.FlightSeatsOpened(seatIds); return(Ok(seatIds)); }
private void InformViewsForReleaseSeat(Flight flight, IEnumerable <long> releasedSeat) { var flightService = new FlightHubService(); flightService.FlightSeatsOpened(releasedSeat.ToArray()); flightService.FligthStatusChanged(flight.FlightId, (int)FlightStatusEnum.OnScedule); }
public ActionResult ReleaseOrder() { var tempFlight = Session["flight"] as Flight; List <FlightSeat> flightSeats = Session["flightSeats"] as List <FlightSeat>; flightSeats.ForEach(s => s.ReleaseSeat()); foreach (var flightSeat in flightSeats) { context.Entry(flightSeat).State = EntityState.Modified; } context.SaveChanges(); var flightSeatIds = flightSeats.Select(fs => fs.FlightSeatId).ToArray(); var flightService = new FlightHubService(); flightService.FlightSeatsOpened(flightSeatIds); ClearOrderSession(); return(RedirectToAction("ChooseSeats", "Flight", new { id = tempFlight.FlightId })); }