public PipelineExecutionResult Execute(IPipelineArgs <AddToBasketRequest, AddToBasketResponse> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            //var cart = MappingLibrary.MapPurchaseOrderToCart(subject.Request.PurchaseOrder);

            var    contactFactory = new ContactFactory();
            string userId         = contactFactory.GetContact();

            var cartServiceProvider = new CartServiceProvider();
            var createCartRequest   = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            //should it do anything???
            var cart = cartServiceProvider.CreateOrResumeCart(createCartRequest).Cart;

            var cartLine = MappingLibrary.MapOrderLineToCartLine(subject.Response.OrderLine);

            var request = new AddCartLinesRequest(cart, new Collection <CartLine> {
                cartLine
            });

            request.Properties["FromUCommerce"] = true;

            var serviceProvider = new CartServiceProvider();

            serviceProvider.AddCartLines(request);

            return(PipelineExecutionResult.Success);
        }
示例#2
0
        public ActionResult AddToBasket(AddToBasketButtonAddToBasketViewModel viewModel)
        {
            var cartServiceProvider = new CartServiceProvider();

            var    contactFactory = new ContactFactory();
            string userId         = contactFactory.GetContact();

            var createCartRequest = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            var cart = cartServiceProvider.CreateOrResumeCart(createCartRequest).Cart;

            var cartProduct = new CartProduct
            {
                ProductId = viewModel.ProductSku,
                Price     = new Price(Convert.ToDecimal(viewModel.Price), cart.CurrencyCode)
            };

            cartProduct.Properties.Add("VariantSku", viewModel.VariantSku);

            var cartLines = new ReadOnlyCollection <CartLine>(
                new Collection <CartLine> {
                new CartLine
                {
                    Product  = cartProduct,
                    Quantity = (uint)viewModel.Quantity
                }
            }
                );

            var request = new AddCartLinesRequest(cart, cartLines);

            cartServiceProvider.AddCartLines(request);

            return(Json(_miniBasketService.Refresh(), JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public PipelineExecutionResult Execute(IPipelineArgs <CreateBasketRequest, CreateBasketResponse> subject)
        {
            if (subject.Request.Properties.ContainsKey("FromUCommerce"))
            {
                if (!(bool)subject.Request.Properties["FromUCommerce"])
                {
                    return(PipelineExecutionResult.Success);
                }
            }

            if (subject.Response.PurchaseOrder == null)
            {
                return(PipelineExecutionResult.Success);
            }

            var    contactFactory = new ContactFactory();
            string userId         = contactFactory.GetContact();

            subject.Response.PurchaseOrder["CommerceConnectUserIdentifier"] = userId;

            var cartServiceProvider = new CartServiceProvider();
            var createCartRequest   = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            //should it do anything???
            cartServiceProvider.CreateOrResumeCart(createCartRequest);

            return(PipelineExecutionResult.Success);
        }
示例#4
0
        public void MapValues(PurchaseOrder purchaseOrder, CartBase cartBase)
        {
            cartBase.Status = GetOrderStatusFromProperties(purchaseOrder);

            if (IsCustomerAssigned(purchaseOrder))
            {
                cartBase.CustomerId = purchaseOrder.Customer.CustomerId.ToString();
            }

            var contactFactory = new ContactFactory();

            cartBase.UserId = contactFactory.GetContact();

            var cartBaseShopName = GetDomainForCart(purchaseOrder);

            cartBase.ShopName = cartBaseShopName;

            cartBase.ExternalId = purchaseOrder.BasketId.ToString();
            cartBase.IsLocked   = false;
            cartBase.CartType   = "Regular";

            cartBase.BuyerCustomerParty = GetBuyerCustomerParty(purchaseOrder);

            cartBase.AccountingCustomerParty = GetAccountingCustomerParty(purchaseOrder);

            cartBase.CurrencyCode = purchaseOrder.BillingCurrency.ISOCode;
        }
        private static void Seed(ContactDbContext context)
        {
            var contacts = new [] { ContactFactory.GetContact() };

            context.AddRange(contacts);
            context.SaveChanges();
        }
示例#6
0
        public JsonResult SaveContact(string guid = "")
        {
            string realName     = Request["realName"].ToString();
            string company      = Request["company"].ToString();
            string position     = Request["position"].ToString();
            string phoneNum     = Request["phoneNum"].ToString();
            string faxNum       = Request["faxNum"].ToString();
            string postCode     = Request["postCode"].ToString();
            string address      = Request["address"].ToString();
            string customerGuid = Request["customerGuid"].ToString();

            if (string.IsNullOrWhiteSpace(guid))
            {
                string userName = Request["userName"].ToString();
                string password = Request["password"].ToString();
                _contactFactory.AddCcontact(userName, password, realName, company, position, phoneNum, faxNum, address, postCode, customerGuid);
            }
            else
            {
                var contact = ContactFactory.GetContact(guid);
                contact.RealName     = realName;
                contact.Company      = company;
                contact.Position     = position;
                contact.PhoneNum     = phoneNum;
                contact.FaxNum       = faxNum;
                contact.PostCode     = postCode;
                contact.Address      = address;
                contact.CustomerGuid = customerGuid;
                _contactFactory.SaveContact(contact);
            }

            return(Json(new { result = 1 }));
        }
示例#7
0
        private Cart GetCart()
        {
            var cartServiceProvider = new CartServiceProvider();

            var    contactFactory = new ContactFactory();
            string userId         = contactFactory.GetContact();

            var createCartRequest = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            return(cartServiceProvider.CreateOrResumeCart(createCartRequest).Cart);
        }
示例#8
0
        public ActionResult ContactEdit(string guid = "")
        {
            ViewBag.customers = _customerFactory.GetAllCustomers() ?? new List <Customer>();
            Contact contact = new Contact();

            if (!string.IsNullOrWhiteSpace(guid))
            {
                contact = ContactFactory.GetContact(guid);
            }
            return(View(contact));
        }
示例#9
0
        public CommerceUser ResolveCommerceUser()
        {
            if (Tracker.Current == null || Tracker.Current.Contact == null || Tracker.Current.Contact.ContactId == Guid.Empty)
            {
                return(null);
            }

            var userName = ContactFactory.GetContact();
            var response = GetUser(userName);

            return(response.Result);
        }
示例#10
0
        public void AutoMapper_Contact_To_ContactSummary_IsValid()
        {
            var contact        = ContactFactory.GetContact();
            var contactSummary = _mapper.Map <ContactSummary>(contact);

            Assert.AreEqual(ContactFactory.ContactId, contactSummary.Id);
            Assert.AreEqual(ContactFactory.Name, contactSummary.Name);
            Assert.AreEqual(ContactFactory.Initials, contactSummary.Initials);
            Assert.AreEqual(ContactFactory.EyeColor, contactSummary.EyeColor);
            Assert.AreEqual(ContactFactory.Sport, contactSummary.Sport);
            Assert.AreEqual((int)ContactFactory.Gender, contactSummary.Gender);
            Assert.AreEqual(ContactFactory.AddressInfo, contactSummary.Address);
        }
示例#11
0
        public PipelineExecutionResult Execute(PurchaseOrder purchaseOrder)
        {
            var contactRepositoryBase = Assert.ResultNotNull(Factory.CreateObject("contactRepository", true) as ContactRepositoryBase);

            var    contactFactory = new ContactFactory();
            string userIdentifier = contactFactory.GetContact();
            var    leaseOwner     = new LeaseOwner(AnalyticsSettings.ClusterName, LeaseOwnerType.WebCluster);

            var contact = CommerceAutomationHelper.GetContact(userIdentifier);

            if (contact != null)
            {
                AddEmailAddressToContact(purchaseOrder, contact);
                contactRepositoryBase.SaveContact(contact, new ContactSaveOptions(true, leaseOwner, new TimeSpan?()));
            }

            return(PipelineExecutionResult.Success);
        }
        public PipelineExecutionResult Execute(PurchaseOrder subject)
        {
            var    cartServiceProvider = new CartServiceProvider();
            var    contactFactory      = new ContactFactory();
            string userId            = contactFactory.GetContact();
            var    createCartRequest = new CreateOrResumeCartRequest(Context.GetSiteName(), userId);

            var cart = cartServiceProvider.CreateOrResumeCart(createCartRequest).Cart;

            var orderService = new OrderServiceProvider();

            var request = new SubmitVisitorOrderRequest(cart);

            // Pass the PurchaseOrder object to Commerce Connect, so it can set use the data for
            // the page events, etc.
            request.Properties.Add("UCommerceOrder", subject);

            var result = orderService.SubmitVisitorOrder(request);

            return(PipelineExecutionResult.Success);
        }
示例#13
0
 public string GetContact()
 {
     return(_contactFactory.GetContact());
 }