public async Task<IActionResult> DeleteConfirmed(int id) { try { await using var transaction1 = dbContext.Database.BeginTransaction(); var ticket = await dbContext.Ticket .Include(seat => seat.SeatNavigation) .Include(wagon => wagon.SeatNavigation.WagonNavigation) .Include(traionwagon => traionwagon.SeatNavigation.WagonNavigation.TrainWagonNavigation) .FirstOrDefaultAsync(x => x.IdTicket == id); dbContext.Entry(ticket.SeatNavigation).State = EntityState.Deleted; dbContext.Entry(ticket).State = EntityState.Deleted; var seats = dbContext.Seat .Where(x => x.IdWagon == ticket.SeatNavigation.WagonNavigation.IdWagon) .ToList(); if (seats.Count == 1) { dbContext.Entry(ticket.SeatNavigation.WagonNavigation).State = EntityState.Deleted; } var wagons = dbContext.Wagon .Where(x => x.TrainWagonNavigation.IdTrainWagon == ticket.SeatNavigation.WagonNavigation.TrainWagonNavigation.IdTrainWagon) .ToList(); if (wagons.Count == 1 && seats.Count == 1) { dbContext.Entry(ticket.SeatNavigation.WagonNavigation.TrainWagonNavigation).State = EntityState.Deleted; } await dbContext.SaveChangesAsync(); transaction1.Commit(); } catch { return NotFound(); } return RedirectToAction("Index"); }
public async Task <ActionResult> Edit(TrainArrivalTown arrivalTown) { try { if (ModelState.IsValid) { var transaction = dbContext.Database.BeginTransaction(); var arrivalTownNameBefore = await dbContext.TrainArrivalTown.FindAsync(arrivalTown.IdTrainArrivalTown); var departureTown = await dbContext.TrainDepartureTown .FirstOrDefaultAsync(x => x.TownName == arrivalTownNameBefore.TownName); arrivalTownNameBefore.TownName = arrivalTown.TownName; departureTown.TownName = arrivalTown.TownName; dbContext.Entry(arrivalTownNameBefore).State = EntityState.Modified; dbContext.Entry(departureTown).State = EntityState.Modified; await dbContext.SaveChangesAsync(); transaction.Commit(); return(RedirectToAction("Index")); } return(View()); } 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()); } }
public async Task <ActionResult> Edit(WagonType wagonType) { try { if (ModelState.IsValid) { dbContext.Entry(wagonType).State = EntityState.Modified; await dbContext.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View()); } catch { return(NotFound()); } }
public async Task <IActionResult> Edit(int id, Passenger passenger) { if (id != passenger.IdPassenger) { return(NotFound()); } if (ModelState.IsValid) { try { dbContext.Entry(passenger).State = EntityState.Modified; await dbContext.SaveChangesAsync(); } catch { return(NotFound()); } return(RedirectToAction("Profile")); } ViewData["PassportTypes"] = new SelectList(dbContext.PassportType.ToList(), "IdPassportType", "Passport"); return(View(passenger)); }