示例#1
0
        public Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart)
        {
            if (cart.Name.Equals(DefaultWishListName))
            {
                return(new Dictionary <ILineItem, List <ValidationIssue> >());
            }

            var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >();

            cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator);
            cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor);
            cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor);

            ApplyDiscounts(cart);

            // Try to validate gift items inventory and don't catch validation issues.
            cart.UpdateInventoryOrRemoveLineItems((item, issue) =>
            {
                if (!item.IsGift)
                {
                    validationIssues.AddValidationIssues(item, issue);
                }
                else
                {
                    validationIssues.AddValidationIssues(item, ValidationIssue.RemovedGiftDueToInsufficientQuantityInInventory);
                }
            }, _inventoryProcessor);

            return(validationIssues);
        }
示例#2
0
        public virtual CustomerContact GetCustomerContact(string email)
        {
            if (email == null)
            {
                throw new ArgumentNullException("email");
            }

            CustomerContact contact = null;
            SiteUser        user    = GetUser(email);

            if (user != null)
            {
                contact = _customerContext.GetContactById(new Guid(user.Id));
            }

            return(contact);
        }
示例#3
0
        public Dictionary <ILineItem, List <ValidationIssue> > ValidateCart(ICart cart)
        {
            if (cart.Name.Equals(DefaultWishListName))
            {
                return(new Dictionary <ILineItem, List <ValidationIssue> >());
            }

            var validationIssues = new Dictionary <ILineItem, List <ValidationIssue> >();

            cart.ValidateOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _lineItemValidator);
            cart.UpdatePlacedPriceOrRemoveLineItems(_customerContext.GetContactById(cart.CustomerId), (item, issue) => validationIssues.AddValidationIssues(item, issue), _placedPriceProcessor);
            cart.UpdateInventoryOrRemoveLineItems((item, issue) => validationIssues.AddValidationIssues(item, issue), _inventoryProcessor);

            cart.ApplyDiscounts(_promotionEngine, new PromotionEngineSettings());

            return(validationIssues);
        }
示例#4
0
        public ActionResult Index(OrderConfirmationRegistrationBlock currentBlock)
        {
            OrderConfirmationRegistrationModel model = null;
            var orderNumber = ControllerContext.ParentActionViewContext.ViewData["OrderNumber"] as int? ?? -1;
            var contactId   = ControllerContext.ParentActionViewContext.ViewData["ContactId"] as Guid? ?? Guid.Empty;
            var order       = _orderRepository.Load <IPurchaseOrder>(orderNumber);

            if (order == null || _customerContext.GetContactById(order.CustomerId) != null)
            {
                return(null);
            }

            ApplicationUser user = UserService.GetUser(order.GetFirstForm().Payments.First().BillingAddress.Email);

            if (user != null)
            {
                model = new OrderConfirmationRegistrationModel
                {
                    CurrentBlock = currentBlock,
                    FormModel    = new OrderConfirmationRegistrationFormModel
                    {
                        OrderNumber = orderNumber,
                        ContactId   = contactId
                    }
                };

                return(PartialView(model.FormModel));
            }

            model = new OrderConfirmationRegistrationModel
            {
                CurrentBlock = currentBlock,
                FormModel    = new OrderConfirmationRegistrationFormModel
                {
                    OrderNumber = orderNumber,
                    ContactId   = contactId
                }
            };

            return(PartialView("NewCustomer", model.FormModel));
        }
示例#5
0
        private bool CheckForOnHoldBudgets()
        {
            var currentCustomer = _customerContext.GetContactById(_customerContext.CurrentContactId);

            if (currentCustomer?.ContactOrganization != null)
            {
                var subOrganizationId = new Guid(currentCustomer.ContactOrganization.PrimaryKeyId.Value.ToString());

                var purchaserBudget = _budgetService.GetCustomerCurrentBudget(subOrganizationId, _customerContext.CurrentContactId);
                if (purchaserBudget != null)
                {
                    if (purchaserBudget.Status.Equals(Constants.BudgetStatus.OnHold))
                    {
                        return(true);
                    }
                }

                var suborganizationCurrentBudget = _budgetService.GetCurrentOrganizationBudget(subOrganizationId);
                if (suborganizationCurrentBudget != null)
                {
                    if (suborganizationCurrentBudget.Status.Equals(Constants.BudgetStatus.OnHold))
                    {
                        return(true);
                    }
                }

                var organizationCurrentBudget = _budgetService.GetCurrentOrganizationBudget(_organizationService.GetSubOrganizationById(subOrganizationId.ToString()).ParentOrganizationId);
                if (organizationCurrentBudget != null)
                {
                    if (organizationCurrentBudget.Status.Equals(Constants.BudgetStatus.OnHold))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }