public void UpdateUsuario(Dtos.Usuario usuarioDto) { ValidateUsuario(usuarioDto); var usuario = SgsContext.Usuarios.SingleOrDefault(u => u.Id == usuarioDto.Id); var rolesToAdd = usuarioDto.Roles.Except(usuario.Roles.Select(r => r.Id)); var rolesToDelete = usuario.Roles.Select(r => r.Id).Except(usuarioDto.Roles); usuario.Apellido = usuarioDto.Apellido; usuario.Documento = usuarioDto.Documento; usuario.Email = usuarioDto.Email; usuario.Enabled = usuarioDto.Enabled; usuario.Nick = usuarioDto.Nick; usuario.Nombre = usuarioDto.Nombre; usuario.Telefono = usuarioDto.Telefono; usuario.UpdateDate = DateTime.Now; foreach (var id in rolesToAdd) { usuario.Roles.Add(SgsContext.Roles.Single(r => r.Id == id)); } rolesToDelete.Select(id => usuario.Roles.Single(r => r.Id == id)).ToList().ForEach(r => usuario.Roles.Remove(r)); SgsContext.SaveChanges(); }
public void CreateUsuario(Dtos.Usuario usuarioDto) { ValidateUsuario(usuarioDto); var password = SecurityHelper.CreateRandomPassword(10); var usuario = new Usuario { Apellido = usuarioDto.Apellido, CreateDate = DateTime.Now, Documento = usuarioDto.Documento, Email = usuarioDto.Email, Enabled = usuarioDto.Enabled, LoginFailureCount = 0, Nick = usuarioDto.Nick, Nombre = usuarioDto.Nombre, Telefono = usuarioDto.Telefono, Password = SecurityHelper.EncodePassword(password), Roles = SgsContext.Roles.Where(r => usuarioDto.Roles.Any(d => d == r.Id)).ToList() }; SgsContext.Usuarios.Add(usuario); SgsContext.SaveChanges(); try { NotifyNewUser(usuario, password); } catch (Exception) {} }
public void ValidateUsuario(Dtos.Usuario usuarioDto) { if (usuarioDto == null) { throw new ValidationException(Resource.InvalidUsuario); } if (string.IsNullOrEmpty(usuarioDto.Nick)) { throw new ValidationException(Resource.RequiredNick); } if (string.IsNullOrEmpty(usuarioDto.Apellido)) { throw new ValidationException(Resource.RequiredApellido); } if (string.IsNullOrEmpty(usuarioDto.Nombre)) { throw new ValidationException(Resource.RequiredNombre); } if (string.IsNullOrEmpty(usuarioDto.Email)) { throw new ValidationException(Resource.RequiredEmail); } if (!usuarioDto.Id.HasValue) { if (!string.IsNullOrEmpty(usuarioDto.Documento) && SgsContext.Usuarios.Any(u => string.Equals(u.Documento, usuarioDto.Documento))) { throw new ValidationException(Resource.DuplicateDocumento); } if (SgsContext.Usuarios.Any(u => string.Equals(u.Nick, usuarioDto.Nick))) { throw new ValidationException(Resource.DuplicateNick); } if (SgsContext.Usuarios.Any(u => string.Equals(u.Email, usuarioDto.Email))) { throw new ValidationException(Resource.DuplicateEmail); } } else { var usuario = default(Usuario); if (!string.IsNullOrEmpty(usuarioDto.Documento)) { usuario = SgsContext.Usuarios.SingleOrDefault(u => string.Equals(u.Documento, usuarioDto.Documento)); if (usuario != null && usuario.Id != usuarioDto.Id) { throw new ValidationException(Resource.DuplicateDocumento); } } usuario = SgsContext.Usuarios.SingleOrDefault(u => string.Equals(u.Nick, usuarioDto.Nick)); if (usuario != null && usuario.Id != usuarioDto.Id) { throw new ValidationException(Resource.DuplicateNick); } usuario = SgsContext.Usuarios.SingleOrDefault(u => string.Equals(u.Email, usuarioDto.Email)); if (usuario != null && usuario.Id != usuarioDto.Id) { throw new ValidationException(Resource.DuplicateEmail); } } if (usuarioDto.Roles == null) { usuarioDto.Roles = new List <int>(); } }