public async Task <Unit> Handle(CreateProductCommand request, CancellationToken cancellationToken)
            {
                Domain.Entities.Product entity = new Domain.Entities.Product
                {
                    ProductId  = Guid.NewGuid(),
                    UserId     = request.UserId,
                    Name       = request.Name,
                    Desciption = request.Desciption,
                    Slug       = request.Slug,
                    Count      = request.Count,
                    Price      = request.Price,
                };

                _context.Products.Add(entity);

                await _context.SaveChangesAsync(cancellationToken);

                return(Unit.Value);
            }
            public async Task <Unit> Handle(PurchaseProductCommand request, CancellationToken cancellationToken)
            {
                var entity = await _context.Products.FindAsync(request.ProductId);

                if (entity == null)
                {
                    throw new NotFoundException("Product", request.ProductId);
                }

                if (entity.Count == 0 || entity.Count < request.Count)
                {
                    throw new AvailabilityException("Product", request.ProductId);
                }

                entity.Count -= request.Count;

                var newOrder = new Domain.Entities.Order
                {
                    OrderId   = Guid.NewGuid(),
                    UserId    = request.UserId,
                    ProductId = entity.ProductId,
                    Date      = DateTime.UtcNow,
                    Count     = request.Count,
                    State     = OrderState.CREATED
                };

                _context.Orders.Add(newOrder);

                int value = await _context.SaveChangesAsync(cancellationToken);

                if (value > 0)
                {
                    return(Unit.Value);
                }

                throw new Application.ExceptionHandler.
                      ExceptionHandler(System.Net.HttpStatusCode.Conflict,
                                       new { message = "Buy product conflict" });
            }
Ejemplo n.º 3
0
            public async Task <Unit> Handle(DeleteProductCommand request, CancellationToken cancellationToken)
            {
                var entity = await _context.Products.FindAsync(request.ProductId);

                if (entity == null)
                {
                    throw new NotFoundException("Product", request.ProductId);
                }

                _context.Products.Remove(entity);

                int value = await _context.SaveChangesAsync(cancellationToken);

                if (value > 0)
                {
                    return(Unit.Value);
                }

                throw new Application.ExceptionHandler.
                      ExceptionHandler(System.Net.HttpStatusCode.Conflict,
                                       new { message = "Delete product conflict" });
            }
Ejemplo n.º 4
0
            public async Task <Unit> Handle(UpdateOrderCommand request, CancellationToken cancellationToken)
            {
                var entity = await _context.Orders.
                             FirstOrDefaultAsync(x => x.OrderId == request.OrderId, cancellationToken);

                if (entity == null)
                {
                    throw new NotFoundException("Order", request.OrderId);
                }


                entity.State = request.State;

                int value = await _context.SaveChangesAsync(cancellationToken);

                if (value > 0)
                {
                    return(Unit.Value);
                }

                throw new Application.ExceptionHandler.
                      ExceptionHandler(System.Net.HttpStatusCode.Conflict,
                                       new { message = "Update order conflict" });
            }