public async Task Consume(ConsumeContext <CreateOrderMessageCommand> context)
        {
            var newAddress = new Domain.OrderAggregate.Address(context.Message.Province, context.Message.District, context.Message.Street, context.Message.ZipCode, context.Message.Line);

            Domain.OrderAggregate.Order order = new Domain.OrderAggregate.Order(context.Message.BuyerId, newAddress);

            context.Message.OrderItems.ForEach(x =>
            {
                order.AddOrderItem(x.ProductId, x.ProductName, x.Price, x.PictureUrl);
            });

            await _orderDbContext.Orders.AddAsync(order);

            await _orderDbContext.SaveChangesAsync();
        }
예제 #2
0
        public OrderDto(Domain.OrderAggregate.Order order)
        {
            OrderItems = new List <OrderItemDto>();

            foreach (var orderGoodItem in order.GoodItems)
            {
                var orderItemDto = new OrderItemDto
                {
                    Quantity = orderGoodItem.GetUnits(), Name = orderGoodItem.Details.Name, Type = GoodItemTypeEnum.From(orderGoodItem.GetItemType()).Name, IsImported = orderGoodItem.GetImportStatus(), UnitPrice = orderGoodItem.GetTotalPrice()
                };
                OrderItems.Add(orderItemDto);
            }

            TotalPrice    = order.GetTotalPrice().ToString("C");
            TotalSalesTax = order.GetTotalSalesTax().ToString("C");
        }
        public async Task <Response <CreatedOrderDto> > Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var newAddress = new Address(request.Address.Province, request.Address.District, request.Address.Street, request.Address.ZipCode, request.Address.Line);

            Domain.OrderAggregate.Order newOrder = new Domain.OrderAggregate.Order(request.BuyerId, newAddress);
            request.OrderItems.ForEach(x =>
            {
                newOrder.AddOrderItem(x.ProductId, x.ProductName, x.Price, x.PictureUrl);
            });

            await _context.Orders.AddAsync(newOrder);

            await _context.SaveChangesAsync();

            return(Response <CreatedOrderDto> .Success(new CreatedOrderDto { OrderId = newOrder.Id }, 200));
        }
예제 #4
0
        public async Task <IDataResult <CreatedOrderDto> > Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var newAddress = new Address(request.Address.Province, request.Address.District, request.Address.Street, request.Address.ZipCode, request.Address.Line);

            Domain.OrderAggregate.Order newOrder = new Domain.OrderAggregate.Order(request.BuyerId, newAddress);

            request.OrderItems.ForEach(x =>
            {
                newOrder.AddOrderItem(x.ProductId, x.ProductName, x.Price, x.PictureUrl);
            });

            await _orderRepository.AddAsync(newOrder);

            return(new SuccessDataResult <CreatedOrderDto>(new CreatedOrderDto {
                OrderId = newOrder.Id
            }));
        }
        public async Task <CreateOrderCommandResponse> Handle(CreateOrderCommand request, CancellationToken cancellationToken)
        {
            var productsList = request
                               ?.Products
                               .Select(x =>
                                       new Product()
            {
                ProductType = x.ProductType,
                Quantity    = x.Quantity
            }).ToList();

            var newOrder =
                new Domain.OrderAggregate.Order(request.OrderId, productsList);

            await _orderRepository.CreateAsync(newOrder);

            return(new CreateOrderCommandResponse(newOrder.RequiredBinWidth));
        }