public virtual async Task <Customer> CreateGuestCustomerAsync(Guid?customerGuid = null) { var customer = new Customer { CustomerGuid = customerGuid ?? Guid.NewGuid(), Active = true, CreatedOnUtc = DateTime.UtcNow, LastActivityDateUtc = DateTime.UtcNow, }; // Add to 'Guests' role var guestRole = await GetRoleBySystemNameAsync(SystemCustomerRoleNames.Guests); if (guestRole == null) { throw new SmartException("'Guests' role could not be loaded"); } // Ensure that entities are saved to db in any case customer.CustomerRoleMappings.Add(new CustomerRoleMapping { CustomerId = customer.Id, CustomerRoleId = guestRole.Id }); _db.Customers.Add(customer); await _db.SaveChangesAsync(); var clientIdent = _webHelper.GetClientIdent(); if (clientIdent.HasValue()) { customer.GenericAttributes.ClientIdent = clientIdent; await _db.SaveChangesAsync(); } //Logger.DebugFormat("Guest account created for anonymous visitor. Id: {0}, ClientIdent: {1}", customer.CustomerGuid, clientIdent ?? "n/a"); return(customer); }