Example #1
0
        private void Processamentos(DocumentoCliente documentoCliente_)
        {
            //Obtem pasta de destino do arquivo de configuracao
            string _pastaArquivoAssinatura = ConfigurationManager.AppSettings["Bradesco.PastaArquivoAssinatura"];
            string _arquivoAssinatura      = ConfigurationManager.AppSettings["Bradesco.ArquivoAssinatura"];

            switch (documentoCliente_.DocCliTipoId)
            {
            case 1:
                //Valida CCB
                processamentoCCB(documentoCliente_, _pastaArquivoAssinatura, _arquivoAssinatura);
                break;

            case 2:
                //Valida CET
                processamentoCET(documentoCliente_);

                break;

            case 3:
                //Valida Seguro
                processamentoSeguro(documentoCliente_);
                break;

            case 4:
                //Valida Anexo CCB
                processamentoSeguro(documentoCliente_);
                break;
            }
        }
Example #2
0
        public DocumentoCliente Insert(DocumentoCliente DocumentoCliente)
        {
            Int64 recordId = new DapperSqlHelper().InsertWithReturnId(DocumentoCliente);

            DocumentoCliente.ClienteId = recordId;
            return(DocumentoCliente);
        }
Example #3
0
        // <summary>
        // Verifica quais arquivos foram salvos para exibi-los na situação correspondente na página que informa as informações da proposta consultada
        // </summary>
        // <param name = "listaDocumentosCliente" ></ param >
        public void CarregarArquivoSalvoPorSituacaoDocumento(DocumentoCliente documentoCliente)
        {
            //verifica se o documento corresponde a situacao existente na lista
            IEnumerable <DocumentoClienteSituacao> documentoRetorno = documentoCliente.DocumentoClienteTipo.ListaSituacaoDocumentoCliente.Where(x => x.DocCliSituId == documentoCliente.DocCliSituId && x.DocCliTipoId == documentoCliente.DocCliTipoId);

            if (documentoRetorno.Count() > 0)
            {
                //carrega o nome do arquivo salvo no campo auxiliar
                documentoRetorno.ToList()[0].NomeArquivoSalvoAux = documentoCliente.DocClienteNomeArquivoOriginal;
            }
        }
Example #4
0
        private void processamentoCCB(DocumentoCliente documentoCliente_, string pastaArquivoAssinatura_, string arquivoAssinatura_)
        {
            UtilFileBradesco utilBradesco          = new Util.UtilFileBradesco();
            string           fileArquivoUpload     = WorkingFolder + "\\" + documentoCliente_.DocClienteNomeArquivoSalvo;
            string           fileArquivoAssinatura = WorkingFolder + "\\" + pastaArquivoAssinatura_ + "\\" + arquivoAssinatura_;

            string[] Arquivos = { fileArquivoUpload, fileArquivoAssinatura };

            try
            {
                string validaCabecalho = ConfigurationManager.AppSettings["Bradesco.ValidaCabecalho_CCB"].ToString();
                string diretorioBalde  = ConfigurationManager.AppSettings["Bradesco.DiretorioBalde"];

                if (!Directory.Exists(WorkingFolder + "\\" + diretorioBalde))
                {
                    Directory.CreateDirectory(WorkingFolder + "\\" + diretorioBalde);
                }

                string fileAux           = WorkingFolder + "\\" + diretorioBalde + "\\" + documentoCliente_.DocClienteNomeArquivoSalvo + "_aux";
                string fileAuxAssinatura = WorkingFolder + "\\" + diretorioBalde + "\\" + documentoCliente_.DocClienteNomeArquivoSalvo;

                if (VerificarCabecalhoContratoCCB(fileArquivoUpload, validaCabecalho)) //Contrato CCB
                {
                    //Le os dados do Pdf e cria o novo com o modelo
                    utilBradesco.EscreverPdf(WorkingFolder, Arquivos[0], Arquivos[1]);

                    File.Copy(Arquivos[0], fileAux);

                    Arquivos[0] = fileAux;
                    Arquivos[1] = fileAuxAssinatura;

                    //Junta os dois arquivos em um só
                    UtilFileBradesco.MergePDFs(Arquivos, fileArquivoUpload);
                }
            }
            finally
            {
                foreach (string file in Arquivos)
                {
                    if (File.Exists(file))
                    {
                        File.Delete(file);
                    }
                }
            }
        }
Example #5
0
        public bool Delete(DocumentoCliente DocumentoCliente)
        {
            bool delete = new DapperSqlHelper().Delete <DocumentoCliente>(DocumentoCliente);

            return(delete);
        }
Example #6
0
        public DocumentoCliente Update(DocumentoCliente DocumentoCliente)
        {
            bool update = new DapperSqlHelper().Update <DocumentoCliente>(DocumentoCliente);

            return(DocumentoCliente);
        }
Example #7
0
        public async Task <IHttpActionResult> EnviarArquivo(int usuarioId, long clienteId, int docCliTipoId, bool reenvio)
        {
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent("form-data"))
            {
                return(BadRequest("Unsupported media type"));
            }

            DocumentoCliente _documentoCliente = new DocumentoCliente();

            try
            {
                string directory = new UploadFileBL().RecuperarCaminhoPastaDocumentosByClienteId(clienteId);

                WorkingFolder += "\\" + directory;

                if (!Directory.Exists(WorkingFolder))
                {
                    Directory.CreateDirectory(WorkingFolder);
                }

                var streamProvider = new MultipartFormDataStreamProvider(WorkingFolder);
                await Request.Content.ReadAsMultipartAsync(streamProvider);

                _documentoCliente = new DocumentoCliente()
                {
                    UsuarioId    = usuarioId,
                    ClienteId    = clienteId,
                    DocCliTipoId = docCliTipoId,
                    DocClienteCaminhoCompletoArquivoSalvo = streamProvider.FileData.Select(entry => entry.LocalFileName).First(),
                    DocClienteNomeArquivoSalvo            = System.IO.Path.GetFileName(streamProvider.FileData.Select(entry => entry.LocalFileName).First()),
                    DocClienteNomeArquivoOriginal         = System.IO.Path.GetFileName(streamProvider.FileData.Select(entry => entry.Headers.ContentDisposition.FileName).First().Replace("\"", "")),
                    DocClienteTipoArquivo = streamProvider.FileData.Select(entry => entry.Headers.ContentType.MediaType).First(),
                    DocClienteDataUpload  = DateTime.Now
                };

                #region 1 - Verifica tipo/ versão pdf
                if (UtilFile.GetMIMEType(_documentoCliente.DocClienteNomeArquivoOriginal).ToLower() != "application/pdf")
                {
                    throw new Exception("Erro - Documento deve ser do tipo PDF");
                }
                #endregion

                Cliente cliente = new Cliente()
                {
                    ClienteId = _documentoCliente.ClienteId
                };
                UploadFileBL uploadFileBL = null;

                switch (cliente.ClienteNomeEnum)
                {
                case Cliente.EnumCliente.Bradesco:
                    uploadFileBL = new UploadFileBradescoBL();
                    ((UploadFileBradescoBL)uploadFileBL).Reenvio       = reenvio;
                    ((UploadFileBradescoBL)uploadFileBL).WorkingFolder = WorkingFolder;
                    _documentoCliente = uploadFileBL.EnviarDocumentoCliente(_documentoCliente);
                    break;

                default:
                    uploadFileBL      = new UploadFileBL();
                    _documentoCliente = uploadFileBL.EnviarDocumentoCliente(_documentoCliente);
                    break;
                }

                return(Ok((new Retorno()
                {
                    Dados = _documentoCliente, Mensagem = "Arquivo(s) incluído(s) com sucesso.", TipoMensagem = EnumTipoMensagem.Sucesso
                })));
            }
            catch (BusinessException ex)
            {
                if (File.Exists(WorkingFolder + "\\" + _documentoCliente.DocClienteNomeArquivoSalvo))
                {
                    File.Delete(WorkingFolder + "\\" + _documentoCliente.DocClienteNomeArquivoSalvo);
                }

                return(Ok(ex.GetRetorno()));
            }
            catch (Exception ex)
            {
                if (File.Exists(WorkingFolder + "\\" + _documentoCliente.DocClienteNomeArquivoSalvo))
                {
                    File.Delete(WorkingFolder + "\\" + _documentoCliente.DocClienteNomeArquivoSalvo);
                }

                throw new CustomException.CustomException(ex.Message, ex);
            }
        }
Example #8
0
 public virtual DocumentoCliente RetornarArquivo(DocumentoCliente documentoCliente_)
 {
     return(new DocumentoClienteDal().GetDocumentoCliente(documentoCliente_.DocClienteId));
 }
Example #9
0
 public virtual DocumentoCliente  EnviarDocumentoCliente(DocumentoCliente documentoCliente_)
 {
     throw new System.NotImplementedException("Método EnviarDocumentoCliente da classe UploadFileBL não implementado.");
 }
Example #10
0
        private void validarConteudoPDF(DocumentoCliente documentoCliente_)
        {
            #region Valida conteudo dos PDFs

            Boolean       blnArquivoPDFInvalido = false;
            StringBuilder sbPDFInvalido         = new StringBuilder("Conteudo inválido para o(s) arquivo(s):" + "\n");

            string valida = string.Empty;

            switch (documentoCliente_.DocCliTipoId)
            {
            case 1:
                //Valida CCB
                valida = ConfigurationManager.AppSettings["Bradesco.Valida_CCB"].ToString().ToUpper().Trim();
                if (!VerificarContrato(documentoCliente_.DocClienteNomeArquivoSalvo, valida))
                {
                    sbPDFInvalido.Append("CCB: " + documentoCliente_.DocClienteNomeArquivoOriginal + "\n");
                    blnArquivoPDFInvalido = true;
                }
                break;

            case 2:
                //Valida CET
                valida = ConfigurationManager.AppSettings["Bradesco.Valida_CET"].ToString().ToUpper().Trim();

                if (!VerificarContrato(documentoCliente_.DocClienteNomeArquivoSalvo, valida))
                {
                    sbPDFInvalido.Append("CCT: " + documentoCliente_.DocClienteNomeArquivoOriginal + "\n");
                    blnArquivoPDFInvalido = true;
                }
                break;

            case 3:
                //Valida Seguro
                valida = ConfigurationManager.AppSettings["Bradesco.Valida_Seguro"].ToString().ToUpper().Trim();

                if (!VerificarContrato(documentoCliente_.DocClienteNomeArquivoSalvo, valida))
                {
                    sbPDFInvalido.Append("Seguro: " + documentoCliente_.DocClienteNomeArquivoOriginal + "\n");
                    blnArquivoPDFInvalido = true;
                }
                break;

            case 4:
                //Valida Anexo CCB
                valida = ConfigurationManager.AppSettings["Bradesco.Valida_AnexoCBB"].ToString().ToUpper().Trim();

                if (!VerificarContrato(documentoCliente_.DocClienteNomeArquivoSalvo, valida))
                {
                    sbPDFInvalido.Append("Anexo CBB: " + documentoCliente_.DocClienteNomeArquivoOriginal + "\n");
                    blnArquivoPDFInvalido = true;
                }
                break;
            }


            if (blnArquivoPDFInvalido)
            {
                throw new BusinessException(EnumTipoMensagem.Alerta, sbPDFInvalido.ToString());
            }

            #endregion
        }
Example #11
0
 private void processamentoSeguro(DocumentoCliente documentoCliente_)
 {
 }
Example #12
0
 private void processamentoCET(DocumentoCliente documentoCliente_)
 {
 }
Example #13
0
        public override List <DocumentoCliente> EnviarDocumentosCliente(List <DocumentoCliente> documentosCliente_)
        {
            UtilFileBradesco utilFileBradesco = new UtilFileBradesco();

            //Validações **

            //Validações para o tipo CCB Padrão

            DocumentoCliente DocumentoClienteCCB = documentosCliente_.FindAll(p => p.DocCliTipoId == 1).First();

            #region 1 - Verifica tipo/ versão pdf
            if (UtilFile.GetMIMEType(documentosCliente_.FindAll(p => p.DocCliTipoId == 1).First().DocClienteNomeArquivoOriginal).ToLower() != "application/pdf")
            {
                throw new Exception("Erro - Documento deve ser do tipo PDF");
            }
            #endregion

            #region 2 - Verifica número proposta no PDF
            DocumentoClienteDados _documentoClienteDados = null;
            try
            {
                _documentoClienteDados = utilFileBradesco.LerPdf(WorkingFolder + "\\" + DocumentoClienteCCB.DocClienteNomeArquivoSalvo);
                Int64 _valor;
                if (!Int64.TryParse(_documentoClienteDados.DocCliDadosValor, out _valor))
                {
                    throw new Exception("Valor do campo contrato deve ser numérico.");
                }
                _documentoClienteDados.ClienteId     = DocumentoClienteCCB.ClienteId; //1 --> Tipo CCB
                _documentoClienteDados.TipoInfoCliId = (new ClienteTipoInformacaoClienteDal().GetAllByIdCliente(_documentoClienteDados.ClienteId).First()).TipoInfoCliId;
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao recuperar o número do contrato. Erro [" + ex.Message + "]");
            }
            #endregion

            #region 3 - Consultar numero proposta por usuário na base
            //Não pode inserir um numero de proposta na base sem antes verificar se o numero da proposta já existe na base e se a proposta foi cadastrada pelo mesmo usuário que está enviando o arquivo.

            //Recupera todos os documentos de clientes que possuem o mesmo número de proposta
            List <DocumentoCliente> _documentosClienteCadastrado = new EnviarArquivoDal().ConsultarNumeroPropostaPorUsuario(_documentoClienteDados.DocCliDadosValor.Trim()).ToList();
            if (_documentosClienteCadastrado.FindAll(p => p.UsuarioId != DocumentoClienteCCB.UsuarioId).Count > 0)
            {
                throw new BusinessException(0, EnumTipoMensagem.Alerta, "Proposta enviada por outro usuário.");
            }

            int docCliSituId;

            //Consulta as situações
            List <DocumentoClienteSituacao> _documentosClienteSituacao = new DocumentoClienteSituacaoDal().GetAllDocumentoClienteSituacaoByDocCliTipoId(DocumentoClienteCCB.DocCliTipoId).ToList();
            if (_documentosClienteSituacao.Count == 0)
            {
                throw new Exception("Situação não cadastrada para este Tipo de Documento.");
            }
            docCliSituId = _documentosClienteSituacao.Min(p => p.DocCliSituId);
            DocumentoClienteCCB.DocCliSituId = docCliSituId;
            #endregion

            #region 5 - Consulta arquivos já existentes para o numero de proposta
            //Caso já exista um tipo e situação do arquivo na base igual ao que o usuário está tentando realizar o upload, irá perguntar ao usuário se ele deseja sobreescrever.
            if (!Reenvio && _documentosClienteCadastrado.FindAll(p => p.DocCliSituId == DocumentoClienteCCB.DocCliSituId).Count > 0)
            {
                //
                throw new BusinessException(EnumTipoMensagem.Pergunta, "Proposta já cadastrada para este tipo de arquivo e situação.");
            }
            #endregion


            //Fim validações

            //Validações para todos tipos
            for (int contador = 0; contador < documentosCliente_.Count; contador++)
            {
                #region 1 - Verifica tipo/ versão pdf
                if (UtilFile.GetMIMEType(documentosCliente_[contador].DocClienteNomeArquivoOriginal).ToLower() != "application/pdf")
                {
                    throw new Exception("Erro - Documento deve ser do tipo PDF");
                }
                #endregion

                #region Validar Conteúdo PDF

                validarConteudoPDF(documentosCliente_[contador]);

                #endregion

                #region Processamentos

                Processamentos(documentosCliente_[contador]);

                #endregion

                //Consulta as situações
                _documentosClienteSituacao = new DocumentoClienteSituacaoDal().GetAllDocumentoClienteSituacaoByDocCliTipoId(documentosCliente_[contador].DocCliTipoId).ToList();
                if (_documentosClienteSituacao.Count == 0)
                {
                    throw new Exception("Situação não cadastrada para este Tipo de Documento.");
                }
                docCliSituId = _documentosClienteSituacao.Min(p => p.DocCliSituId);
            }

            EnviarArquivoDal daoEnviarArquivo = new EnviarArquivoDal();
            try
            {
                daoEnviarArquivo.BeginTransaction();

                //Carga dos arquivos
                for (int contador = 0; contador < documentosCliente_.Count; contador++)
                {
                    //Consulta as situações
                    _documentosClienteSituacao = new DocumentoClienteSituacaoDal().GetAllDocumentoClienteSituacaoByDocCliTipoId(documentosCliente_[contador].DocCliTipoId).ToList();
                    if (_documentosClienteSituacao.Count == 0)
                    {
                        throw new Exception("Situação não cadastrada para este Tipo de Documento.");
                    }
                    docCliSituId = _documentosClienteSituacao.Min(p => p.DocCliSituId);

                    documentosCliente_[contador].DocCliSituId = docCliSituId;

                    #region 4 - Insere o numero proposta em base
                    //Se o numero da proposta está OK e ainda não existe na base, irá realizar o insert na base, caso já exista irá utilizar o ID do numero de proposta que já existe na base
                    List <DocumentoClienteDados> _documentosClienteDados = new DocumentoClienteDadosDal().GetAllByDocCliDadosValor(_documentoClienteDados.DocCliDadosValor).ToList();
                    if (_documentosClienteDados.Count == 0)
                    {
                        _documentoClienteDados = daoEnviarArquivo.InserirDocumentoClienteDados(_documentoClienteDados);
                    }
                    else
                    {
                        _documentoClienteDados = _documentosClienteDados.First();
                    }
                    #endregion

                    #region 6 - Salva arquivo em servidor e faz insert na base

                    List <DocumentoCliente> _documentosClientes = new EnviarArquivoDal().ConsultarDocumentoClientePorDocCliDadosValorDocCliTipoId(
                        _documentoClienteDados.DocCliDadosValor,
                        documentosCliente_[contador].DocCliTipoId).ToList();

                    if (_documentosClientes.Count > 0)
                    {
                        //Apaga o arquivo
                        if (System.IO.File.Exists(WorkingFolder + "\\" + _documentosClientes.First().DocClienteNomeArquivoSalvo))
                        {
                            System.IO.File.Delete(WorkingFolder + "\\" + _documentosClientes.First().DocClienteNomeArquivoSalvo);
                        }
                        //Atualiza
                        documentosCliente_[contador].DocClienteId = _documentosClientes.First().DocClienteId;
                        new DocumentoClienteDal().Update(documentosCliente_[contador]);
                    }
                    else //Insere
                    {
                        documentosCliente_[contador] = (DocumentoCliente) new DocumentoClienteDal().Insert(documentosCliente_[contador]);
                    }
                    #endregion

                    #region 7 - Faz insert na base p / relacionar id do documento e do num.de proposta

                    if (_documentosClientes.Count == 0)
                    {
                        DocumentoClienteDadosDoc _documentoClienteDadosDoc = new DocumentoClienteDadosDoc();
                        _documentoClienteDadosDoc.DocClienteId  = documentosCliente_[contador].DocClienteId;
                        _documentoClienteDadosDoc.DocCliDadosId = _documentoClienteDados.DocCliDadosId;
                        _documentoClienteDadosDoc = new DocumentoClienteDadosDocDal().Insert(_documentoClienteDadosDoc);
                    }

                    #endregion
                }

                new DocumentoClienteDadosDocDal().Delete(new DocumentoClienteDadosDoc()
                {
                    DocCliDadosDocId = 85
                });
                new DocumentoClienteDadosDal().Delete(new DocumentoClienteDados()
                {
                    DocCliDadosId = 38
                });
                new DocumentoClienteDal().Delete(new DocumentoCliente()
                {
                    DocClienteId = 88
                });

                new DocumentoClienteDadosDocDal().CommitTransaction();
            }
            catch (Exception)
            {
                daoEnviarArquivo.RollbackTransaction();
                throw;
            }
            return(documentosCliente_);
        }