コード例 #1
0
        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));
        }
コード例 #2
0
        private void InformViewsForReleaseSeat(Flight flight, IEnumerable <long> releasedSeat)
        {
            var flightService = new FlightHubService();

            flightService.FlightSeatsOpened(releasedSeat.ToArray());
            flightService.FligthStatusChanged(flight.FlightId, (int)FlightStatusEnum.OnScedule);
        }
コード例 #3
0
        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 }));
        }