public bool AddTicketToDB(Film film, int customerID, int timeSessionFilm, SeatState seatState)
        {
            //get time session
            BookingTicket result = new BookingTicket();

            try
            {
                var resultTimeSession = _timeSessionRepository.GetSingleById(timeSessionFilm);

                //ticket detail
                result.BookingTicketPrefix     = "TIC";
                result.BookingTicketFilmID     = film.FilmID;
                result.BookingTicketPrice      = 0;
                result.BookingTicketRoomID     = 1;
                result.BookingPaymentDate      = DateTime.Now;
                result.BookingTicketStatusID   = StatusCommonConstrants.ACTIVE;
                result.BookingTicketTimeDetail = resultTimeSession.TimeDetail;
                result.CustomerID = customerID;

                //state seat detail
                resultTimeSession.SeatTableState = BookingTimeHelpers.ConvertBookingSessionToJson(seatState);

                //add
                _bookingTicketRepository.Add(result);
                _unitOfWork.Commit();
                return(true);
            }
            catch (Exception ex)
            {
                _unitOfWork.RollbackTran();
                return(false);
            }
            return(false);
        }
Beispiel #2
0
        public BookingTicket Subscribe(string userId, Guid courseId)
        {
            var ticket = new BookingTicket();

            var course  = Db.Activities.OfType <Course>().SingleOrDefault(x => x.Id == courseId);
            var student = GetStudent(userId);

            ticket.Course = course;
            ticket.UserId = userId;

            var occurrence = course.Occurrence;
            OccurrenceSubscription subscription = null;

            using (var transaction = Db.Database.BeginTransaction())
            {
                subscription = occurrence.Subscriptions.FirstOrDefault(x => x.UserId.Equals(userId));

                var bookingLists = GetBookingLists(occurrence.Id);
                var bookingState = new BookingState();
                bookingState.Student      = student;
                bookingState.Occurrence   = occurrence;
                bookingState.BookingLists = bookingLists;
                bookingState.Init();

                var myBookingList = bookingState.MyBookingList;

                if (subscription != null)
                {
                    DeleteSubscription(subscription);
                    if (myBookingList != null && !subscription.OnWaitingList)
                    {
                        var succeedingBooking = myBookingList.GetSucceedingBooking();
                        if (succeedingBooking != null)
                        {
                            succeedingBooking.Subscription.OnWaitingList = false;
                            ticket.SucceedingSubscription = succeedingBooking.Subscription;
                        }
                    }
                }
                else
                {
                    if (myBookingList != null)
                    {
                        subscription               = new OccurrenceSubscription();
                        subscription.TimeStamp     = DateTime.Now;
                        subscription.Occurrence    = occurrence;
                        subscription.UserId        = userId;
                        subscription.OnWaitingList = bookingState.AvailableSeats <= 0;
                        Db.Subscriptions.Add(subscription);
                        ticket.Subscription = subscription;
                    }
                }

                Db.SaveChanges();
                transaction.Commit();
            }

            return(ticket);
        }
        public JsonResult MakeOrder(string ticketListStr, string email, string phone, string filmName, string cinemaName,
                                    string date, string roomName, string startTime)
        {
            JArray        list       = JArray.Parse(ticketListStr);
            List <Ticket> ticketList = new List <Ticket>();
            //create customer
            Customer cus = new Customer();

            cus.email = email;
            cus.phone = phone;
            int cusId = new CustomerService().createCustomer(cus);//get cusId
            //create order
            BookingTicket order = new BookingTicket();

            order.quantity    = list.Count;
            order.bookingDate = DateTime.Today;
            order.customerId  = cusId;
            order.paymentCode = RandomUtility.RandomString(9);
            int orderId = new BookingTicketService().CreateOrder(order);

            foreach (JObject item in list)
            {
                int    ticketId = (int)item.GetValue("ticketId");
                Ticket aTicket  = new TicketService().FindByID(ticketId);
                if (aTicket.ticketStatus == TicketStatus.buying)
                {
                    aTicket.ticketStatus = TicketStatus.buyed;
                    //update ticket price
                    double price = (double)new TypeOfSeatService().FindByID(
                        (new SeatService().FindByID(aTicket.seatId).typeSeatId)).price;
                    aTicket.price = price;

                    string code = aTicket.ticketId + RandomUtility.RandomString(9);
                    aTicket.paymentCode = code;
                    aTicket.bookingId   = orderId;
                    new TicketService().Update(aTicket);
                }
                ticketList.Add(aTicket);
            }
            //send email for customer
            string mailContent = getEmailContent(ticketList, order, filmName, cinemaName, date, roomName, startTime);
            string mailSubject = "CinemaBookingTicket - Mã vé xem phim tại " + cinemaName;

            MailUtility.SendEmail(mailSubject, mailContent, email);
            var obj = ticketList
                      .Select(item => new
            {
                ticketId     = item.ticketId,
                ticketStatus = item.ticketStatus,
            });

            return(Json(obj));
        }
        private string getEmailContent(List <Ticket> ticketList, BookingTicket bt, string filmName, string cinemaName,
                                       string date, string roomName, string startTime)
        {
            string content = "Chúc mừng quý khách đã đặt vé thành công!";

            content += "Phim " + filmName + "\n";
            content += "Tại " + cinemaName + "\n";
            content += date + " - " + startTime + " - " + roomName + "\n";
            content += "Mã đặt vé của bạn là: " + bt.paymentCode + "\n";
            content += "Mã từng vé của bạn là: \n";
            for (int i = 0; i < ticketList.Count; i++)
            {
                Ticket aTicket = ticketList[i];
                Seat   seat    = new SeatService().FindByID(aTicket.seatId);
                content += "    " + (i + 1) +
                           ". Ghế: " + ConstantArray.Alphabet[(int)seat.py] + "" + ((int)seat.px + 1) +
                           "- Mã vé: " + aTicket.paymentCode + "\n";
            }
            content += "Chúc quý khách xem phim vui vẻ";
            return(content);
        }
Beispiel #5
0
        public async Task <IActionResult> Thanks(int?id, int seatsInput)
        {
            var movie = _context.Conjunction
                        .Where(c => c.Id == id)
                        .Include(m => m.Movie);

            foreach (var i in movie)
            {
                i.Movie.SeatsNr -= seatsInput;
            }

            var context = _context.Conjunction
                          .Where(c => c.Id == id)
                          .Include(m => m.Movie)
                          .Include(r => r.Room);

            foreach (var i in context)
            {
                tempmovie   = i.Movie;
                tempRoom    = i.Room;
                temptstatus = i.Status;
            }

            ticket = new BookingTicket()
            {
                Movie       = tempmovie,
                Room        = tempRoom,
                BookingDate = DateTime.Now
            };

            _context.Add(ticket);
            await _context.SaveChangesAsync();

            var view = _context.BookingTickets
                       .Include(t => t.Movie)
                       .Include(t => t.Room).OrderByDescending(t => t.Id).ToList();

            return(View(view));
        }
 public int CreateOrder(BookingTicket entity)
 {
     return(bookingTicketRepository.CreateOrder(entity));
 }
 public void Update(BookingTicket entity)
 {
     bookingTicketRepository.Update(entity);
 }
 public void Create(BookingTicket entity)
 {
     bookingTicketRepository.Create(entity);
 }
Beispiel #9
0
        public ActionResult Booking(BookingTicket ticket)
        {
            if (ModelState != null)
            {
                Trip trip = db.Trips.Include(c => c.Bus).Include(c => c.Bus.BookedSeats).Include(c => c.Line).SingleOrDefault(c => c.Id == ticket.Trip);
                if (trip != null)
                {
                    var FreeSeats = trip.Bus.MaximumSeats;
                    if (trip.Bus.BookedSeats.Count != 0)
                    {
                        FreeSeats = trip.Bus.MaximumSeats - trip.Bus.BookedSeats.Count;
                    }

                    if (FreeSeats >= ticket.NumberOfChairs)
                    {
                        var             UserId = User.Identity.GetUserId();
                        ApplicationUser user   = db.Users.Single(c => c.Id.Equals(UserId));
                        if (user != null)
                        {
                            Passenger passenger = db.Passengers.SingleOrDefault(c => c.ApplicationUser.Id == user.Id);
                            if (passenger == null)
                            {
                                //Creating Passenger and Adding it to DB
                                passenger = new Passenger();
                                passenger.ApplicationUser = user;
                                passenger.Tickets         = new List <Models.Ticket>();

                                db.Passengers.Add(passenger);
                                db.SaveChanges();
                            }
                            else if (passenger != null && passenger.Blocked == false)
                            {
                                if (passenger.Tickets == null)
                                {
                                    passenger.Tickets = new List <Models.Ticket>();
                                }

                                var        BookedSeats  = trip.Bus.BookedSeats;
                                List <int> SeatsNumbers = new List <int>();
                                foreach (var Seat in BookedSeats)
                                {
                                    if (Seat.IsAvailable == true)
                                    {
                                        SeatsNumbers.Add(Seat.SeatNumber);
                                    }
                                }
                                for (int i = 0; i < ticket.NumberOfChairs; i++)
                                {
                                    for (int y = 0; y < trip.Bus.MaximumSeats; y++)
                                    {
                                        if (!SeatsNumbers.Contains(y))
                                        {
                                            //Initializate new Seat
                                            Seat one = new Seat
                                            {
                                                IsAvailable = false,
                                                PassengerId = passenger.Id,
                                                SeatNumber  = y + 1
                                            };
                                            //Save Seat in DB and add it in BookedSeats in Bus of the particilar Trip
                                            //Seat SeatId = db.Seats.Add(one);
                                            trip.Bus.BookedSeats.Add(one);
                                            SeatsNumbers.Add(y);
                                            break;
                                        }
                                    }
                                }

                                Ticket Newticket = new Ticket
                                {
                                    Trip        = trip,
                                    PaymentId   = 1,
                                    BookingTime = DateTime.Now.ToString(),
                                    IsBlocked   = false
                                };

                                passenger.Tickets.Add(Newticket);
                                //Save new Seats to DB
                                db.SaveChanges();

                                try
                                {
                                    MailMessage mail       = new MailMessage();
                                    SmtpClient  SmtpServer = new SmtpClient("smtp.gmail.com");
                                    mail.From = new MailAddress("*****@*****.**");
                                    mail.To.Add(User.Identity.GetUserName());
                                    mail.Subject = "Booking Success Test";

                                    SmtpServer.Port = 587;
                                    SmtpServer.UseDefaultCredentials = true;
                                    SmtpServer.Credentials           = new System.Net.NetworkCredential("*****@*****.**", "[email protected]!#K*K0");
                                    SmtpServer.EnableSsl             = true;
                                    SmtpServer.Send(mail);
                                }
                                catch
                                {
                                    return(RedirectToAction("Index"));//After Booking
                                }
                            }
                        }
                        else
                        {
                            //User Not Found
                            return(HttpNotFound());
                        }
                    }
                    else
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }
                }
                else
                {
                    //Trip Not Found
                    return(HttpNotFound());
                }
                return(RedirectToAction("Index"));//After Booking
            }
            return(RedirectToAction("Booking"));
        }