public async Task <ActionResult> Create(WagonType wagonType) { try { if (ModelState.IsValid) { await dbContext.AddAsync(wagonType); await dbContext.SaveChangesAsync(); 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 <IActionResult> Register(RegisterViewModel registerViewModel) { if (ModelState.IsValid) { try { await using var transaction = dbContext.Database.BeginTransaction(); var salt = HashPassword.CreateSalt(); var hash = HashPassword.GenerateSaltedHash(Encoding.UTF8.GetBytes(registerViewModel.Password), salt); var user = new User { UserLogin = registerViewModel.Login, UserSalt = Convert.ToBase64String(salt), UserHash = Convert.ToBase64String(hash), UserType = "passenger" }; await dbContext.User.AddAsync(user); await dbContext.SaveChangesAsync(); var passenger = new Passenger { IdUser = user.IdUser, PassengerFullName = registerViewModel.FullName, PassengerBirthday = registerViewModel.Birthday, IdPassengerPassportType = registerViewModel.IdPassportType, PassengerPassport = registerViewModel.PassportData }; await dbContext.Passenger.AddAsync(passenger); await dbContext.SaveChangesAsync(); transaction.Commit(); await Authenticate(user); return(RedirectToAction("Index", "Home")); } catch { return(NotFound()); } } ViewBag.PassportType = new SelectList(dbContext.PassportType.ToList(), "IdPassportType", "Passport"); return(View(registerViewModel)); }
public async Task <ActionResult> Create(TrainArrivalTown town) { try { if (ModelState.IsValid) { var transaction = dbContext.Database.BeginTransaction(); await dbContext.TrainArrivalTown.AddAsync(town); var departureTown = new TrainDepartureTown { TownName = town.TownName }; await dbContext.TrainDepartureTown.AddAsync(departureTown); await dbContext.SaveChangesAsync(); transaction.Commit(); return(RedirectToAction("Index")); } return(View()); } catch { return(NotFound()); } }
public async Task<IActionResult> CreateWagonInformation(List<Wagon> wagons, List<int?> numberOfSeats) { try { await using var transaction = dbContext.Database.BeginTransaction(); var trainWagons = dbContext.TrainWagon .Where(x => x.IdTrain == int.Parse(Request.Cookies["idTrain"])).ToList(); var nextTravelCount = 1; if (trainWagons.Count > 0) { for (int i = 0; i < trainWagons.Count; i++) { if (nextTravelCount == trainWagons[i].TrainTravelCount) { nextTravelCount++; } } } var trainWagon = new TrainWagon { IdTrain = int.Parse(Request.Cookies["idTrain"]), TrainTravelCount = nextTravelCount }; await dbContext.TrainWagon.AddAsync(trainWagon); await dbContext.SaveChangesAsync(); var wagonEntities = new List<Wagon>(); for (int i = 0; i < wagons.Count; i++) { wagonEntities.Add(new Wagon { IdTrainWagon = trainWagon.IdTrainWagon, WagonNumber = int.Parse($"{i + 1}"), IdWagonType = wagons[i].IdWagonType }); } await dbContext.Wagon.AddRangeAsync(wagonEntities); await dbContext.SaveChangesAsync(); var seats = new List<Seat>(); for (int i = 0; i < wagonEntities.Count; i++) { for (int j = 1; j <= numberOfSeats[i]; j++) { seats.Add(new Seat { IdWagon = wagonEntities[i].IdWagon, Seat1 = j, SeatAvailability = true }); } } await dbContext.Seat.AddRangeAsync(seats); await dbContext.SaveChangesAsync(); var tickets = new List<Ticket>(); var time = DateTime.Parse(Request.Cookies["ticketDate"]).ToString("G"); for (int i = 0; i < seats.Count; i++) { tickets.Add(new Ticket { IdSeat = seats[i].IdSeat, IdTrainDepartureTown = int.Parse(Request.Cookies["idDepartureTown"]), IdTrainArrivalTown = int.Parse(Request.Cookies["idArrivalTown"]), TicketDate = DateTime.Parse(time), TicketTravelTime = TimeSpan.Parse(Request.Cookies["ticketTravelDuration"]) }); } await dbContext.Ticket.AddRangeAsync(tickets); await dbContext.SaveChangesAsync(); await transaction.CommitAsync(); return RedirectToAction("Index"); } catch { return NotFound(); } }