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) } }); }
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); }