public async Task <OrderDetail> GetOrderDetail(string orderId) { CheckOrderDetailPermisson(orderId, kenticoUsers.GetCurrentCustomer()); var microserviceResponse = await orderViewClient.GetOrderByOrderId(orderId); if (!microserviceResponse.Success || microserviceResponse.Payload == null) { kenticoLog.LogError("GetOrderDetail", microserviceResponse.ErrorMessages); throw new Exception("Failed to obtain order detail from microservice"); // TODO refactor using checking null } var data = microserviceResponse.Payload; var genericStatus = kenticoOrder.MapOrderStatus(data.Status); var orderDetail = new OrderDetail() { DateTimeNAString = resources.GetResourceString("Kadena.Order.ItemShippingDateNA"), CommonInfo = new CommonInfo() { OrderDate = new TitleValuePair <DateTime> { Title = resources.GetResourceString("Kadena.Order.OrderDateTitle"), Value = data.OrderDate }, ShippingDate = new TitleValuePair <DateTime?> { Title = resources.GetResourceString("Kadena.Order.ShippingDatePrefix"), Value = data.ShippingInfo?.ShippingDate }, Status = new TitleValuePair <string> { Title = resources.GetResourceString("Kadena.Order.StatusPrefix"), Value = genericStatus }, TotalCost = new TitleValuePair <string> { Title = resources.GetResourceString("Kadena.Order.TotalCostPrefix"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Summary + data.PaymentInfo.Shipping + data.PaymentInfo.Tax) } }, PaymentInfo = new PaymentInfo() { Date = null, // TODO payment date unknown yet PaidBy = data.PaymentInfo.PaymentMethod, PaymentDetail = string.Empty, PaymentIcon = GetPaymentMethodIcon(data.PaymentInfo.PaymentMethod), Title = resources.GetResourceString("Kadena.Order.PaymentSection"), DatePrefix = resources.GetResourceString("Kadena.Order.PaymentDatePrefix"), BUnitLabel = resources.GetResourceString("Kadena.Order.BusinessUnitLabel"), BUnitName = businessUnits.GetDistributorBusinessUnit(data.campaign != null ? data.campaign.DistributorID : 0) }, PricingInfo = new PricingInfo() { Title = resources.GetResourceString("Kadena.Order.PricingSection"), Items = new List <PricingInfoItem>() { new PricingInfoItem() { Title = resources.GetResourceString("Kadena.Order.PricingSummary"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Summary) }, new PricingInfoItem() { Title = resources.GetResourceString("Kadena.Order.PricingShipping"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Shipping) }, new PricingInfoItem() { Title = resources.GetResourceString("Kadena.Order.PricingSubtotal"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Summary + data.PaymentInfo.Shipping) }, new PricingInfoItem() { Title = resources.GetResourceString("Kadena.Order.PricingTax"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Tax) }, new PricingInfoItem() { Title = resources.GetResourceString("Kadena.Order.PricingTotals"), Value = String.Format("$ {0:#,0.00}", data.PaymentInfo.Summary + data.PaymentInfo.Shipping + data.PaymentInfo.Tax) } } }, OrderedItems = new OrderedItems() { Title = resources.GetResourceString("Kadena.Order.OrderedItemsSection"), Items = await MapOrderedItems(data.Items) } }; var mailingTypeCode = OrderItemTypeDTO.Mailing.ToString(); var hasOnlyMailingListProducts = data.Items.All(item => item.Type == mailingTypeCode); if (hasOnlyMailingListProducts) { orderDetail.ShippingInfo = new ShippingInfo { Title = resources.GetResourceString("Kadena.Order.ShippingSection"), Message = resources.GetResourceString("Kadena.Checkout.UndeliverableText") }; } else { orderDetail.ShippingInfo = new ShippingInfo { Title = resources.GetResourceString("Kadena.Order.ShippingSection"), DeliveryMethod = shoppingCart.GetShippingProviderIcon(data.ShippingInfo.Provider), Address = mapper.Map <DeliveryAddress>(data.ShippingInfo.AddressTo), Tracking = null // TODO Track your package url unknown }; orderDetail.ShippingInfo.Address.Country = localization .GetCountries() .FirstOrDefault(s => s.Code.Equals(data.ShippingInfo.AddressTo.isoCountryCode)); } if (!permissions.UserCanSeePrices()) { orderDetail.HidePrices(); } return(orderDetail); }