Example #1
0
        public async Task <Unit> Handle(CreateProductCommand request, CancellationToken cancellationToken)
        {
            var product = new Product
            {
                ProductName        = request.ProductName,
                Price              = new Money(request.Price),
                ProductDescription = request.ProductDescription,
            };

            await _context.Products.AddAsync(product);

            await _context.SaveChangesAsync(cancellationToken);

            await _mediator.Publish(new ProductCreated { ProductId = product.ProductId }, cancellationToken);

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

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

            product.Price = new Domain.ValueObjects.Money(request.Price);
            product.ProductDescription = request.ProductDescription;
            product.ProductName        = request.ProductName;

            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
        public async Task <Unit> Handle(CreateCustomerCommand request, CancellationToken cancellationToken)
        {
            var customer = new Customer
            {
                FirstName = request.FirstName,
                LastName  = request.LastName,
                Phone     = request.Phone,
                Address   = new Address(request.Address_1, request.Address_2, request.City, request.EmailAddress, request.Country, request.ZipCode),
            };

            await _context.Customers.AddAsync(customer);

            await _context.SaveChangesAsync(cancellationToken);

            await _mediator.Publish(new CustomerCreated { CustomerId = customer.CustomerId }, cancellationToken);

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

            if (product == null)
            {
                throw new NotFoundException(nameof(Product), request.Id);
            }

            var hasOrders = _context.OrderedItems.Any(o => o.ProductId == request.Id);

            if (hasOrders)
            {
                throw new DeleteFailureException(nameof(Product), request.Id, "Existing orders are associated with this product");
            }

            _context.Products.Remove(product);

            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
        public async Task <Unit> Handle(DeleteCustomerCommand request, CancellationToken cancellationToken)
        {
            var customer = await _context.Customers.FindAsync(request.CustomerId);

            if (customer == null)
            {
                throw new NotFoundException(nameof(Customer), request.CustomerId);
            }

            var customerHasOrders = _context.Orders.Any(o => o.CustomerId == request.CustomerId);

            if (customerHasOrders)
            {
                throw new DeleteFailureException(nameof(Customer), request.CustomerId, "There are existing orders associated with this customer");
            }

            _context.Customers.Remove(customer);

            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
Example #6
0
        public async Task <Unit> Handle(UpdateCustomerCommand request, CancellationToken cancellationToken)
        {
            var customer = await _context.Customers.SingleOrDefaultAsync(c => c.CustomerId == request.CustomerId);

            if (customer == null)
            {
                throw new NotFoundException(nameof(Customer), request.CustomerId);
            }

            customer.Address = new Address(request.Address_1,
                                           request.Address_2,
                                           request.City,
                                           request.EmailAddress,
                                           request.Country,
                                           request.ZipCode);

            customer.FirstName = request.FirstName;
            customer.LastName  = request.LastName;
            customer.Phone     = request.Phone;

            await _context.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }