Example #1
0
        public async Task <User> Edit(UserDto dto)
        {
            var roles =
                await _roleRepository.All
                .Include(x => x.UserRoles).ThenInclude(x => x.User)
                .Where(x => dto.RolesIds.Contains(x.Id)).ToListAsync();

            if (roles.Count != dto.RolesIds.Count)
            {
                throw new EntityNotExistsException("В списке ролей есть несуществующие роли");
            }

            var user = await _userRepository.All
                       .Include(x => x.UserRoles)
                       .ThenInclude(x => x.Role)
                       .FirstOrDefaultAsync(x => x.Id == dto.Id);

            user.Name  = dto.Name;
            user.Email = dto.Email;

            // яесли пароль не пустой, то пользователь хочет его обновить.
            if (!string.IsNullOrEmpty(dto.Password))
            {
                user.Password = Crypt.CreateMd5(dto.Password);
            }

            user.Roles = roles;

            await _userRepository.UpdateAsync(user);

            return(user);
        }
Example #2
0
        public async Task <User> Create(UserDto dto)
        {
            var roles =
                await _roleRepository.All
                .Include(x => x.UserRoles)
                .ThenInclude(x => x.Role)
                .Where(x => dto.RolesIds.Contains(x.Id)).ToListAsync();

            if (roles.Count != dto.RolesIds.Count)
            {
                throw new EntityNotExistsException("В списке ролей есть несуществующие роли");
            }

            var user = new User
            {
                Login    = dto.Login,
                Email    = dto.Email,
                Name     = dto.Name,
                Password = Crypt.CreateMd5(dto.Password),
                Roles    = roles
            };

            await _userRepository.SaveAsync(user);

            return(user);
        }