Ejemplo n.º 1
0
 public CalculatedOrderResponse MapCalculatedOrder(CalculatedOrder request)
 {
     return(new CalculatedOrderResponse
     {
         Transport = request.Transport != null ? new CalculatedOrderTransportResponse
         {
             TransportId = request.Transport.TransportId,
             SourceData = MapTransport(request.Transport.SourceData),
         } : null,
         Payment = request.Payment != null ? new CalculatedOrderPaymentResponse
         {
             PaymentId = request.Payment.PaymentId,
             SourceData = MapPayment(request.Payment.SourceData)
         } : null,
         Products = request.Products.Select(p => new CalculatedOrderProductResponse
         {
             Count = p.Count,
             Product = MapProduct(p.Product),
             Service = p.Service != null ? new CalculatedOrderProductServiceResponse {
                 Date = p.Service.Date,
                 UserId = p.Service.UserId,
                 Done = p.Service.Done,
             } : null,
             TotalPrice = MapPrice(p.TotalPrice)
         }).ToList(),
         Total = new CalculatedOrderTotalResponse
         {
             TotalPrice = MapPrice(request.Total.TotalPrice)
         }
     });
 }
Ejemplo n.º 2
0
        private async Task <CalculatedOrder> CalculateOrder(List <CalculatedOrderProductRequest> products, string transportId, string paymentId)
        {
            var calculatedData = new CalculatedOrder();

            // add products
            var productsIds      = products.Select(p => p.ProductId).ToList();
            var selectedProducts = await _productSharedService.GetSelected(productsIds);

            calculatedData.Products = selectedProducts.Select(p => {
                var productRequest = products.FirstOrDefault(x => x.ProductId == p.Id.ToString());
                var res            = new CalculatedOrderProduct
                {
                    Product = p,
                    Service = p.Service != null ? new CalculatedOrderProductService
                    {
                        Date = productRequest?.ServiceDate,
                    } : null,
                    Count = productRequest?.Count ?? 1,
                };
                res.TotalPrice = res.CalculateTotal();
                return(res);
            }).ToList();

            // add transport
            if (transportId != null)
            {
                var transport = await _uow.Transports.FindAsync(new Guid(transportId));

                calculatedData.Transport = transport != null ? new CalculatedOrderTransport
                {
                    TransportId = transport.Id.ToString(),
                    SourceData  = transport,
                } : null;
            }
            // add payment
            if (paymentId != null)
            {
                var payment = await _uow.Payments.FindAsync(new Guid(paymentId));

                calculatedData.Payment = payment != null ? new CalculatedOrderPayment
                {
                    PaymentId  = payment.Id.ToString(),
                    SourceData = payment,
                } : null;
            }

            calculatedData.Total = new CalculatedOrderTotal
            {
                TotalPrice = calculatedData.CalculateTotal()
            };
            return(calculatedData);
        }