diff options
Diffstat (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs')
| -rw-r--r-- | Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/IndiceArquivoDigitalRepository.cs | 402 |
1 files changed, 402 insertions, 0 deletions
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<IndiceArquivoDigitalDb>, IIndiceArquivoDigitalRepository, IGenericRepository<IndiceArquivoDigitalDb>
+ {
+ 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<ControleArquivoDigitalDb>()
+ orderby x.Id descending
+ select x).First<ControleArquivoDigitalDb>();
+ return ApplicationMapper.Mapper.Map<ControleArquivoDigitalDb, ControleArquivoDigital>(controleArquivoDigitalDb);
+ }
+
+ public List<ControleArquivoDigital> BuscarBancos()
+ {
+ List<ControleArquivoDigitalDb> list = (
+ from x in this._unitOfWork.Query<ControleArquivoDigitalDb>()
+ orderby x.Id descending
+ select x).ToList<ControleArquivoDigitalDb>();
+ return ApplicationMapper.Mapper.Map<List<ControleArquivoDigitalDb>, List<ControleArquivoDigital>>(list);
+ }
+
+ public ControleArquivoDigital ConsultarBanco(string banco)
+ {
+ ControleArquivoDigitalDb controleArquivoDigitalDb = this._unitOfWork.Query<ControleArquivoDigitalDb>().First<ControleArquivoDigitalDb>((ControleArquivoDigitalDb x) => x.Catalogo == banco);
+ return ApplicationMapper.Mapper.Map<ControleArquivoDigitalDb, ControleArquivoDigital>(controleArquivoDigitalDb);
+ }
+
+ public void Delete(long id)
+ {
+ IndiceArquivoDigitalDb indiceArquivoDigitalDb = base.FindEntityById(id);
+ if (indiceArquivoDigitalDb == null)
+ {
+ return;
+ }
+ base.Delete(indiceArquivoDigitalDb);
+ }
+
+ public List<IndiceArquivoDigital> 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<Condicao> condicaos = new List<Condicao>()
+ {
+ new Condicao()
+ {
+ Campo = "IndiceId",
+ Valores = (
+ from x in dataTable.AsEnumerable().ToList<DataRow>()
+ select x.Field<long>("idnewarquivodigital")).ToList<long>().CriarValor<long>()
+ },
+ new Condicao()
+ {
+ Campo = "excluido",
+ Valores = null,
+ Grupo = 2,
+ Operacao = Operacao.Or
+ },
+ new Condicao()
+ {
+ Campo = "excluido",
+ Valores = "1".CriarValor<string>(),
+ 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<IndiceArquivoDigital>();
+ }
+ }
+ }
+ return dataTable.AsEnumerable().ToList<DataRow>().Select<DataRow, IndiceArquivoDigital>((DataRow x) => {
+ string str;
+ IndiceArquivoDigital indiceArquivoDigital = new IndiceArquivoDigital()
+ {
+ Id = x.Field<long>("idnewarquivodigital"),
+ IdArquivoDigital = x.Field<long>("idarquivodigital"),
+ Bd = x.Field<string>("banco"),
+ Descricao = x.Field<string>("descricao"),
+ Extensao = x.Field<string>("extension")
+ };
+ long? nullable = x.Field<long?>("idcliente");
+ indiceArquivoDigital.IdCliente = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("iddocumento");
+ indiceArquivoDigital.IdDocumento = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("iditem");
+ indiceArquivoDigital.IdItem = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idparcela");
+ indiceArquivoDigital.IdParcela = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idsinistro");
+ indiceArquivoDigital.IdSinistro = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idciaseg");
+ indiceArquivoDigital.IdSeguradora = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idvendedor");
+ indiceArquivoDigital.IdVendedor = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idextrato");
+ indiceArquivoDigital.IdExtrato = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idempresa");
+ indiceArquivoDigital.IdEmpresa = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idlancamen");
+ indiceArquivoDigital.IdLancamento = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idfornecedor");
+ indiceArquivoDigital.IdFornecedor = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idvenctoaleatorio");
+ indiceArquivoDigital.IdProspeccao = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("idsocio");
+ indiceArquivoDigital.IdSocio = nullable.GetValueOrDefault();
+ indiceArquivoDigital.Excluido = (x.Field<object>("excluido") == null ? true : x.Field<object>("excluido").ToString() != "1");
+ nullable = x.Field<long?>("idusuarioarquivo");
+ indiceArquivoDigital.IdUsuario = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("IdTarefa");
+ indiceArquivoDigital.IdTarefa = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("IdNotaFiscal");
+ indiceArquivoDigital.IdNotaFiscal = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("IdEstipulante");
+ indiceArquivoDigital.IdEstipulante = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("usuariocriacao");
+ indiceArquivoDigital.UsuarioCriacao = nullable.GetValueOrDefault();
+ nullable = x.Field<long?>("usuarioalteracao");
+ indiceArquivoDigital.UsuarioAtualizacao = nullable.GetValueOrDefault();
+ DateTime? nullable1 = x.Field<DateTime?>("datacriacao");
+ indiceArquivoDigital.DataCriacao = new DateTime?((nullable1.HasValue ? nullable1.GetValueOrDefault() : DateTime.MinValue));
+ nullable1 = x.Field<DateTime?>("dataalteracao");
+ indiceArquivoDigital.DataAtualizacao = new DateTime?((nullable1.HasValue ? nullable1.GetValueOrDefault() : DateTime.MinValue));
+ indiceArquivoDigital.Assinado = (!buscarAssinaturas || dataTable1 == null ? false : dataTable1.AsEnumerable().ToList<DataRow>().Any<DataRow>((DataRow a) => {
+ if (a.Field<long>("IndiceId") != x.Field<long>("idnewarquivodigital"))
+ {
+ return false;
+ }
+ return a.Field<bool>("assinado");
+ }));
+ indiceArquivoDigital.EnviadoAssinatura = (!buscarAssinaturas || dataTable1 == null ? false : dataTable1.AsEnumerable().ToList<DataRow>().Any<DataRow>((DataRow a) => a.Field<long>("IndiceId") == x.Field<long>("idnewarquivodigital")));
+ if (!buscarAssinaturas || dataTable1 == null)
+ {
+ str = "";
+ }
+ else
+ {
+ DataRow dataRow = dataTable1.AsEnumerable().ToList<DataRow>().FirstOrDefault<DataRow>((DataRow a) => a.Field<long>("IndiceId") == x.Field<long>("idnewarquivodigital"));
+ if (dataRow != null)
+ {
+ str = dataRow.Field<string>("UrlAssinatura");
+ }
+ else
+ {
+ str = null;
+ }
+ }
+ indiceArquivoDigital.UrlAssinatura = str;
+ indiceArquivoDigital.AzureGuid = x.Field<Guid?>("AzureGuid");
+ indiceArquivoDigital.AzureStorage = x.Field<string>("AzureStorage");
+ return indiceArquivoDigital;
+ }).ToList<IndiceArquivoDigital>();
+ }
+
+ public List<ArquivoDigital> Find(string condicao)
+ {
+ List<ArquivoDigital> 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<DataRow>()
+ select new ArquivoDigital()
+ {
+ Id = x.Field<long>("Id"),
+ Arquivo = x.Field<byte[]>("Bytes"),
+ Descricao = x.Field<string>("Nome"),
+ Extensao = x.Field<string>("Mime"),
+ DataCriacao = x.Field<DateTime?>("DataCriacao"),
+ AzureGuid = x.Field<Guid?>("AzureGuid")
+ }).ToList<ArquivoDigital>();
+ }
+ catch (Exception exception)
+ {
+ list = new List<ArquivoDigital>();
+ }
+ return list;
+ }
+
+ public ArquivoDigital FindAssinatura(long id)
+ {
+ string str = string.Format(" AND IndiceId = {0}", id);
+ return this.Find(str).FirstOrDefault<ArquivoDigital>();
+ }
+
+ public List<ArquivoDigital> FindAssinatura(List<long> id)
+ {
+ string str = string.Concat(" AND IndiceId IN (", string.Join<long>(",", id), ")");
+ return this.Find(str);
+ }
+
+ public IndiceArquivoDigital FindById(long id)
+ {
+ IndiceArquivoDigitalDb indiceArquivoDigitalDb = base.FindEntityById(id);
+ return ApplicationMapper.Mapper.Map<IndiceArquivoDigitalDb, IndiceArquivoDigital>(indiceArquivoDigitalDb);
+ }
+
+ public IndiceArquivoDigital Merge(IndiceArquivoDigital indice)
+ {
+ IndiceArquivoDigitalDb indiceArquivoDigitalDb = ApplicationMapper.Mapper.Map<IndiceArquivoDigital, IndiceArquivoDigitalDb>(indice);
+ base.Merge(indiceArquivoDigitalDb);
+ return ApplicationMapper.Mapper.Map<IndiceArquivoDigitalDb, IndiceArquivoDigital>(indiceArquivoDigitalDb);
+ }
+
+ public IndiceArquivoDigital SaveOrUpdate(IndiceArquivoDigital indice)
+ {
+ IndiceArquivoDigitalDb indiceArquivoDigitalDb = ApplicationMapper.Mapper.Map<IndiceArquivoDigital, IndiceArquivoDigitalDb>(indice);
+ this.SaveOrUpdate(indiceArquivoDigitalDb);
+ return ApplicationMapper.Mapper.Map<IndiceArquivoDigitalDb, IndiceArquivoDigital>(indiceArquivoDigitalDb);
+ }
+
+ public ControleArquivoDigital SaveOrUpdate(ControleArquivoDigital catalogo)
+ {
+ ControleArquivoDigitalDb controleArquivoDigitalDb = ApplicationMapper.Mapper.Map<ControleArquivoDigital, ControleArquivoDigitalDb>(catalogo);
+ this._unitOfWork.Repository<ControleArquivoDigitalDb>().SaveOrUpdate(controleArquivoDigitalDb);
+ return ApplicationMapper.Mapper.Map<ControleArquivoDigitalDb, ControleArquivoDigital>(controleArquivoDigitalDb);
+ }
+ }
+}
\ No newline at end of file |