Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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) {}
        }
Ejemplo n.º 3
0
        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>();
            }
        }