From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../IndiceArquivoDigitalRepository.cs | 402 +++++++++++++++++++++ 1 file changed, 402 insertions(+) create mode 100644 Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs') diff --git a/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs new file mode 100644 index 0000000..5d50ddf --- /dev/null +++ b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs @@ -0,0 +1,402 @@ +using AutoMapper; +using Gestor.Infrastructure.Entities.Common; +using Gestor.Infrastructure.Entities.Generic; +using Gestor.Infrastructure.Helpers; +using Gestor.Infrastructure.Mappers; +using Gestor.Infrastructure.Repository.Generic; +using Gestor.Infrastructure.Repository.Interface; +using Gestor.Infrastructure.UnitOfWork.Generic; +using Gestor.Model.Common; +using Gestor.Model.Domain.Common; +using NHibernate; +using NHibernate.Connection; +using NHibernate.Impl; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.Common; +using System.Data.SqlClient; +using System.Linq; +using System.Linq.Expressions; +using System.Runtime.CompilerServices; + +namespace Gestor.Infrastructure.Repository.Logic +{ + public class IndiceArquivoDigitalRepository : GenericRepository, IIndiceArquivoDigitalRepository, IGenericRepository + { + private readonly GenericUnitOfWork _unitOfWork; + + public IndiceArquivoDigitalRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) + { + this._unitOfWork = unitOfWork; + } + + public ControleArquivoDigital BuscarBanco() + { + ControleArquivoDigitalDb controleArquivoDigitalDb = ( + from x in this._unitOfWork.Query() + orderby x.Id descending + select x).First(); + return ApplicationMapper.Mapper.Map(controleArquivoDigitalDb); + } + + public List BuscarBancos() + { + List list = ( + from x in this._unitOfWork.Query() + orderby x.Id descending + select x).ToList(); + return ApplicationMapper.Mapper.Map, List>(list); + } + + public ControleArquivoDigital ConsultarBanco(string banco) + { + ControleArquivoDigitalDb controleArquivoDigitalDb = this._unitOfWork.Query().First((ControleArquivoDigitalDb x) => x.Catalogo == banco); + return ApplicationMapper.Mapper.Map(controleArquivoDigitalDb); + } + + public void Delete(long id) + { + IndiceArquivoDigitalDb indiceArquivoDigitalDb = base.FindEntityById(id); + if (indiceArquivoDigitalDb == null) + { + return; + } + base.Delete(indiceArquivoDigitalDb); + } + + public List Find(TipoArquivoDigital tipo, long id, long usuario, bool buscarAssinaturas = false) + { + object connection; + SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl; + DataTable dataTable = new DataTable(); + DataTable dataTable1 = new DataTable(); + string str1 = ""; + switch (tipo) + { + case TipoArquivoDigital.Todos: + { + str1 = "idcliente = @id "; + break; + } + case TipoArquivoDigital.Cliente: + { + str1 = "idcliente = @id AND ISNULL(iddocumento, 0) = 0 AND ISNULL(iditem, 0) = 0 AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idparcela, 0) = 0 AND ISNULL(idsinistro, 0) = 0 "; + break; + } + case TipoArquivoDigital.Apolice: + { + str1 = "iddocumento = @id AND ISNULL(iditem, 0) = 0 AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idparcela, 0) = 0 AND ISNULL(idsinistro, 0) = 0 "; + break; + } + case TipoArquivoDigital.Parcela: + { + str1 = "idparcela = @id AND ISNULL(iditem, 0) = 0 AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idsinistro, 0) = 0 "; + break; + } + case TipoArquivoDigital.Item: + { + str1 = "iditem = @id AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idparcela, 0) = 0 AND ISNULL(idsinistro, 0) = 0 "; + break; + } + case TipoArquivoDigital.Sinistro: + { + str1 = "idsinistro = @id AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idparcela, 0) = 0 "; + break; + } + case TipoArquivoDigital.Vendedor: + { + str1 = "idvendedor = @id "; + break; + } + case TipoArquivoDigital.Extrato: + { + str1 = "idextrato = @id "; + break; + } + case TipoArquivoDigital.Seguradora: + { + str1 = "idciaseg = @id "; + break; + } + case TipoArquivoDigital.Lancamento: + { + str1 = "idlancamen = @id "; + break; + } + case TipoArquivoDigital.Fornecedor: + { + str1 = "idfornecedor = @id AND ISNULL(idlancamen, 0) = 0 "; + break; + } + case TipoArquivoDigital.Prospeccao: + { + str1 = "idvenctoaleatorio = @id "; + break; + } + case TipoArquivoDigital.Usuario: + { + str1 = "idusuarioarquivo = @id "; + break; + } + case TipoArquivoDigital.Empresa: + { + str1 = "idempresa = @id AND ISNULL(idcliente, 0) = 0 AND ISNULL(iddocumento, 0) = 0 AND ISNULL(iditem, 0) = 0 AND ISNULL(idvenctoaleatorio, 0) = 0 AND ISNULL(idparcela, 0) = 0 AND ISNULL(idsinistro, 0) = 0 AND ISNULL(idlancamen, 0) = 0 AND ISNULL(idfornecedor, 0) = 0 AND ISNULL(idextrato, 0) = 0 AND ISNULL(idciaseg, 0) = 0 AND ISNULL(idvendedor, 0) = 0 AND ISNULL(idusuarioarquivo, 0) = 0 AND ISNULL(idtarefa, 0) = 0 AND ISNULL(idsocio, 0) = 0 "; + break; + } + case TipoArquivoDigital.Socio: + { + str1 = "idsocio = @id "; + break; + } + case TipoArquivoDigital.Tarefa: + { + str1 = "IdTarefa = @id "; + break; + } + case TipoArquivoDigital.NotaFiscal: + { + str1 = "IdNotaFiscal = @id "; + break; + } + case TipoArquivoDigital.Estipulante: + { + str1 = "IdEstipulante = @id "; + break; + } + } + if (sessionFactory != null) + { + connection = sessionFactory.ConnectionProvider.GetConnection(); + } + else + { + connection = null; + } + using (SqlConnection sqlConnection = connection as SqlConnection) + { + using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) + { + sqlCommand.CommandText = string.Concat("SELECT * FROM newarquivodigital WHERE ", (usuario == 0 ? "" : "(excluido IS NULL OR excluido != '1') AND"), " ", str1); + sqlCommand.Parameters.AddWithValue("@id", id); + using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter()) + { + sqlDataAdapter.SelectCommand = sqlCommand; + sqlDataAdapter.Fill(dataTable); + } + if (dataTable.Rows.Count != 0) + { + try + { + if (buscarAssinaturas) + { + List condicaos = new List() + { + new Condicao() + { + Campo = "IndiceId", + Valores = ( + from x in dataTable.AsEnumerable().ToList() + select x.Field("idnewarquivodigital")).ToList().CriarValor() + }, + new Condicao() + { + Campo = "excluido", + Valores = null, + Grupo = 2, + Operacao = Operacao.Or + }, + new Condicao() + { + Campo = "excluido", + Valores = "1".CriarValor(), + Operador = Operador.Diferente, + Grupo = 2, + Operacao = Operacao.Or + } + }; + dataTable1 = sqlCommand.Select(condicaos.CreateParameters(0), "SELECT assinado, IndiceId, UrlAssinatura FROM ArquivoParaAssinatura WHERE ", ""); + } + } + catch (Exception exception) + { + dataTable1 = null; + } + } + else + { + return new List(); + } + } + } + return dataTable.AsEnumerable().ToList().Select((DataRow x) => { + string str; + IndiceArquivoDigital indiceArquivoDigital = new IndiceArquivoDigital() + { + Id = x.Field("idnewarquivodigital"), + IdArquivoDigital = x.Field("idarquivodigital"), + Bd = x.Field("banco"), + Descricao = x.Field("descricao"), + Extensao = x.Field("extension") + }; + long? nullable = x.Field("idcliente"); + indiceArquivoDigital.IdCliente = nullable.GetValueOrDefault(); + nullable = x.Field("iddocumento"); + indiceArquivoDigital.IdDocumento = nullable.GetValueOrDefault(); + nullable = x.Field("iditem"); + indiceArquivoDigital.IdItem = nullable.GetValueOrDefault(); + nullable = x.Field("idparcela"); + indiceArquivoDigital.IdParcela = nullable.GetValueOrDefault(); + nullable = x.Field("idsinistro"); + indiceArquivoDigital.IdSinistro = nullable.GetValueOrDefault(); + nullable = x.Field("idciaseg"); + indiceArquivoDigital.IdSeguradora = nullable.GetValueOrDefault(); + nullable = x.Field("idvendedor"); + indiceArquivoDigital.IdVendedor = nullable.GetValueOrDefault(); + nullable = x.Field("idextrato"); + indiceArquivoDigital.IdExtrato = nullable.GetValueOrDefault(); + nullable = x.Field("idempresa"); + indiceArquivoDigital.IdEmpresa = nullable.GetValueOrDefault(); + nullable = x.Field("idlancamen"); + indiceArquivoDigital.IdLancamento = nullable.GetValueOrDefault(); + nullable = x.Field("idfornecedor"); + indiceArquivoDigital.IdFornecedor = nullable.GetValueOrDefault(); + nullable = x.Field("idvenctoaleatorio"); + indiceArquivoDigital.IdProspeccao = nullable.GetValueOrDefault(); + nullable = x.Field("idsocio"); + indiceArquivoDigital.IdSocio = nullable.GetValueOrDefault(); + indiceArquivoDigital.Excluido = (x.Field("excluido") == null ? true : x.Field("excluido").ToString() != "1"); + nullable = x.Field("idusuarioarquivo"); + indiceArquivoDigital.IdUsuario = nullable.GetValueOrDefault(); + nullable = x.Field("IdTarefa"); + indiceArquivoDigital.IdTarefa = nullable.GetValueOrDefault(); + nullable = x.Field("IdNotaFiscal"); + indiceArquivoDigital.IdNotaFiscal = nullable.GetValueOrDefault(); + nullable = x.Field("IdEstipulante"); + indiceArquivoDigital.IdEstipulante = nullable.GetValueOrDefault(); + nullable = x.Field("usuariocriacao"); + indiceArquivoDigital.UsuarioCriacao = nullable.GetValueOrDefault(); + nullable = x.Field("usuarioalteracao"); + indiceArquivoDigital.UsuarioAtualizacao = nullable.GetValueOrDefault(); + DateTime? nullable1 = x.Field("datacriacao"); + indiceArquivoDigital.DataCriacao = new DateTime?((nullable1.HasValue ? nullable1.GetValueOrDefault() : DateTime.MinValue)); + nullable1 = x.Field("dataalteracao"); + indiceArquivoDigital.DataAtualizacao = new DateTime?((nullable1.HasValue ? nullable1.GetValueOrDefault() : DateTime.MinValue)); + indiceArquivoDigital.Assinado = (!buscarAssinaturas || dataTable1 == null ? false : dataTable1.AsEnumerable().ToList().Any((DataRow a) => { + if (a.Field("IndiceId") != x.Field("idnewarquivodigital")) + { + return false; + } + return a.Field("assinado"); + })); + indiceArquivoDigital.EnviadoAssinatura = (!buscarAssinaturas || dataTable1 == null ? false : dataTable1.AsEnumerable().ToList().Any((DataRow a) => a.Field("IndiceId") == x.Field("idnewarquivodigital"))); + if (!buscarAssinaturas || dataTable1 == null) + { + str = ""; + } + else + { + DataRow dataRow = dataTable1.AsEnumerable().ToList().FirstOrDefault((DataRow a) => a.Field("IndiceId") == x.Field("idnewarquivodigital")); + if (dataRow != null) + { + str = dataRow.Field("UrlAssinatura"); + } + else + { + str = null; + } + } + indiceArquivoDigital.UrlAssinatura = str; + indiceArquivoDigital.AzureGuid = x.Field("AzureGuid"); + indiceArquivoDigital.AzureStorage = x.Field("AzureStorage"); + return indiceArquivoDigital; + }).ToList(); + } + + public List Find(string condicao) + { + List list; + object connection; + DataTable dataTable = new DataTable(); + SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl; + try + { + if (sessionFactory != null) + { + connection = sessionFactory.ConnectionProvider.GetConnection(); + } + else + { + connection = null; + } + using (SqlConnection sqlConnection = connection as SqlConnection) + { + using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) + { + sqlCommand.CommandText = string.Concat("SELECT * FROM AssinaturaRecebida WHERE tipo = 'MANIFEST' ", condicao, " "); + using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter()) + { + sqlDataAdapter.SelectCommand = sqlCommand; + sqlDataAdapter.Fill(dataTable); + } + } + } + list = ( + from x in dataTable.AsEnumerable().ToList() + select new ArquivoDigital() + { + Id = x.Field("Id"), + Arquivo = x.Field("Bytes"), + Descricao = x.Field("Nome"), + Extensao = x.Field("Mime"), + DataCriacao = x.Field("DataCriacao"), + AzureGuid = x.Field("AzureGuid") + }).ToList(); + } + catch (Exception exception) + { + list = new List(); + } + return list; + } + + public ArquivoDigital FindAssinatura(long id) + { + string str = string.Format(" AND IndiceId = {0}", id); + return this.Find(str).FirstOrDefault(); + } + + public List FindAssinatura(List id) + { + string str = string.Concat(" AND IndiceId IN (", string.Join(",", id), ")"); + return this.Find(str); + } + + public IndiceArquivoDigital FindById(long id) + { + IndiceArquivoDigitalDb indiceArquivoDigitalDb = base.FindEntityById(id); + return ApplicationMapper.Mapper.Map(indiceArquivoDigitalDb); + } + + public IndiceArquivoDigital Merge(IndiceArquivoDigital indice) + { + IndiceArquivoDigitalDb indiceArquivoDigitalDb = ApplicationMapper.Mapper.Map(indice); + base.Merge(indiceArquivoDigitalDb); + return ApplicationMapper.Mapper.Map(indiceArquivoDigitalDb); + } + + public IndiceArquivoDigital SaveOrUpdate(IndiceArquivoDigital indice) + { + IndiceArquivoDigitalDb indiceArquivoDigitalDb = ApplicationMapper.Mapper.Map(indice); + this.SaveOrUpdate(indiceArquivoDigitalDb); + return ApplicationMapper.Mapper.Map(indiceArquivoDigitalDb); + } + + public ControleArquivoDigital SaveOrUpdate(ControleArquivoDigital catalogo) + { + ControleArquivoDigitalDb controleArquivoDigitalDb = ApplicationMapper.Mapper.Map(catalogo); + this._unitOfWork.Repository().SaveOrUpdate(controleArquivoDigitalDb); + return ApplicationMapper.Mapper.Map(controleArquivoDigitalDb); + } + } +} \ No newline at end of file -- cgit v1.2.3