コード例 #1
0
        private void UpdateSpecificTransactionFromTrialToLive(
            ITransactionService transactionService,
            ISerializer serializer,
            ISkuService skuService,
            services service,
            Transaction transaction)
        {
            var basket     = serializer.GetFromXml <Basket>(transaction.PurchaseXml);
            var orderLines = new List <OrderLine>();

            foreach (var lineitem in basket.Lines)
            {
                var sku  = skuService.GetById(lineitem.SkuId.Value);
                var line = new OrderLine
                {
                    ProductCode     = sku.Code,
                    SampleIndicator = "Y",
                    OrderQuantity   = lineitem.Quantity.GetValueOrDefault(0).ToString(),
                    Quantity        = lineitem.Quantity.GetValueOrDefault(0).ToString(),
                    OrderLineNumber = "-1"
                };
                orderLines.Add(line);
            }
            var checkoutService = GetService <ICheckoutService>();
            var checkout        = checkoutService.GetReadOnlyCheckoutFromXml(transaction.CheckOutXml);
            var deliveryAddress = checkout.GetAddress(AddressType.Delivery);
            var countryService  = GetService <ICountryService>();
            var country         = countryService.GetById(deliveryAddress.CountryId.Value);
            var order           = new Order
            {
                DeliveryAddress = new Address
                {
                    Address1               = deliveryAddress.Line1,
                    Address2               = deliveryAddress.Line2,
                    Address3               = deliveryAddress.Town,
                    Address4               = deliveryAddress.County,
                    Postcode               = deliveryAddress.Postcode,
                    CountryCode            = country.ISO3166Alpha2,
                    DomesticTradeIndicator = "D",
                    Name =
                        (deliveryAddress.FirstName + " " + deliveryAddress.LastName + " " + deliveryAddress.Company ??
                         "").Trim()
                },
                PriorityOrderIndicator = "N",
                Email = checkout.Person.EmailAddress,
                CustomerOrderReference = transaction.OrderNumber
            };
            var customerRef = "119303";

            switch (ColonyContext.Current.CurrentSite.SiteKey.ToLowerInvariant())
            {
            case "harlequin":
                customerRef = "119303";
                break;

            case "sanderson":
                customerRef = "102508";
                break;

            case "zoffany":
                customerRef = "129909";
                break;

            case "scion":
                customerRef = "122375";
                break;

            case "morris":
                customerRef = "129910";
                break;

            case "wg":
                customerRef = "129912";
                break;

            case "anthology":
                customerRef = "134512";
                break;
            }
            transaction.SetValue("MertexResponse", service.B2CCreateBasket(customerRef, orderLines.ToArray(), order));
            transaction.SetValue("Mertex_UpdatedFromTrialToLive", true);
            transactionService.Update(transaction);
        }