public ActionResult Book(string CoachId, string SeatIds)
        {
            TicketDataContext     dc = new TicketDataContext();
            PassengerSessionModel passengerSession = PassengerSessionModel.FromSession(this.Session);
            Passenger             passenger        = new Passenger();

            if (passengerSession != null)
            {
                passenger.Email        = passengerSession.Email;
                passenger.FirstName    = passengerSession.FirstName;
                passenger.LastName     = passengerSession.LastName;
                passenger.Phone        = passengerSession.Phone;
                passenger.RegisterDate = DateTime.Now;
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
            if (!String.IsNullOrEmpty(SeatIds))
            {
                string[] seatIdBooked = SeatIds.Split(',');
                foreach (string seatId in seatIdBooked)
                {
                    if (!String.IsNullOrWhiteSpace(seatId))
                    {
                        Ticket ticket      = new Ticket();
                        Ticket ticketCheck = dc.Tickets.Where(q => q.CoachId == int.Parse(CoachId) && q.SeatId == int.Parse(seatId)).FirstOrDefault();
                        if (ticketCheck == null)
                        {
                            ticket.CoachId      = int.Parse(CoachId);
                            ticket.SeatId       = int.Parse(seatId);
                            ticket.Status       = Status.Pendding.ToString();
                            ticket.isNew        = true;
                            ticket.CreationDate = DateTime.Now;
                            passenger.Tickets.Add(ticket);
                        }
                        else
                        {
                            return(RedirectToAction("GetInformation", "Information"));
                        }
                    }
                }
            }


            Coach coach = dc.Coaches.Where(q => q.Id == int.Parse(CoachId)).First();

            if (passenger != null && passenger.FirstName != null && passenger.Tickets.Count > 0)
            {
                dc.Passengers.InsertOnSubmit(passenger);
                dc.SubmitChanges();
                PassengerSessionModel.AbandonPassenger(this.Session);
            }
            ViewBag.Coach = coach;
            return(View(passenger));
        }
        public ActionResult GetInformation(PassengerViewModel model)
        {
            CoachViewModel resuftCoach = new CoachViewModel();

            if (model != null && !String.IsNullOrEmpty(model.FirstName))
            {
                PassengerSessionModel.FromSession(this.Session).getPassenger(model);
                TicketDataContext dc      = new TicketDataContext();
                List <Coach>      coaches = new List <Coach>();
                if (model.Hour == null || String.IsNullOrEmpty(model.Hour))
                {
                    coaches = dc.Coaches.Where(q => q.StartDate == DateTime.ParseExact(model.StartDate, "dd/MM/yyyy", null)).ToList();
                }
                else
                {
                    coaches = dc.Coaches.Where(q => q.StartDate == DateTime.ParseExact(model.StartDate, "dd/MM/yyyy", null) && q.StartHour == model.Hour).ToList();
                }

                foreach (Coach coach in coaches)
                {
                    resuftCoach.Name       = coach.Name;
                    resuftCoach.NumberSeat = coach.NumberSeat;
                    resuftCoach.Router     = coach.Router;
                    resuftCoach.StartDate  = coach.StartDate;
                    resuftCoach.StartHour  = coach.StartHour;
                    resuftCoach.Id         = coach.Id;

                    for (int i = 0; i < resuftCoach.NumberSeat; i++)
                    {
                        TicketVewModel ticket = new TicketVewModel();
                        ticket.SeatId = i;
                        resuftCoach.Tickets.Add(ticket);
                    }

                    List <Ticket> tickets = dc.Tickets.Where(q => q.CoachId == resuftCoach.Id).ToList();
                    if (tickets.Count > 0)
                    {
                        foreach (Ticket ticket in tickets)
                        {
                            resuftCoach.Tickets[ticket.SeatId].Status = ticket.Status;
                        }
                    }
                    break;
                }
            }
            else
            {
                return(RedirectToAction("Index", "Home"));
            }
            return(View(resuftCoach));
        }