Esempio n. 1
0
        public async Task Handle(CarReserved message, IMessageHandlerContext context)
        {
            log.Info($"Received CarReserved, CombinedReservationId = {message.combinedReservationId}");

            // doda poene korisniku i ako uspije to je kraj, postavi onu rezervaciju na successfull

            var users = _context.Users.Include(us => us.CombinedReservations).ToList();

            string userId = message.userId;

            var user = await _userManager.FindByIdAsync(userId);

            user.Points += 10;

            foreach (var res in user.CombinedReservations)
            {
                if (res.Id == message.resId)
                {
                    res.Status = "Approved";
                }
            }

            await _userManager.UpdateAsync(user);

            _context.Update(user);

            try
            {
                _context.SaveChanges();
            }
            catch (Exception e)
            {
                foreach (var res in user.CombinedReservations)
                {
                    if (res.Id == message.resId)
                    {
                        res.Status = "Denied";
                        await _userManager.UpdateAsync(user);

                        _context.Update(user);
                        _context.SaveChanges();
                    }
                }

                ReservationNotApproved notApproved = new ReservationNotApproved();
                notApproved.combinedReservationId = message.combinedReservationId;
                notApproved.carRes  = message.carRes;
                notApproved.resId   = message.resId;
                notApproved.tickets = message.tickets;
                notApproved.userId  = message.userId;
                await context.Publish(notApproved).ConfigureAwait(false);
            }
        }
        public async Task Handle(FlightCancelled message, IMessageHandlerContext context)
        {
            log.Info($"Received FlightCancelled");

            // doda poene korisniku i ako uspije to je kraj, postavi onu rezervaciju na successfull

            var users = _context.Users.Include(us => us.CombinedReservations).ToList();

            string userId = message.userId;

            var user = await _userManager.FindByIdAsync(userId);

            if (user != null)
            {
                user.Points -= 5;

                await _userManager.UpdateAsync(user);

                _context.Update(user);
                _context.SaveChanges();
            }
        }
        public async Task Handle(SeatNotReserved message, IMessageHandlerContext context)
        {
            log.Info($"Received SeatNotReserved, CombinedReservationId = ");

            // postavi na unsuccessfull, mora da se odradi
            string userId = message.userId;
            var    users  = _context.ApplicationUsers.Include(u => u.CombinedReservations).ToList();

            var user = await _userManager.FindByIdAsync(userId);

            foreach (var res in user.CombinedReservations)
            {
                if (res.Id == message.resId)
                {
                    res.Status = "Denied";
                    await _userManager.UpdateAsync(user);

                    _context.Update(user);
                    _context.SaveChanges();
                    return;
                }
            }
        }