示例#1
0
        public AcaoEfetuada Salvar(Usuario obj, List <PerfilUsuario> perfis, int recursoId = 1, short actionId = 1)
        {
            try
            {
                var usuarios = Buscar(new Usuario {
                    CPF = obj.CPF
                }).ToList();
                var logins = Buscar(new Usuario {
                    ChaveDeAcesso = obj.ChaveDeAcesso
                }).ToList();

                if (obj.Codigo == 0)
                {
                    if (usuarios.Count(u => u.CPF == obj.CPF) > 0)
                    {
                        throw new SidsException("CPF já cadastrado");
                    }

                    if (logins.Count(u => u.ChaveDeAcesso == obj.ChaveDeAcesso) > 0)
                    {
                        throw new SidsException("Login já cadastrado");
                    }

                    PreInsertModel(obj);
                    obj.SenhaExpirada      = true;
                    obj.AlterarSenha       = true;
                    obj.DataExpiracaoSenha = DateTime.Today.AddDays(int.Parse("0" + AppConfig.DiasExpiracaoSenha));
                    obj.Codigo             = _usuario.Add(obj);
                }
                else
                {
                    if (usuarios.Count(u => u.CPF == obj.CPF && u.Codigo != obj.Codigo) > 0)
                    {
                        throw new SidsException("CPF já cadastrado");
                    }

                    if (logins.Count(u => u.ChaveDeAcesso == obj.ChaveDeAcesso && u.Codigo != obj.Codigo) > 0)
                    {
                        throw new SidsException("Login já cadastrado");
                    }

                    var senha = _usuario.Fetch(new Usuario {
                        Codigo = obj.Codigo
                    }).FirstOrDefault().Senha;
                    if (GetUserIdLogado() == obj.Codigo && obj.Status == false)
                    {
                        throw new SidsException("O usuário logado não pode ser desativado.");
                    }

                    var idLogado = GetUserIdLogado();

                    if (senha != obj.Senha && idLogado != obj.Codigo)
                    {
                        obj.SenhaExpirada = true;
                        obj.AlterarSenha  = true;
                    }

                    if (obj.DataExpiracaoSenha == new DateTime())
                    {
                        var user = _usuario.Fetch(new Usuario {
                            Codigo = obj.Codigo
                        }).FirstOrDefault();
                        obj.DataExpiracaoSenha = user.DataExpiracaoSenha;
                        obj.DataUltimoAcesso   = user.DataUltimoAcesso;
                        obj.DataCriacao        = user.DataCriacao;
                    }

                    _usuario.Edit(obj);
                }

                if (perfis != null)
                {
                    SalvarPerfilUsuario(obj, perfis);
                }

                var arg = string.Format("Login {0}, CPF {1}", obj.ChaveDeAcesso, obj.CPF);

                if (recursoId > 0)
                {
                    return(LogSucesso(actionId, recursoId, arg));
                }

                return(AcaoEfetuada.Sucesso);
            }
            catch (Exception ex)
            {
                throw SaveLog(ex, actionId, recursoId);
            }
        }
示例#2
0
 public bool Authenticate(Usuario entity)
 {
     return(usuario.Fetch(new Usuario {
         ChaveDeAcesso = entity.ChaveDeAcesso
     }).FirstOrDefault() != null);
 }