public int Insert(TicketFlightModel ticketFlight)
        {
            this.TicketFlightRepository.Insert(ticketFlight.GetModel());
            var result = this.UnitOfWork.SaveChanges();

            return(result);
        }
        public TicketFlightModel CreateViewModel(TicketFlight model)
        {
            TicketFlightModel viewModel = null;

            if (model != null)
            {
                viewModel = new TicketFlightModel();
                CommonMethods.CopyObjectProperties(model, viewModel);
            }

            return(viewModel);
        }
Beispiel #3
0
        public ActionResult BookingSuccess()
        {
            var loggedUser      = SessionUtility.GetLoggedUser();
            var booking         = SessionUtility.GetBookingSession();
            var passengerList   = SessionUtility.GetPassengerSession();
            var seatCodeSuccess = new List <string>();

            if (booking == null || passengerList == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var percent     = booking.PassengerType.Where(type => type.Name.Equals(Constant.CONST_DB_NAME_INFANT)).Select(type => type.Discount.Value).FirstOrDefault();
            var priceInfant = Math.Round(booking.Price - (booking.Price / 100) * percent, 2);
            var percent2    = booking.PassengerType.Where(type => type.Name.Equals(Constant.CONST_DB_NAME_CHILD)).Select(type => type.Discount.Value).FirstOrDefault();
            var priceChild  = Math.Round(booking.Price - (booking.Price / 100) * percent2, 2);
            var totalPrice  = (booking.Price * booking.Adult) + (booking.Child > 0 ? priceChild * booking.Child : 0) + (booking.Infant > 0 ? priceInfant * booking.Infant : 0);

            //Save Ticket
            var ticket = new TicketModel
            {
                AccountID  = loggedUser.ID,
                Price      = totalPrice,
                CreateDate = DateTime.Now,
                PaymentID  = booking.PaymentID,
                Status     = Constant.CONST_DB_TICKET_STATUS_SUCCESS
            };

            var ticketId = this.TicketService.Insert(ticket);

            //Save Passenger Ticket
            foreach (var passenger in passengerList)
            {
                passenger.TicketID = ticketId;
                this.PassengerTicketService.Insert(passenger);
            }

            //Save Ticket Flight
            var order = 1;

            foreach (var flight in booking.DepartFlight)
            {
                var seatCode = this.SeatMapService.GenerateSeatCodeTicket(flight.PlaneID.Value, booking.SeatClass.ID
                                                                          , flight.ID, booking.Adult + booking.Child);

                if (order == 1)
                {
                    seatCodeSuccess = seatCode;
                }

                var ticketFlight = new TicketFlightModel
                {
                    TicketID  = ticketId,
                    FlightID  = flight.ID,
                    SeatCode  = string.Join(",", seatCode),
                    RoundTrip = false,
                    Order     = order++
                };

                this.TicketFlightService.Insert(ticketFlight);
            }

            //Return flight
            if (booking.ReturnFlight.Count() != 0)
            {
                order = 1;
                foreach (var flight in booking.ReturnFlight)
                {
                    var seatCode = this.SeatMapService.GenerateSeatCodeTicket(flight.PlaneID.Value, booking.SeatClass.ID
                                                                              , flight.ID, booking.Adult + booking.Child);
                    var ticketFlight = new TicketFlightModel
                    {
                        TicketID  = ticketId,
                        FlightID  = flight.ID,
                        SeatCode  = string.Join(",", seatCode),
                        RoundTrip = true,
                        Order     = order++
                    };

                    this.TicketFlightService.Insert(ticketFlight);
                }
            }

            SessionUtility.RemoveBookingSession();
            SessionUtility.RemovePassengerSession();

            var model = new BookingSuccessModel
            {
                TicketId   = ticketId,
                PaymentId  = ticket.PaymentID.Split('-')[1],
                Customer   = loggedUser.FirstName + " " + loggedUser.LastName,
                DepartDate = booking.DepartFlight.First().DepartureDate.Value,
                Flight     = booking.Departure.City + " to " + booking.Arrival.City
                             + (booking.ReturnFlight.Count() > 0 ? " (Round trip)" : string.Empty),
                Passenger = booking.Adult + " Adult, " + booking.Child + " Child, " + booking.Infant + " Infant",
                SeatCode  = string.Join(", ", seatCodeSuccess),
                Price     = totalPrice
            };

            var baseUrl     = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/') + "/";
            var currentUser = this.AccountService.Find(loggedUser.ID);

            EmailSender.SendMailBookingSuccess(currentUser.Email, baseUrl + "Ticket", model.PaymentId,
                                               model.DepartDate.ToString("dd/MM/yyyy hh:mm tt"), model.Flight, model.Passenger, model.SeatCode, model.Price.ToString(), ticketId);
            SessionUtility.SetAuthenticationToken(currentUser, 60);

            return(View(model));
        }