Exemple #1
0
        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");
        }
Exemple #2
0
        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));
        }