private FoundationContact CreateFoundationContact(SiteUser user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            var contact = FoundationContact.New();

            if (!user.FirstName.IsNullOrEmpty() || !user.LastName.IsNullOrEmpty())
            {
                contact.FullName = string.Format("{0} {1}", user.FirstName, user.LastName);
            }

            contact.FirstName          = user.FirstName;
            contact.LastName           = user.LastName;
            contact.Email              = user.Email;
            contact.UserId             = user.Email;
            contact.RegistrationSource = user.RegistrationSource;

            //if (user.Addresses != null && user.Addresses.Any())
            //{
            //    foreach (var address in user.Addresses)
            //    {
            //        contact.Contact.AddContactAddress(address);
            //    }
            //}

            contact.SaveChanges();

            SetPreferredAddresses(contact.Contact);

            return(contact);
        }
Beispiel #2
0
        public void Add(Guid contentGuid)
        {
            var currentContact = CustomerContext.Current.CurrentContact;

            if (currentContact != null)
            {
                var contentReference = _permanentLinkMapper.Find(contentGuid).ContentReference;
                var contact          = new FoundationContact(currentContact);
                var bookmarkModel    = new BookmarkModel();
                if (_contentLoader.TryGet <IContent>(contentReference, out var content))
                {
                    bookmarkModel.ContentLink = contentReference;
                    bookmarkModel.ContentGuid = content.ContentGuid;
                    bookmarkModel.Name        = content.Name;
                    bookmarkModel.Url         = _urlResolver.GetUrl(content);
                }
                var contactBookmarks = contact.ContactBookmarks;
                if (contactBookmarks.FirstOrDefault(x => x.ContentGuid == bookmarkModel.ContentGuid) == null)
                {
                    contactBookmarks.Add(bookmarkModel);
                }
                contact.Bookmarks = JsonConvert.SerializeObject(contactBookmarks);
                contact.SaveChanges();
            }
        }
        protected virtual void AddCommerceComponents(FoundationContact contact, HeaderViewModel viewModel)
        {
            if (_databaseMode.DatabaseMode == DatabaseMode.ReadOnly)
            {
                viewModel.MiniCart         = new MiniCartViewModel();
                viewModel.WishListMiniCart = new MiniWishlistViewModel();
                viewModel.SharedMiniCart   = new MiniCartViewModel();
                return;
            }

            viewModel.MiniCart = _cartViewModelFactory.CreateMiniCartViewModel(
                _cartService.LoadCart(_cartService.DefaultCartName, true)?.Cart);

            viewModel.WishListMiniCart = _cartViewModelFactory.CreateMiniWishListViewModel(
                _cartService.LoadCart(_cartService.DefaultWishListName, true)?.Cart);

            var organizationId = contact?.FoundationOrganization?.OrganizationId.ToString();

            if (!organizationId.IsNullOrEmpty())
            {
                viewModel.SharedMiniCart = _cartViewModelFactory.CreateMiniCartViewModel(
                    _cartService.LoadCart(_cartService.DefaultSharedCartName, organizationId, true)?.Cart, true);

                viewModel.ShowSharedCart = true;
            }
        }
 private UserSearchResultModel ConvertToUserSearchResultModel(FoundationContact contact)
 {
     return(new UserSearchResultModel
     {
         ContactId = contact.ContactId,
         Email = contact.Email,
         FirstName = contact.FirstName,
         LastName = contact.LastName,
         FullName = contact.FullName
     });
 }
Beispiel #5
0
 public ContactViewModel(FoundationContact contact)
 {
     ContactId    = contact.ContactId;
     FirstName    = contact.FirstName;
     LastName     = contact.LastName;
     Email        = contact.Email;
     Organization = contact.FoundationOrganization != null ? new OrganizationModel(contact.FoundationOrganization) : null;
     UserRole     = contact.UserRole;
     Budget       = contact.Budget != null ? new BudgetViewModel(contact.Budget) : null;
     Location     = contact.UserLocationId;
 }
Beispiel #6
0
        public List <BookmarkModel> Get()
        {
            var currentContact = CustomerContext.Current.CurrentContact;

            if (currentContact != null)
            {
                var contact = new FoundationContact(currentContact);
                return(contact.ContactBookmarks);
            }
            return(new List <BookmarkModel>());
        }
        public IActionResult AddUser(UsersPage currentPage)
        {
            var organization = _organizationService.GetCurrentFoundationOrganization();
            var viewModel    = new UsersPageViewModel
            {
                CurrentContent = currentPage,
                Contact        = FoundationContact.New(),
                Organizations  = organization?.SubOrganizations ?? new List <FoundationOrganization>()
            };

            return(View(viewModel));
        }
        public void AddNumberOfOrders()
        {
            var currentContact = CustomerContext.Current.CurrentContact;

            if (currentContact != null)
            {
                var contact = new FoundationContact(currentContact);
                contact.NumberOfOrders += 1;
                contact.Points         += 10;
                contact.Tier            = SetTier(contact.Points);
                contact.SaveChanges();
            }
        }
Beispiel #9
0
        public void Remove(Guid contentGuid)
        {
            var currentContact = CustomerContext.Current.CurrentContact;

            if (currentContact != null)
            {
                var contact          = new FoundationContact(currentContact);
                var contactBookmarks = contact.ContactBookmarks;
                var content          = contactBookmarks.FirstOrDefault(x => x.ContentGuid == contentGuid);
                contactBookmarks.Remove(content);
                contact.Bookmarks = contactBookmarks.Any() ? JsonConvert.SerializeObject(contactBookmarks) : "";
                contact.SaveChanges();
            }
        }
Beispiel #10
0
        public override ActionResult Index(ElevatedRoleBlock currentBlock)
        {
            var viewModel      = new ElevatedRoleBlockViewModel(currentBlock);
            var currentContact = CustomerContext.Current.CurrentContact;

            if (currentContact != null)
            {
                var contact = new FoundationContact(currentContact);
                if (contact.ElevatedRole == ElevatedRoles.Reader.ToString())
                {
                    viewModel.IsAccess = true;
                }
            }
            return(PartialView("~/Features/Blocks/ElevatedRoleBlock/ElevatedRoleBlock.cshtml", viewModel));
        }
        public virtual void CreateContact(FoundationContact contact, string contactId)
        {
            contact.ContactId      = Guid.Parse(contactId);
            contact.UserId         = contact.Email;
            contact.UserLocationId = contact.UserRole != B2BUserRoles.Admin.ToString() ? contact.UserLocationId : "";
            contact.SaveChanges();

            if (contact.UserRole == B2BUserRoles.Admin.ToString())
            {
                AddContactToOrganization(contact);
            }
            else
            {
                AddContactToOrganization(contact, contact.FoundationOrganization.OrganizationId.ToString());
            }
        }
        public void Save(AddressModel addressModel, FoundationContact contact = null)
        {
            FoundationContact currentContact;

            if (contact != null)
            {
                currentContact = contact;
            }
            else
            {
                currentContact = _customerService.GetCurrentContact();
            }

            if (currentContact == null)
            {
                return;
            }

            var customerAddress = CreateOrUpdateCustomerAddress(currentContact.Contact, addressModel);

            if (addressModel.BillingDefault)
            {
                currentContact.Contact.PreferredBillingAddress = customerAddress;
            }
            else if (currentContact.Contact.PreferredBillingAddress != null &&
                     currentContact.Contact.PreferredBillingAddress.Name.Equals(addressModel.AddressId))
            {
                currentContact.Contact.PreferredBillingAddressId = null;
            }

            if (addressModel.ShippingDefault)
            {
                currentContact.Contact.PreferredShippingAddress = customerAddress;
            }
            else if (currentContact.Contact.PreferredShippingAddress != null &&
                     currentContact.Contact.PreferredShippingAddress.Name.Equals(addressModel.AddressId))
            {
                currentContact.Contact.PreferredShippingAddressId = null;
            }

            currentContact.SaveChanges();
            addressModel.AddressId = customerAddress.AddressId.ToString();
        }
 public virtual void AddContactToOrganization(FoundationContact contact, string organizationId = null)
 {
     if (organizationId.IsNullOrEmpty())
     {
         var org = GetCurrentOrganization();
         if (org != null)
         {
             contact.FoundationOrganization = org;
             contact.SaveChanges();
         }
     }
     else
     {
         var organization = _customerContext.GetOrganizationById(organizationId);
         if (organization != null)
         {
             contact.FoundationOrganization = new FoundationOrganization(organization);
             contact.SaveChanges();
         }
     }
 }
 public virtual void EditContact(FoundationContact contact) => UpdateContact(contact.ContactId.ToString(), contact.UserRole, contact.UserLocationId);
 public virtual void AddContactToOrganization(FoundationOrganization organization, FoundationContact contact, B2BUserRoles userRole)
 {
     contact.FoundationOrganization = organization;
     contact.UserRole = userRole.ToString();
     contact.SaveChanges();
 }
 private bool ValidateUserRole()
 {
     var contactRole = new FoundationContact(CustomerContext.Current.CurrentContact).B2BUserRole;
     return _authorizedRoles.Any(role => contactRole == role);
 }
Beispiel #17
0
        private void SaveCustomer(CustomerPoco customer, PrimaryKeyId orgId)
        {
            var user = _userManager.FindByEmailAsync(customer.Email)
                       .GetAwaiter()
                       .GetResult();

            if (user == null)
            {
                user = new SiteUser
                {
                    CreationDate = DateTime.UtcNow,
                    Username     = customer.Email,
                    Email        = customer.Email,
                    FirstName    = customer.FirstName,
                    LastName     = customer.LastName,
                    IsApproved   = true
                };

                var result = _userManager.CreateAsync(user, "Episerver123!")
                             .GetAwaiter()
                             .GetResult();

                if (!result.Succeeded)
                {
                    return;
                }
            }

            foreach (var role in customer.Roles)
            {
                if (!_roleManager.RoleExistsAsync(role)
                    .GetAwaiter()
                    .GetResult())
                {
                    var createdRole = new IdentityRole(role);

                    var roleResult = _roleManager.CreateAsync(createdRole)
                                     .GetAwaiter()
                                     .GetResult();

                    if (!roleResult.Succeeded)
                    {
                        continue;
                    }
                    _userManager.AddToRoleAsync(user.Id, role)
                    .GetAwaiter()
                    .GetResult();
                }
            }

            FoundationContact foundationContact;
            var contact = CustomerContext.GetContactByUserId($"String:{customer.Email}");

            if (contact == null)
            {
                foundationContact        = FoundationContact.New();
                foundationContact.UserId = customer.Email;
                foundationContact.Email  = customer.Email;
            }
            else
            {
                foundationContact = new FoundationContact(contact);
            }

            foundationContact.FirstName            = customer.FirstName;
            foundationContact.LastName             = customer.LastName;
            foundationContact.FullName             = $"{foundationContact.FirstName} {foundationContact.LastName}";
            foundationContact.RegistrationSource   = "Imported customer";
            foundationContact.AcceptMarketingEmail = true;
            foundationContact.ConsentUpdated       = DateTime.UtcNow;
            foundationContact.UserRole             = customer.B2BRole;
            foundationContact.UserLocationId       = customer.Location;
            foundationContact.DemoUserTitle        = customer.DemoUserTitle;
            foundationContact.DemoUserDescription  = customer.DemoUserDescription;
            foundationContact.ShowInDemoUserMenu   = customer.ShowInDemoUserMenu == 0 ? 1 : customer.ShowInDemoUserMenu;
            foundationContact.DemoSortOrder        = customer.DemoSortOrder;

            if (orgId != PrimaryKeyId.Empty)
            {
                foundationContact.Contact.OwnerId = orgId;
            }
            foundationContact.SaveChanges();

            MapAddressesFromCustomerToContact(customer, foundationContact.Contact);
            MapCreditCardsFromCustomerToContact(customer.CreditCards, foundationContact.Contact);
            foundationContact.SaveChanges();
        }
        protected virtual HeaderViewModel CreateViewModel(IContent currentContent, HomePage homePage, FoundationContact contact, bool isBookmarked)
        {
            var menuItems         = new List <MenuItemViewModel>();
            var homeLanguage      = homePage.Language.DisplayName;
            var layoutSettings    = _settingsService.GetSiteSettings <LayoutSettings>();
            var referenceSettings = _settingsService.GetSiteSettings <ReferencePageSettings>();
            var filter            = new FilterContentForVisitor();

            menuItems = layoutSettings?.MainMenu?.FilteredItems.Where(x =>
            {
                var _menuItem = _contentLoader.Get <IContent>(x.ContentLink);
                MenuItemBlock _menuItemBlock;
                if (_menuItem is MenuItemBlock)
                {
                    _menuItemBlock = _menuItem as MenuItemBlock;
                    if (_menuItemBlock.Link == null)
                    {
                        return(true);
                    }
                    var linkedItem = UrlResolver.Current.Route(new UrlBuilder(_menuItemBlock.Link));
                    if (filter.ShouldFilter(linkedItem))
                    {
                        return(false);
                    }
                    return(true);
                }
                return(true);
            }).Select(x =>
            {
                var itemCached = CacheManager.Get(x.ContentLink.ID + homeLanguage + ":" + Constant.CacheKeys.MenuItems) as MenuItemViewModel;
                if (itemCached != null && !PageEditing.PageIsInEditMode)
                {
                    return(itemCached);
                }
                else
                {
                    var content = _contentLoader.Get <IContent>(x.ContentLink);
                    MenuItemBlock _;
                    MenuItemViewModel menuItem;
                    if (content is MenuItemBlock)
                    {
                        _        = content as MenuItemBlock;
                        menuItem = new MenuItemViewModel
                        {
                            Name       = _.Name,
                            ButtonText = _.ButtonText,
                            TeaserText = _.TeaserText,
                            Uri        = _.Link == null ? string.Empty : _urlResolver.GetUrl(new UrlBuilder(_.Link.ToString()), new UrlResolverArguments()
                            {
                                ContextMode = ContextMode.Default
                            }),
                            ImageUrl   = !ContentReference.IsNullOrEmpty(_.MenuImage) ? _urlResolver.GetUrl(_.MenuImage) : "",
                            ButtonLink = _.ButtonLink?.Host + _.ButtonLink?.PathAndQuery,
                            ChildLinks = _.ChildItems?.ToList() ?? new List <GroupLinkCollection>()
                        };
                    }
                    else
                    {
                        menuItem = new MenuItemViewModel
                        {
                            Name       = content.Name,
                            Uri        = _urlResolver.GetUrl(content.ContentLink),
                            ChildLinks = new List <GroupLinkCollection>()
                        };
                    }

                    if (!PageEditing.PageIsInEditMode)
                    {
                        var keyDependency = new List <string>
                        {
                            _contentCacheKeyCreator.CreateCommonCacheKey(homePage.ContentLink), // If The HomePage updates menu (remove MenuItems)
                            _contentCacheKeyCreator.CreateCommonCacheKey(x.ContentLink)
                        };

                        var eviction = new CacheEvictionPolicy(TimeSpan.FromDays(1), CacheTimeoutType.Sliding, keyDependency);
                        CacheManager.Insert(x.ContentLink.ID + homeLanguage + ":" + Constant.CacheKeys.MenuItems, menuItem, eviction);
                    }

                    return(menuItem);
                }
            }).ToList();

            return(new HeaderViewModel
            {
                HomePage = homePage,
                CurrentContentLink = currentContent?.ContentLink,
                CurrentContentGuid = currentContent?.ContentGuid ?? Guid.Empty,
                UserLinks = new LinkItemCollection(),
                Name = contact?.FirstName ?? "",
                IsBookmarked = isBookmarked,
                IsReadonlyMode = _databaseMode.DatabaseMode == DatabaseMode.ReadOnly,
                MenuItems = menuItems ?? new List <MenuItemViewModel>(),
                LoginViewModel = new LoginViewModel
                {
                    ResetPasswordPage = referenceSettings?.ResetPasswordPage ?? ContentReference.StartPage
                },
                RegisterAccountViewModel = new RegisterAccountViewModel
                {
                    Address = new AddressModel()
                },
            });
        }
Beispiel #19
0
 public virtual void EditContact(FoundationContact model) => UpdateContact(model.ContactId.ToString(), model.UserRole, model.UserLocationId);