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)); }
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); }
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); }
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)); } }