/// <summary> /// Verifica a situação do documento /// </summary> /// <param name="documento">Documento a ser verificado</param> /// <param name="situacao">Varíavel de saída de situação do documento</param> /// <param name="cadastrado">Varíavel de saída de flag de situação de cadastro completo</param> public void VerificarSituacaoDocumento(string documento, out string situacao, out bool cadastrado) { situacao = "inexistente"; cadastrado = false; string sql = "SELECT * FROM DocumentoHabilitado WHERE CpfCnpj = @pdoc"; DocumentoHabilitado doc = _ctx.Database.GetDbConnection().Query <DocumentoHabilitado>(sql, new { pdoc = documento }).FirstOrDefault(); if (doc != null) { situacao = doc.Ativo ? "ativo" : "inativo"; sql = "SELECT * FROM Usuario u INNER JOIN UsuarioDados ud ON u.Id = ud.UsuarioId WHERE u.CpfCnpj = @pdoc"; Usuario usuario = _ctx.Database.GetDbConnection().Query <Usuario>(sql, new { pdoc = documento }).FirstOrDefault(); cadastrado = (usuario != null); } }
/// <summary> /// Autenticar usuário através do documento /// </summary> /// <param name="documento">Número do documento</param> /// <param name="mensagem">Mensagem de saída do resultado da autenticação</param> /// <param name="usuarioDto">Objeto Dto para saida do usuário</param> public bool Autenticar(string documento, out string mensagem, out UsuarioDto usuarioDto) { Usuario usr = _dmn.ObterPorDocumento(documento); DocumentoHabilitado doc = _docHabDomain.ObterPorDocumento(documento); usuarioDto = ConverterEntidadeEmDto(usr); if (usr == null || doc == null) { mensagem = "Usuário e/ou senha inválido!"; return(false); } if (!doc.Ativo) { mensagem = "Usuário inativo!"; return(false); } mensagem = "Usuário autenticado"; return(true); }
/// <summary> /// Cadastrar um novo colaborador /// </summary> /// <param name="dto">Objeto Data-Transport</param> /// <param name="statusCode">Variável de saído do código de status</param> /// <param name="dados">Variável de saída da mensagem</param> public void CadastrarColaborador(UsuarioDto dto, out int statusCode, out object dados) { // Verificar DocumentoHabilitado DocumentoHabilitado documento = _docHabDomain.ObterPorDocumento(dto.CpfCnpj); if (documento == null || !documento.Ativo) { statusCode = StatusCodes.Status404NotFound; dados = new { sucesso = false, mensagem = "Entre em contato com RH" }; } else { // Verificar se o usuário já está cadastrado Usuario usuario = _dmn.ObterPorDocumento(dto.CpfCnpj); if (usuario != null) { statusCode = StatusCodes.Status400BadRequest; dados = new { sucesso = false, mensagem = "Usuário já cadastrado" }; } else { Usuario entidade = ConverterDtoEmEntidade(dto); if (!entidade.EstaValido()) { dados = new { sucesso = false, mensagem = entidade.ValidationResult.ToString() }; statusCode = StatusCodes.Status400BadRequest; } else { _dmn.Adicionar(entidade); _uow.Efetivar(); dados = new { sucesso = true, mensagem = new { Id = entidade.Id } }; statusCode = StatusCodes.Status200OK; } } } }
/// <summary> /// Processar arquivo de colaboradores /// </summary> /// <param name="arquivo"></param> /// <param name="caminho"></param> /// <param name="statusCode"></param> /// <returns></returns> public ArquivoDocumentoDto ImportarArquivoColaborador(IFormFile arquivo, string caminho, out int statusCode) { // Preparando nome e caminho de arquivo ArquivoDocumentoDto adt = new ArquivoDocumentoDto() { NomeArquivo = arquivo.FileName }; string nomeArquivoBase = ContentDispositionHeaderValue.Parse(arquivo.ContentDisposition).FileName.Trim('"'); string nomeCompleto = Path.Combine(caminho, nomeArquivoBase); statusCode = StatusCodes.Status200OK; // Validando arquivo //if (!arquivo.ContentType.ToLower().Contains("application/vnd.ms-excel") || !arquivo.FileName.ToLower().EndsWith(".csv")) if (!arquivo.FileName.ToLower().EndsWith(".csv")) { statusCode = StatusCodes.Status400BadRequest; adt.Sucesso = false; adt.Detalhe = "Arquivo inválido"; } else { // Ler arquivo bool documentoValido = true; try { // Salvar arquivo using (FileStream fs = new FileStream(nomeCompleto, FileMode.Create)) { arquivo.CopyTo(fs); } int numLinha = 0; using (StreamReader sr = new StreamReader(nomeCompleto)) { IList <string> docsProcessados = new List <string>(); string linha; while ((linha = sr.ReadLine()) != null) { numLinha++; if (numLinha > 1) { LinhaArquivoDocumentoDto dadosLinha = new LinhaArquivoDocumentoDto { Linha = numLinha, Conteudo = linha, Detalhe = string.Empty }; string[] campos = linha.Split(','); if (campos.Length.Equals(2)) { string documento = Misc.LimparNumero(campos[0]); string situacao = campos[1].ToUpper(); if (docsProcessados.Any(x => x.Equals(documento))) { dadosLinha.Sucesso = false; documentoValido = false; dadosLinha.Acao = AcaoDocumento.DocumentoDuplicado; dadosLinha.Detalhe = EnumHelper.GetEnumDescription(AcaoDocumento.DocumentoDuplicado); } else { if (!Check.VerificarDocumento(documento)) { dadosLinha.Acao = AcaoDocumento.DocumentoOuSituacaoInvalida; dadosLinha.Detalhe = "Documento inválido"; } if (!(situacao.Equals("S") || situacao.Equals("N"))) { dadosLinha.Detalhe = $"{(dadosLinha.Detalhe.Length.Equals(0) ? string.Empty : $"{dadosLinha.Detalhe} / ")}Situação inválida"; } if (!string.IsNullOrEmpty(dadosLinha.Detalhe)) { dadosLinha.Sucesso = false; documentoValido = false; } else { // Persistir na base dadosLinha.Sucesso = true; dadosLinha.Acao = AcaoDocumento.Alteracao; dadosLinha.Detalhe = EnumHelper.GetEnumDescription(AcaoDocumento.Alteracao); DocumentoHabilitado doc = _docHabDomain.ObterPorDocumento(documento); if (doc == null) { dadosLinha.Acao = AcaoDocumento.Inclusao; dadosLinha.Detalhe = EnumHelper.GetEnumDescription(AcaoDocumento.Inclusao); doc = new DocumentoHabilitado() { CpfCnpj = documento }; } doc.Ativo = situacao.Equals("S"); if (dadosLinha.Acao == AcaoDocumento.Inclusao) { _docHabDomain.Adicionar(doc); } else { _docHabDomain.Atualizar(doc); } docsProcessados.Add(documento); } } } else { dadosLinha.Sucesso = false; documentoValido = false; dadosLinha.Detalhe = "Layout da linha inválido"; } adt.Linhas.Add(dadosLinha); } } } // Commit if (documentoValido) { _uow.Efetivar(); adt.Sucesso = true; adt.Detalhe = "Arquivo processado com sucesso"; } else { adt.Sucesso = false; statusCode = StatusCodes.Status400BadRequest; adt.Detalhe = "Arquivo processado e criticado, veja detalhes das linhas;"; } }