private GdoOrderEmailSendData_V01 getDataDeclinedEmailConfirmation(Order order, string emailType, string orderNumber)
        {
            var member = (MembershipUser <DistributorProfileModel>)Membership.GetUser();
            ////Get the order items

            GdoOrderEmailSendData_V01 orderData = null;

            orderData = new GdoOrderEmailSendData_V01()
            {
                //Dummy Data
                EmailType   = emailType,
                OrderId     = orderNumber,// "0199",
                Locale      = order.Locale,
                Distributor = new Distributor
                {
                    Contact =
                        new ContactInfo
                    {
                        Email       = order.Email,
                        PhoneNumber = order.Shipment.Phone
                    },
                    DistributorId = order.DistributorID,
                    FirstName     = member.Value.FirstName,
                    LastName      = member.Value.LastName,
                    Locale        = order.Locale,
                    MiddleName    = member.Value.MiddleName
                },
                OrderSubmittedDate          = order.ReceivedDate,
                OrderSubmittedDateSpecified = true
            };
            orderData.Messages = this.GetOrderMessages(order, orderNumber).ToArray();
            return(orderData);
        }
        public bool SendEmailConfirmation(string orderNumber, string paymentType)
        {
            var proxy = ServiceClientProvider.GetCommunicationServiceProxy();

            try
            {
                var holder = OrderProvider.GetPaymentGatewayOrder(orderNumber);
                if (holder != null)
                {
                    GdoOrderEmailSendData_V01 dataToSend = new GdoOrderEmailSendData_V01();
                    switch (paymentType)
                    {
                    case "Abandoned":
                    case "PaymentDeclined":
                    case "PaymentDeclinedOldOrder":
                    case "PaymentDeclinedMaxTries":
                        dataToSend = getDataDeclinedEmailConfirmation(holder.BTOrder, EmailDeclinedType, orderNumber);
                        break;

                    case "OrderSubmitted":
                        dataToSend = getDataEmailConfirmation(holder.BTOrder, EmailConfirmationType, orderNumber);
                        break;

                    case "Processing":
                        dataToSend = getDataInProcessingEmailConfirmation(holder.BTOrder, EmailInProcessingType, orderNumber);
                        break;
                    }

                    var request = new TriggeredSendRequestRequest_V01();
                    request.Data = dataToSend;
                    var response = proxy.SendTriggeredMessage(new SendTriggeredMessageRequest(request)).SendTriggeredMessageResult;
                    if (response.Status == ServiceResponseStatusType.Success)
                    {
                        return(true);
                    }
                    else
                    {
                        var ex = new ApplicationException(string.Format("CommunicationSvcProvider: Error sending SendTriggeredMessage order:{0}.", orderNumber));
                        WebUtilities.LogServiceExceptionWithContext(ex, proxy);
                        return(false);
                    }
                }
                return(false);
            }
            catch (Exception ex)
            {
                ex = new ApplicationException(string.Format("CommunicationSvcProvider: Error sending SendTriggeredMessage order:{0}.", orderNumber), ex);
                WebUtilities.LogServiceExceptionWithContext(ex, proxy);
                return(false);
            }
        }
        private GdoOrderEmailSendData_V01 getDataEmailConfirmation(Order order, string emailType, string orderNumber)
        {
            var member = (MembershipUser <DistributorProfileModel>)Membership.GetUser();
            GdoOrderEmailSendData_V01 orderData = null;

            if (order.EmailInfo == null)
            {
                order.EmailInfo = new ServiceProvider.SubmitOrderBTSvc.EmailInfo();
            }
            orderData = new GdoOrderEmailSendData_V01()
            {
                EmailType             = emailType,
                OrderId               = orderNumber,
                PaymentType           = GetPaymentType(order),
                BillingAddress        = GetAddress(order),
                DataKey               = orderNumber,
                DeliveryTimeEstimated = order.EmailInfo.DeliveryTimeEstimated ?? string.Empty,
                Distributor           = new Distributor
                {
                    Contact =
                        new ContactInfo
                    {
                        Email       = order.Email,
                        PhoneNumber = order.Shipment.Phone
                    },
                    DistributorId = order.DistributorID,
                    FirstName     = member.Value.FirstName,
                    LastName      = member.Value.LastName,
                    Locale        = order.Locale,
                    MiddleName    = member.Value.MiddleName,
                },
                Shipment = new Shipment
                {
                    FirstName      = order.Shipment.Recipient,
                    LastName       = "",
                    MiddleName     = "",
                    PickupName     = order.Shipment.Recipient,
                    ShippingDate   = DateTime.Now,
                    ShippingMethod = order.Shipment.ShippingMethodID
                },
                ShippingAddress             = GetAddress(order),
                SpecialInstructions         = order.EmailInfo.SpecialInstructions ?? string.Empty,
                Payments                    = GetOrderPayments(order, orderNumber).ToArray(),
                GrandTotal                  = order.Pricing.AmountDue,
                OrderMonth                  = order.OrderMonth,
                OrderSubmittedDate          = DateTime.Parse(DateUtils.GetCurrentLocalTime(order.Locale).ToString()),
                OrderSubmittedDateSpecified = true,
                Tax                     = order.Pricing.TaxAmount,
                Logistics               = Convert.ToDecimal(order.Pricing.LogisticsCharge),
                ICMS                    = Convert.ToDecimal(order.Pricing.IcmsTax),
                IPI                     = Convert.ToDecimal(order.Pricing.IpiTax),
                TotalCollateralRetail   = Convert.ToDecimal(order.Pricing.TotalCollateralRetail),
                TotalDiscountAmount     = Convert.ToDecimal(order.Pricing.DiscountedItemsTotal),
                TotalDiscountPercentage = Convert.ToDecimal(order.DiscountPercentage),
                PickupLocation          = order.EmailInfo.PickUpLocation,
                PickupTime              = string.Empty,
                TotalDiscountRetail     = Convert.ToDecimal(order.Pricing.TotalCollateralRetail),
                TotalEarnBase           = Convert.ToDecimal("0"),// calculated value
                TotalPackagingHandling  = order.Pricing.PHAmount,
                TotalProductRetail      = Convert.ToDecimal(order.Pricing.TotalProductRetail),
                TotalRetail             = Convert.ToDecimal(order.Pricing.TotalProductRetail),
                TotalPromotionalRetail  = Convert.ToDecimal(order.Pricing.TotalPromotionalRetail),
                TotalVolumePoints       = order.Pricing.VolumePoints,
                VolumePointsRate        = order.Pricing.VolumePointsRate ?? string.Empty,
                ShippingHandling        = order.Pricing.PHAmount,
                InvoiceOption           = order.EmailInfo.InvoiceOption,
                MarketingFund           = Convert.ToDecimal(order.Pricing.TotalMarketingFund),
                PaymentOption           = order.EmailInfo.PaymentOption,
                LocalTaxCharge          = Convert.ToDecimal(order.Pricing.LocalTaxCharge),
                TaxedNet                = Convert.ToDecimal(order.Pricing.TaxedNet),
                PurchaseType            = order.EmailInfo.PurchaseType ?? string.Empty,// HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform),order.PurchaseCategory.ToString(), CultureInfo.CurrentCulture)as string
                HFFMessage              = order.EmailInfo.HffMessage ?? string.Empty,
                Locale                  = order.Locale,
                Messages                = GetOrderMessages(order, orderNumber).ToArray()
            };
            orderData.OrderLines = GetOrderSkus(order, orderNumber).ToArray();
            return(orderData);
        }
        private static GdoOrderEmailSendData_V01 ConvertInvoiceToSendData(InvoiceModel invoice)
        {
            var locale        = CultureInfo.CurrentCulture.Name;
            var uniqueNumnber = DateTime.Now.ToString().Replace("-", string.Empty).Replace(":", string.Empty).
                                Replace("AM", string.Empty).Replace("/", string.Empty).Replace(" ", string.Empty).Replace("PM", string.Empty);
            GdoOrderEmailSendData_V01 orderData = null;

            orderData = new GdoOrderEmailSendData_V01();

            orderData.EmailType            = "InvoiceConfirmation";
            orderData.OrderId              = !HLConfigManager.Configurations.DOConfiguration.AddrerssVelidationInvoice ? invoice.DisplayMemberInvoiceNumber : uniqueNumnber + invoice.DisplayMemberInvoiceNumber;
            orderData.PaymentType          = GdoPaymentTypes.CreditCard;
            orderData.BillingAddress       = GetEmailAddress(invoice.MemberAddress);
            orderData.BillingAddress.Line1 = !HLConfigManager.Configurations.DOConfiguration.AddrerssVelidationInvoice
                ? invoice.MemberPhoneNumber
                : orderData.BillingAddress.Line1;
            orderData.DataKey = uniqueNumnber + invoice.DisplayMemberInvoiceNumber;
            orderData.DeliveryTimeEstimated = string.Empty;
            orderData.Distributor           = new Distributor
            {
                Contact =
                    new ContactInfo
                {
                    Email       = invoice.OtherEmail ?? invoice.Email ?? string.Empty,
                    PhoneNumber = invoice.Phone ?? string.Empty
                },
                DistributorId = invoice.MemberId ?? string.Empty,
                FirstName     = invoice.FirstName ?? string.Empty,
                LastName      = invoice.LastName ?? string.Empty,
                Locale        = locale,
                MiddleName    = string.Empty,
            };
            orderData.Shipment = new Shipment
            {
                FirstName      = string.Empty,
                LastName       = string.Empty,
                MiddleName     = string.Empty,
                PickupName     = string.Empty,
                ShippingDate   = DateTime.Now,
                ShippingMethod = invoice.ShippingMethod ?? string.Empty
            };

            orderData.ShippingAddress             = GetEmailAddress(invoice.Address);
            orderData.SpecialInstructions         = invoice.Notes ?? string.Empty;
            orderData.Payments                    = GetEmailPayments(invoice).ToArray();
            orderData.GrandTotal                  = invoice.InvoicePrice.TotalDue;
            orderData.GrandTotalSpecified         = true;
            orderData.OrderMonth                  = invoice.DisplayMemberInvoiceNumber;
            orderData.OrderSubmittedDate          = invoice.InvoiceDate;
            orderData.OrderSubmittedDateSpecified = true;
            orderData.Tax                              = invoice.InvoicePrice.CalcTaxAmount;
            orderData.TaxSpecified                     = true;
            orderData.Logistics                        = Convert.ToDecimal(invoice.InvoicePrice.ShippingAmount);
            orderData.LogisticsSpecified               = true;
            orderData.ICMS                             = Convert.ToDecimal(invoice.InvoicePrice.MemberTax);
            orderData.ICMSSpecified                    = true;
            orderData.IPI                              = Convert.ToDecimal(0);
            orderData.IPISpecified                     = true;
            orderData.TotalCollateralRetail            = Convert.ToDecimal(invoice.InvoicePrice.TotalYourPrice);
            orderData.TotalCollateralRetailSpecified   = true;
            orderData.TotalDiscountAmount              = Convert.ToDecimal(invoice.InvoicePrice.CalcDiscountAmount);
            orderData.TotalDiscountAmountSpecified     = true;
            orderData.TotalDiscountPercentage          = Convert.ToDecimal(invoice.InvoicePrice.DiscountPercentage);
            orderData.TotalDiscountPercentageSpecified = true;
            orderData.PickupLocation                   = string.Empty;
            orderData.PickupTime                       = string.Empty;
            orderData.TotalDiscountRetail              = Convert.ToDecimal(invoice.InvoicePrice.SubTotal);
            orderData.TotalDiscountRetailSpecified     = true;
            orderData.TotalEarnBase                    = Convert.ToDecimal(invoice.InvoicePrice.TotalEarnBase); // calculated value
            orderData.TotalEarnBaseSpecified           = true;
            orderData.TotalPackagingHandling           = invoice.InvoicePrice.ShippingAmount;
            orderData.TotalPackagingHandlingSpecified  = true;
            orderData.TotalProductRetail               = Convert.ToDecimal(invoice.InvoicePrice.Profit);
            orderData.TotalProductRetailSpecified      = true;
            orderData.TotalRetail                      = Convert.ToDecimal(invoice.InvoicePrice.MemberTotal);
            orderData.TotalRetailSpecified             = true;
            orderData.TotalPromotionalRetail           = Convert.ToDecimal(0);
            orderData.TotalPromotionalRetailSpecified  = true;
            orderData.TotalVolumePoints                = invoice.InvoicePrice.TotalVolumePoints;
            orderData.TotalVolumePointsSpecified       = true;
            orderData.VolumePointsRate                 = string.Empty;
            orderData.ShippingHandling                 = HLConfigManager.Configurations.DOConfiguration.AddrerssVelidationInvoice ? invoice.InvoicePrice.ShippingAmount : invoice.InvoicePrice.CalcShippingAmount;
            orderData.ShippingHandlingSpecified        = true;
            orderData.SubTotal                         = Convert.ToDecimal(invoice.InvoicePrice.SubTotal);
            orderData.SubTotalSpecified                = true;
            orderData.InvoiceOption                    = invoice.DisplayInvoiceType;
            orderData.MarketingFund                    = Convert.ToDecimal(invoice.InvoicePrice.MemberFreight);
            orderData.MarketingFundSpecified           = true;
            orderData.PaymentOption                    = HLConfigManager.Configurations.DOConfiguration.AddrerssVelidationInvoice ? "" : invoice.DisplayPaymentType;
            orderData.LocalTaxCharge                   = Convert.ToDecimal(invoice.InvoicePrice.TaxAmount);
            orderData.LocalTaxChargeSpecified          = true;
            orderData.TaxedNet                         = Convert.ToDecimal(0);
            orderData.TaxedNetSpecified                = true;
            orderData.PurchaseType                     = !HLConfigManager.Configurations.DOConfiguration.AddrerssVelidationInvoice ? invoice.DisplayReceiptChannel : invoice.Type ?? string.Empty;
            orderData.HFFMessage                       = invoice.DisplayInvoiceStatus;
            orderData.Locale                           = locale;
            orderData.Messages                         = GetMessages(invoice).ToArray();
            orderData.OrderLines                       = GetEmailSkuLines(invoice, uniqueNumnber).ToArray();

            return(orderData);
        }