public MemberInvoice ConvertToMemberInvoice(InvoiceModel invoiceModel)
        {
            MemberInvoiceStatus status;

            if (!Enum.TryParse(invoiceModel.Status, true, out status))
            {
                LoggerHelper.Error("ConvertToMemberInvoice - InvoiceProvider: InvoiceStatus parse error");
            }

            MemberInvoiceType type;

            if (!Enum.TryParse(invoiceModel.Type, true, out type))
            {
                LoggerHelper.Error("ConvertToMemberInvoice - InvoiceProvider: InvoiceType parse error");
            }

            var memberInvoice = new MemberInvoice
            {
                Address = null != invoiceModel.Address
                    ? ConvertToMemberInvoiceAddress(invoiceModel.Address)
                    : null,
                CreatedDate         = invoiceModel.CreatedDate,
                CustomerId          = invoiceModel.CustomerId,
                Email               = invoiceModel.Email,
                FirstName           = invoiceModel.FirstName,
                LastName            = invoiceModel.LastName,
                Id                  = invoiceModel.Id,
                InvoiceDate         = invoiceModel.InvoiceDate,
                InvoiceType         = type,
                MemberId            = invoiceModel.MemberId.ToUpper(),
                MemberInvoiceNumber = invoiceModel.MemberInvoiceNumber,
                Notes               = invoiceModel.Notes,
                OrderId             = invoiceModel.OrderId,
                Phone               = invoiceModel.Phone,
                Price               =
                    invoiceModel.InvoicePrice != null?ConvertToMemberInvoicePrice(invoiceModel.InvoicePrice) : null,
                        Items =
                            invoiceModel.InvoiceLines != null && invoiceModel.InvoiceLines.Any()
                        ? ConvertToMemberInvoiceItems(invoiceModel.InvoiceLines, invoiceModel.Id)
                        : null,
                        Status                 = status,
                        ShippingMethod         = invoiceModel.ShippingMethod,
                        OrderSource            = invoiceModel.OrderSource,
                        PriceType              = invoiceModel.PricingType,
                        Source                 = invoiceModel.Source,
                        InvoiceShipToAddress   = invoiceModel.InvoiceShipToAddress,
                        IsFaceToFace           = invoiceModel.IsFaceToFace,
                        ApplicationCountryCode = invoiceModel.ApplicationCountryCode,
                        IsPurchased            = invoiceModel.isPurchased,
                        IsProfitable           = invoiceModel.isProfitable,
                        ReceiptChannel         = convertReceiptChannel(invoiceModel.ReceiptChannel),
                        PaymentType            = invoiceModel.PaymentType
            };

            return(memberInvoice);
        }
        public InvoiceModel ConvertToInvoiceModel(MemberInvoice memberInvoice, string locale)
        {
            var invoiceConverter = new InvoiceConverter();
            var invoiceLoader    = new InvoiceLoader(invoiceConverter);
            var invoiceProvider  = new InvoiceProvider(invoiceLoader, invoiceLoader, invoiceConverter);

            return(new InvoiceModel
            {
                Address = memberInvoice.Address != null?ConvertToInvoiceAddress(memberInvoice.Address) : null,
                              CreatedDate = memberInvoice.CreatedDate,
                              CustomerId = memberInvoice.CustomerId,
                              Email = memberInvoice.Email,
                              MemberInvoiceNumber = memberInvoice.MemberInvoiceNumber,
                              FirstName = memberInvoice.FirstName,
                              LastName = memberInvoice.LastName,
                              Id = memberInvoice.Id,
                              InvoiceDate = memberInvoice.InvoiceDate,
                              Phone = memberInvoice.Phone,
                              OrderId = memberInvoice.OrderId,
                              Status = memberInvoice.Status.ToString(),
                              Total = memberInvoice.Price != null ? memberInvoice.Price.TotalDue : 0,
                              DisplayTotal = memberInvoice.Price != null?memberInvoice.Price.TotalDue.FormatPrice() : "0.00",
                                                 Notes = memberInvoice.Notes,
                                                 MemberId = memberInvoice.MemberId.ToUpper(),
                                                 TotalVolumePoints = memberInvoice.Price != null ? memberInvoice.Price.TotalVolumePoints : 0,
                                                 Type = memberInvoice.InvoiceType.ToString(),
                                                 ShippingMethod = memberInvoice.ShippingMethod,
                                                 InvoiceShipToAddress = memberInvoice.InvoiceShipToAddress,
                                                 PricingType = memberInvoice.PriceType,
                                                 OrderSource = memberInvoice.OrderSource,
                                                 Source = memberInvoice.Source,
                                                 ReceiptChannel = memberInvoice.ReceiptChannel,
                                                 DisplayReceiptChannel = invoiceProvider.GetDisplayReceiptChannel(locale, memberInvoice.ReceiptChannel.ToString()),
                                                 IsFaceToFace = memberInvoice.IsFaceToFace,
                                                 InvoicePrice = memberInvoice.Price != null?ConvertToInvoicePrice(memberInvoice.Price) : null,
                                                                    IsGdoMemberPricing = memberInvoice.InvoiceType.ToString() == "Distributor",
                                                                    Vat = (string.IsNullOrEmpty(memberInvoice.Vat) && locale.Substring(3) == "GB")
                    ? (string)
                                                                          HttpContext.GetLocalResourceObject("/Views/Invoice/Display.cshtml",
                                                                                                             "VatEmptyValue", CultureInfo.CurrentCulture)
                    : memberInvoice.Vat,
                                                                    ApplicationCountryCode = memberInvoice.ApplicationCountryCode,
                                                                    DisplayInvoiceStatus = invoiceProvider.GetDisplayInvoiceStatus(locale, memberInvoice.Status.ToString()),
                                                                    DisplayPaymentType = invoiceProvider.GetDisplayPaymentType(locale, memberInvoice.PaymentType.ToString()),
                                                                    DisplayInvoiceType = invoiceProvider.GetDisplayInvoiceType(locale, memberInvoice.InvoiceType.ToString()),
                                                                    isProfitable = memberInvoice.IsProfitable,
                                                                    isPurchased = memberInvoice.IsPurchased,
                                                                    PaymentType = memberInvoice.PaymentType,
            });
        }