Пример #1
0
        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);
            }
        }
Пример #2
0
        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"));
            }
        }
Пример #3
0
        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();
        }