public async Task <User> AddUserAsync(User user)
        {
            var userEntity = user.ToEntity();

            _identityDbContext.Users.Add(userEntity);
            await _identityDbContext.SaveChangesAsync();

            return(user);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Maps a model to an existing entity instance
        /// </summary>
        /// <param name="model"></param>
        /// <param name="entity"></param>
        public static void ToEntity(this User model, EntityModels.User entity)
        {
            Mapper.Map(model, entity);

            foreach (var userLogin in model.LastLoginDatesByClient)
            {
                var existingLogin = entity.UserLogins.FirstOrDefault(l =>
                                                                     l.ClientId.Equals(userLogin.ClientId, StringComparison.OrdinalIgnoreCase));

                if (existingLogin != null)
                {
                    existingLogin.LoginDate = userLogin.LoginDate;
                }
                else
                {
                    entity.UserLogins.Add(new UserLogin {
                        ClientId = userLogin.ClientId, LoginDate = userLogin.LoginDate
                    });
                }
            }

            foreach (var claim in model.Claims)
            {
                var existingClaim =
                    entity.Claims.FirstOrDefault(c => c.Type == claim.Type && c.Value == claim.Value);
                if (existingClaim == null)
                {
                    entity.Claims.Add(new UserClaim {
                        Type = claim.Type, Value = claim.Value
                    });
                }
            }

            var claimsToRemove = new List <UserClaim>();

            foreach (var existingUserClaim in entity.Claims)
            {
                var newClaim = model.Claims.FirstOrDefault(
                    c => c.Type == existingUserClaim.Type && c.Value == existingUserClaim.Value);
                if (newClaim == null)
                {
                    claimsToRemove.Add(existingUserClaim);
                }
            }

            foreach (var claimToRemove in claimsToRemove)
            {
                entity.Claims.Remove(claimToRemove);
            }
        }
        public async Task UpdateUserAsync(User user)
        {
            var existingUser = await _identityDbContext.Users
                               .Where(u => u.SubjectId.Equals(user.SubjectId, StringComparison.OrdinalIgnoreCase) &&
                                      u.ProviderName.Equals(user.ProviderName, StringComparison.OrdinalIgnoreCase))
                               .Include(u => u.UserLogins)
                               .Include(u => u.Claims)
                               .FirstOrDefaultAsync();

            user.ToEntity(existingUser);

            _identityDbContext.Users.Update(existingUser);
            await _identityDbContext.SaveChangesAsync();
        }
        public async Task <User> AddUserAsync(User user)
        {
            var userEntity = user.ToEntity();

            IdentityDbContext.Users.Add(userEntity);
            await IdentityDbContext.SaveChangesAsync();

            await EventService.RaiseAsync(
                new EntityCreatedAuditEvent <User>(
                    UserResolverService.Username,
                    UserResolverService.ClientId,
                    UserResolverService.Subject,
                    user.SubjectId,
                    user,
                    SerializationSettings));

            return(user);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Maps a model to an entity
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public static EntityModels.User ToEntity(this User model)
        {
            var userEntity = Mapper.Map <EntityModels.User>(model);

            foreach (var userLogin in model.LastLoginDatesByClient)
            {
                userEntity.UserLogins.Add(
                    new UserLogin {
                    ClientId = userLogin.ClientId, LoginDate = userLogin.LoginDate
                });
            }

            userEntity.Claims = model.Claims.Select(c => new UserClaim {
                Type = c.Type, Value = c.Value
            }).ToList();

            return(userEntity);
        }
        public async Task UpdateUserAsync(User user)
        {
            var existingUser = await IdentityDbContext.Users
                               .Where(u => u.SubjectId == user.SubjectId &&
                                      u.ProviderName == user.ProviderName)
                               .Include(u => u.UserLogins)
                               .Include(u => u.Claims)
                               .FirstOrDefaultAsync();

            user.ToEntity(existingUser);

            IdentityDbContext.Users.Update(existingUser);
            await IdentityDbContext.SaveChangesAsync();

            await EventService.RaiseAsync(
                new EntityUpdatedAuditEvent <User>(
                    UserResolverService.Username,
                    UserResolverService.ClientId,
                    UserResolverService.Subject,
                    user.SubjectId,
                    user,
                    SerializationSettings));
        }
 public void UpdateUser(User user)
 {
     UpdateUserAsync(user).Wait();
 }