Exemplo n.º 1
0
        public async Task <Unit> Handle(CartRecordQuantityMessage request, CancellationToken cancellationToken)
        {
            var cart = await _db.Carts.FindAsync(new object[] { request.CartId }, cancellationToken);

            if (cart == null)
            {
                throw new InvalidOperationException($"Cart not found: id {request.CartId}");
            }

            if (cart.Records == null)
            {
                cart.Records = new Dictionary <int, int>();
            }

            if (!cart.Records.ContainsKey(request.ProdId))
            {
                cart.Records.Add(request.ProdId, request.Quantity);
            }
            else
            {
                cart.Records[request.ProdId] = request.Quantity;
            }

            // TODO: добавить проверку изменения Dictionary (сам EF Core не работает с Dictionary)
            _db.Entry(cart).Property(e => e.Records).IsModified = true;

            if (request.SaveChanges)
            {
                await _db.SaveChangesAsync(cancellationToken);
            }

            return(await Unit.Task);
        }
Exemplo n.º 2
0
        public async Task <Unit> Handle(CartRecordRemoveMessage request, CancellationToken cancellationToken)
        {
            var cart = await _db.Carts.FindAsync(new object[] { request.CartId }, cancellationToken);

            if (cart == null)
            {
                throw new InvalidOperationException($"Cart not found: id {request.CartId}");
            }

            if (cart.Records == null)
            {
                cart.Records = new Dictionary <int, int>();
            }

            if (cart.Records.ContainsKey(request.ProdId))
            {
                cart.Records.Remove(request.ProdId);
            }

            if (request.SaveChanges)
            {
                await _db.SaveChangesAsync(cancellationToken);
            }
            return(await Unit.Task);
        }
        public async Task <TEntity> Handle(BaseDeleteCommand <TEntity> request, CancellationToken cancellationToken)
        {
            var result = _set.Remove(request.Entity);

            if (request.SaveChanges)
            {
                await _db.SaveChangesAsync(cancellationToken);
            }
            return(await Task.FromResult(result.Entity));
        }
Exemplo n.º 4
0
        public async Task <RegistrationResponse> Handle(RegistrationRequest request, CancellationToken cancellationToken)
        {
            var user = await _dbUser.FindAsync(request.Data.Id);

            if (user != null)
            {
                return(new RegistrationResponse(false));
            }
            user      = request.Data;
            user.Id   = 0;
            user.Role = 0;
            _dbUser.Add(user);
            await _db.SaveChangesAsync();

            return(await Task.FromResult(new RegistrationResponse(true)));
        }