Exemplo n.º 1
0
        public bool UpdateUser(User user, IEnumerable<int> roles)
        {
            try
            {
                if (user == null)
                {
                    _logger.Error("UpdateUser(User user, IEnumerable<int> roles) user is null ");
                    throw new ArgumentNullException("user");
                }
                User u = _unitOfWork.UserRepository.GetById(user.Id);
                user.UserRoles = new List<Role>();
                foreach (var r in roles)
                    user.UserRoles.Add(_unitOfWork.RoleRepository.GetById(r));
                _unitOfWork.UserRepository.AttachStubs(user.UserRoles.ToArray());

                foreach (var role in _unitOfWork.RoleRepository.Get().Where(role => role.Users.Any(x => x.Id == user.Id)))
                {
                    role.Users.Remove(role.Users.First(x => x.Id == user.Id));
                }
                _unitOfWork.Save();
                foreach (var prop in u.GetType().GetProperties())
                {
                    prop.SetValue(u, user.GetType().GetProperty(prop.Name).GetValue(user));
                }

                _unitOfWork.UserRepository.Update(u);
                _unitOfWork.Save();
                return true;
            }
            catch (Exception ex)
            {
                _logger.Error("Error in AuthentificationService.cs UpdateUser(User user, IEnumerable<int> roles))" + ex.Message);
                throw;
            }
        }