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()); } }
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()); } }