private ConfirmationEmailViewModel MapPurchaseOrder(Ucommerce.EntitiesV2.PurchaseOrder purchaseOrder, ConfirmationEmailViewModel confirmationEmailViewModel)
        {
            confirmationEmailViewModel.BillingAddress  = purchaseOrder.BillingAddress ?? new Ucommerce.EntitiesV2.OrderAddress();
            confirmationEmailViewModel.ShipmentAddress = purchaseOrder.GetShippingAddress("Shipment") ?? new Ucommerce.EntitiesV2.OrderAddress();

            foreach (var orderLine in purchaseOrder.OrderLines)
            {
                var orderLineCurrencyIsoCode = orderLine.PurchaseOrder.BillingCurrency.ISOCode;
                var orderLineModel           = new ConfirmationEmailOrderLine
                {
                    ProductName       = orderLine.ProductName,
                    Sku               = orderLine.Sku,
                    VariantSku        = orderLine.VariantSku,
                    Total             = new Money(orderLine.Total.GetValueOrDefault(), orderLineCurrencyIsoCode).ToString(),
                    Tax               = new Money(orderLine.VAT, orderLineCurrencyIsoCode).ToString(),
                    Price             = new Money(orderLine.Price, orderLineCurrencyIsoCode).ToString(),
                    PriceWithDiscount = new Money(orderLine.Price - orderLine.Discount, orderLineCurrencyIsoCode).ToString(),
                    Quantity          = orderLine.Quantity,
                    Discount          = orderLine.Discount
                };
                confirmationEmailViewModel.OrderLines.Add(orderLineModel);
            }

            var currencyIsoCode = purchaseOrder.BillingCurrency.ISOCode;

            confirmationEmailViewModel.DiscountTotal  = new Money(purchaseOrder.DiscountTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.DiscountAmount = purchaseOrder.DiscountTotal.GetValueOrDefault();
            confirmationEmailViewModel.SubTotal       = new Money(purchaseOrder.SubTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.OrderTotal     = new Money(purchaseOrder.OrderTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.TaxTotal       = new Money(purchaseOrder.TaxTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.ShippingTotal  = new Money(purchaseOrder.ShippingTotal.GetValueOrDefault(), currencyIsoCode).ToString();
            confirmationEmailViewModel.PaymentTotal   = new Money(purchaseOrder.PaymentTotal.GetValueOrDefault(), currencyIsoCode).ToString();

            confirmationEmailViewModel.OrderNumber  = purchaseOrder.OrderNumber;
            confirmationEmailViewModel.CustomerName = purchaseOrder.Customer.FirstName;

            var shipment = purchaseOrder.Shipments.FirstOrDefault();

            if (shipment != null)
            {
                confirmationEmailViewModel.ShipmentName   = shipment.ShipmentName;
                confirmationEmailViewModel.ShipmentAmount = purchaseOrder.ShippingTotal.GetValueOrDefault();
            }

            var payment = purchaseOrder.Payments.FirstOrDefault();

            if (payment != null)
            {
                confirmationEmailViewModel.PaymentName   = payment.PaymentMethodName;
                confirmationEmailViewModel.PaymentAmount = purchaseOrder.PaymentTotal.GetValueOrDefault();
            }

            return(confirmationEmailViewModel);
        }
        private static void MapAddresses(Ucommerce.EntitiesV2.PurchaseOrder purchaseOrder, BasketPreviewViewModel basketPreviewViewModel)
        {
            if (purchaseOrder.BillingAddress != null)
            {
                if (!purchaseOrder.BillingAddress.FirstName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.FirstName = purchaseOrder.BillingAddress.FirstName;
                }

                if (!purchaseOrder.BillingAddress.LastName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.LastName = purchaseOrder.BillingAddress.LastName;
                }

                if (!purchaseOrder.BillingAddress.EmailAddress.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.EmailAddress = purchaseOrder.BillingAddress.EmailAddress;
                }

                if (!purchaseOrder.BillingAddress.PhoneNumber.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.PhoneNumber = purchaseOrder.BillingAddress.PhoneNumber;
                }

                if (!purchaseOrder.BillingAddress.MobilePhoneNumber.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.MobilePhoneNumber = purchaseOrder.BillingAddress.MobilePhoneNumber;
                }

                if (!purchaseOrder.BillingAddress.Line1.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.Line1 = purchaseOrder.BillingAddress.Line1;
                }

                if (!purchaseOrder.BillingAddress.Line2.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.Line2 = purchaseOrder.BillingAddress.Line2;
                }

                if (!purchaseOrder.BillingAddress.PostalCode.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.PostalCode = purchaseOrder.BillingAddress.PostalCode;
                }

                if (!purchaseOrder.BillingAddress.City.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.City = purchaseOrder.BillingAddress.City;
                }

                if (!purchaseOrder.BillingAddress.State.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.State = purchaseOrder.BillingAddress.State;
                }

                if (!purchaseOrder.BillingAddress.Attention.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.Attention = purchaseOrder.BillingAddress.Attention;
                }

                if (!purchaseOrder.BillingAddress.CompanyName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.CompanyName = purchaseOrder.BillingAddress.CompanyName;
                }

                if (purchaseOrder.BillingAddress.Country.CountryId > 0)
                {
                    basketPreviewViewModel.BillingAddress.Country.CountryId = purchaseOrder.BillingAddress.Country.CountryId;
                }

                if (!purchaseOrder.BillingAddress.Country.Name.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.BillingAddress.Country.Name = purchaseOrder.BillingAddress.Country.Name;
                }
            }

            var shipmentAddress = purchaseOrder.GetShippingAddress(Ucommerce.Constants.DefaultShipmentAddressName);

            if (shipmentAddress != null)
            {
                if (!shipmentAddress.FirstName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.FirstName = shipmentAddress.FirstName;
                }

                if (!shipmentAddress.LastName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.LastName = shipmentAddress.LastName;
                }

                if (!shipmentAddress.EmailAddress.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.EmailAddress = shipmentAddress.EmailAddress;
                }

                if (!shipmentAddress.PhoneNumber.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.PhoneNumber = shipmentAddress.PhoneNumber;
                }

                if (!shipmentAddress.MobilePhoneNumber.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.MobilePhoneNumber = shipmentAddress.MobilePhoneNumber;
                }

                if (!shipmentAddress.Line1.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.Line1 = shipmentAddress.Line1;
                }

                if (!shipmentAddress.Line2.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.Line2 = shipmentAddress.Line2;
                }

                if (!shipmentAddress.PostalCode.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.PostalCode = shipmentAddress.PostalCode;
                }

                if (!shipmentAddress.City.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.City = shipmentAddress.City;
                }

                if (!shipmentAddress.State.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.State = shipmentAddress.State;
                }

                if (!shipmentAddress.Attention.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.Attention = shipmentAddress.Attention;
                }

                if (!shipmentAddress.CompanyName.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.CompanyName = shipmentAddress.CompanyName;
                }

                if (shipmentAddress.Country.CountryId > 0)
                {
                    basketPreviewViewModel.ShipmentAddress.Country.CountryId = shipmentAddress.Country.CountryId;
                }

                if (!shipmentAddress.Country.Name.IsNullOrWhitespace())
                {
                    basketPreviewViewModel.ShipmentAddress.Country.Name = shipmentAddress.Country.Name;
                }
            }
        }