示例#1
0
        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);
        }