Exemplo n.º 1
0
        public async Task <IActionResult> ReservationConfirmation(int id)
        {
            try {
                var ticket = await dbContext.Ticket
                             .Include(type => type.SeatNavigation.WagonNavigation.WagonTypeNavigation)
                             .Include(train => train.SeatNavigation.WagonNavigation.TrainWagonNavigation.TrainNavigation)
                             .Include(departure => departure.TrainDepartureTownNavigation)
                             .Include(arrival => arrival.TrainArrivalTownNavigation)
                             .FirstOrDefaultAsync(x => x.IdTicket == id);

                var passenger = await dbContext.Passenger
                                .Include(user => user.UserNavigation)
                                .Include(type => type.PassportTypeNavigation)
                                .FirstOrDefaultAsync(x => x.UserNavigation.UserLogin == User.Identity.Name);

                var reservationViewModel = new ReservationConfirmationViewModel {
                    PassengerFullName = passenger.PassengerFullName,
                    PassportType      = passenger.PassportTypeNavigation.Passport,
                    PassportData      = passenger.PassengerPassport,
                    DepartureTown     = ticket.TrainDepartureTownNavigation.TownName,
                    ArrivalTown       = ticket.TrainArrivalTownNavigation.TownName,
                    DepartureTime     = ticket.TicketDate,
                    WagonType         = ticket.SeatNavigation.WagonNavigation.WagonTypeNavigation.WagonType1,
                    WagonNumber       = ticket.SeatNavigation.WagonNavigation.WagonNumber,
                    SeatNumber        = ticket.SeatNavigation.Seat1,
                    Price             = ticket.SeatNavigation.WagonNavigation.WagonTypeNavigation.WagonPrice,
                    IdTicket          = ticket.IdTicket,
                    IdPassenger       = passenger.IdPassenger
                };
                ViewBag.Discounts = new SelectList(dbContext.Discount.ToList(), "IdDiscount", "DiscountName");
                return(View(reservationViewModel));
            } catch {
                return(NotFound());
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> ReservationConfirmation(ReservationConfirmationViewModel reservationConfirmationViewModel)
        {
            try {
                var discount = await dbContext.Discount.FirstOrDefaultAsync(x =>
                                                                            x.IdDiscount == reservationConfirmationViewModel.IdDiscount);

                var ticket = await dbContext.Ticket
                             .Include(seat => seat.SeatNavigation)
                             .SingleOrDefaultAsync(x => x.IdTicket == reservationConfirmationViewModel.IdTicket);

                ticket.SeatNavigation.SeatAvailability       = false;
                dbContext.Entry(ticket.SeatNavigation).State = EntityState.Modified;
                var sale = new Sale {
                    IdPassenger = reservationConfirmationViewModel.IdPassenger,
                    IdTicket    = reservationConfirmationViewModel.IdTicket,
                    IdDiscount  = reservationConfirmationViewModel.IdDiscount,
                    SaleDate    = DateTime.Now,
                    TotalPrice  = reservationConfirmationViewModel.Price * discount.DiscountMultiply
                };
                await dbContext.AddAsync(sale);

                await dbContext.SaveChangesAsync();

                return(RedirectToAction("History"));
            } catch {
                return(NotFound());
            }
        }