Exemple #1
0
        public override Task <Sitecore.Commerce.Plugin.Customers.Customer> Run(Sitecore.Commerce.Plugin.Customers.Customer customer, CommercePipelineExecutionContext context)
        {
            if (customer == null || !customer.HasComponent <CustomerDetailsComponent>())
            {
                return(Task.FromResult(customer));
            }
            var details       = customer.GetComponent <CustomerDetailsComponent>();
            var customDetails = new CustomerExtended();

            foreach (EntityView view in details.View.ChildViews)
            {
                foreach (ViewProperty viewProperty in view.Properties)
                {
                    if (viewProperty.Name == nameof(CustomerExtended.ReceiveEmailUpdates))
                    {
                        customDetails.ReceiveEmailUpdates = Convert.ToBoolean(view.GetPropertyValue(viewProperty.Name));
                    }
                    if (viewProperty.Name == nameof(CustomerExtended.Company))
                    {
                        customDetails.Company = view.GetPropertyValue(viewProperty.Name)?.ToString();
                    }
                }
            }
            context.Logger.LogDebug($"Executing TranslateEntityViewToCustomerBlock for customer special attributes");
            customer.SetComponent(customDetails);
            return(Task.FromResult(customer));
        }
Exemple #2
0
        public ActionResult <CustomerExtended> Get(string id)
        {
            CustomerExtended  Result = null;
            CU_B_ADDRESS_BOOK Item   = DBContext.CU_B_ADDRESS_BOOK.FirstOrDefault(E => E.CUSTOMER_CODE == id);

            if (Item == null)
            {
                throw new NotFoundException(string.Format("No customer found with key: '{0}'", id));
            }

            Result = EntityMapper.Map <CustomerExtended, CU_B_ADDRESS_BOOK>(DBContext, Item, Item.CU_B_ADDRESS_BOOK_EXT_AUS);

            return(Result);
        }
Exemple #3
0
        public ActionResult <CustomerExtended> ConvertFromLead(string xid)
        {
            CustomerExtended  Result = null;
            CU_B_LEAD_EXT_AUS Item   = DBContext.CU_B_LEAD_EXT_AUS.FirstOrDefault(E => E.XID == xid);

            if (Item == null)
            {
                throw new NotFoundException(string.Format("No lead found with xid: '{0}'", xid));
            }

            Result = EntityMapper.Map <CustomerExtended, CU_B_LEAD_EXT_AUS>(DBContext, Item);

            Result.CustomerTypeCode = "QL";
            Result.StatusCode       = "00";       //Force status to Active to avoid FOX issues

            return(Result);
        }
Exemple #4
0
        public virtual async Task <Sitecore.Commerce.Plugin.Customers.Customer> Process(CommerceContext commerceContext, string customerID, bool subscribeEmail, string company)
        {
            try
            {
                var customerEntity = await _getCustomerCommand.Process(commerceContext, customerID);

                if (customerEntity != null)
                {
                    var customerEntityView = await _getEntityViewCommand.Process(commerceContext, customerEntity.Id, "Master", "", "");

                    var composerEditView = customerEntityView.ChildViews.Where(x => x.Name == "Details").FirstOrDefault() as EntityView;
                    if (composerEditView != null)
                    {
                        commerceContext.Logger.LogDebug($"Edit customer detail view loaded: {DateTime.Now}");
                        var updatedCustomerEntity = await _findEntityCommand.Process(commerceContext, typeof(Sitecore.Commerce.Plugin.Customers.Customer), composerEditView.EntityId) as Sitecore.Commerce.Plugin.Customers.Customer;

                        var customDetails = new CustomerExtended();
                        customDetails.ReceiveEmailUpdates = Convert.ToBoolean(subscribeEmail);
                        customDetails.Company             = company;
                        updatedCustomerEntity.SetComponent(customDetails);
                        await this._persistEntityPipeline.Run(new PersistEntityArgument(updatedCustomerEntity), commerceContext.PipelineContext);
                    }
                    else
                    {
                        commerceContext.Logger.LogInformation($"Edit customer entityview is empty: {DateTime.Now}");
                    }
                }
                else
                {
                    commerceContext.Logger.LogInformation($"Customer entityview is null: {DateTime.Now}");
                }
                return(customerEntity);
            }
            catch (Exception e)
            {
                commerceContext.Logger.LogInformation($"Exception occured in getting customer { e.StackTrace} and id is {e.Message}");
                return(await Task.FromException <Sitecore.Commerce.Plugin.Customers.Customer>(e));
            }
        }