public ActionResult InsertSeat(SeatChartInforModel model, int?IdOrder) { if (ModelState.IsValid) { var bookedSeats = _orderDetailService.GetByScheduleID(model.IdSchedule, model.CurrentFloor); // check seat number existed bool existed = false; if (bookedSeats.Any()) { existed = bookedSeats.Select(t => t.SeatNumber.Value).Intersect(model.SeatNumbers).Any(); } if (!existed) // not exist { foreach (var seat in model.SeatNumbers) { var entity = new OrderDetail() { FloorNumber = model.CurrentFloor, IdOrder = IdOrder.Value, IdSchedule = model.IdSchedule, SeatNumber = seat, IsPaid = false }; string error = _orderDetailService.Insert(entity); } } } return(RedirectToAction("EditOrder", new { id = IdOrder, IdSchedule = model.IdSchedule })); }
public ActionResult SeatChart(int IdSchedule, int IdOrder, int CurrentFloor = 1) { var schedule = _scheduleService.Get(IdSchedule); var SeatsList = new List <IEnumerable <int> >(); var model = new SeatChartInforModel(); if (schedule != null && schedule.Car.CarDiagram != null) { var carDiagram = schedule.Car.CarDiagram; // get floors model.NumberFloors = carDiagram.NumberFloors; // get seat chart var rows = carDiagram.SeatDiagram.Split('\n').Where(o => !string.IsNullOrEmpty(o)); foreach (var r in rows) { var seats = r.Split(' ').Select(o => int.Parse(o.Replace("x", ""))); SeatsList.Add(seats); } // get booked seats by current floor var currentFloorSeats = _orderDetailService.GetByScheduleID(IdSchedule, CurrentFloor); if (currentFloorSeats.Any()) { model.BookedSeatsPayment = currentFloorSeats.Where(t => t.IsPaid.Value).Select(o => o.SeatNumber.Value); model.BookedSeatsNotPayment = currentFloorSeats.Where(t => !t.IsPaid.Value).Select(o => o.SeatNumber.Value); } // get empty seats var emptySeats = new List <int>(); foreach (var item in SeatsList) { if (currentFloorSeats.Any()) { var except = item.Except(currentFloorSeats.Select(t => t.SeatNumber.Value)); if (except.Any()) { emptySeats.AddRange(except); } } else { emptySeats.AddRange(item); } } model.EmptySeats = emptySeats; // get customer seats model.CustomerSeats = _mapper.Map <IEnumerable <OrderDetailModel> >(_orderDetailService.GetByOrderID(IdOrder)); } model.CurrentFloor = CurrentFloor; model.SeatsList = SeatsList; model.IdSchedule = IdSchedule; ViewBag.IdOrder = IdOrder; return(PartialView(model)); }