public async Task CreateReservationAsync(CheckReservationModel model) { var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier); if (await DoesUserExists(userId)) { AvailableSeat availableSeat = await _dbContext.AvailableSeats .Where(avs => avs.Id == model.AvailableSeatId) .FirstOrDefaultAsync(); Ticket ticket = new Ticket { ProjectionId = model.ProjectionId, SeatId = availableSeat.SeatId, Price = 7.0 }; int seatId = availableSeat.SeatId; _dbContext.Tickets.Add(ticket); _dbContext.AvailableSeats.Remove(availableSeat); await _dbContext.SaveChangesAsync(); await AddReservation(model, seatId); } }
public async Task <IActionResult> CheckCardNumber(CheckReservationModel model) { UserGetDetailsRes user = await _userRepository.GetCurrentUser(); String error1 = "Sorry, You don't have enough credits on your CineMagic Credit Card to buy this ticket."; String error2 = "You entered wrong credit card number, click on a button and try again."; long cardNumber = Convert.ToInt64(model.cardNumber); if (user.CinemaCreditCard == null || cardNumber != user.CinemaCreditCard.CardNumber) { model.Error = error2; return(View("Unsuccessfully", model)); } else if (user.CinemaCreditCard.Balance < 7.0) { model.Error = error1; return(View("Unsuccessfully", model)); } else { await _userRepository.CreateReservationAsync(model); return(View("Successfully")); } }
private async Task AddReservation(CheckReservationModel model, int seatId) { var userId = _httpContextAccessor.HttpContext.User.FindFirstValue(ClaimTypes.NameIdentifier); CinemaCreditCard cinemaCreditCard = await _dbContext.CinemaCreditCards .Where(c => c.UserId == userId) .FirstOrDefaultAsync(); double balance = cinemaCreditCard.Balance; cinemaCreditCard.Balance = balance - 7.0; Ticket ticket = await _dbContext.Tickets .Where(t => t.ProjectionId == model.ProjectionId && t.SeatId == seatId) .FirstOrDefaultAsync(); Reservation reservation = new Reservation { TicketId = ticket.Id, UserId = userId }; _dbContext.Reservations.Add(reservation); await _dbContext.SaveChangesAsync(); }