summaryrefslogtreecommitdiff
path: root/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs')
-rw-r--r--Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs251
1 files changed, 251 insertions, 0 deletions
diff --git a/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs
new file mode 100644
index 0000000..f3b92f0
--- /dev/null
+++ b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/PatrimonialRepository.cs
@@ -0,0 +1,251 @@
+using AutoMapper;
+using Gestor.Infrastructure.Entities.Generic;
+using Gestor.Infrastructure.Entities.Seguros;
+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 Gestor.Model.Domain.Generic;
+using Gestor.Model.Domain.Seguros;
+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 PatrimonialRepository : GenericRepository<PatrimonialDb>, IPatrimonialRepository, IGenericRepository<PatrimonialDb>
+ {
+ private readonly GenericUnitOfWork _unitOfWork;
+
+ public PatrimonialRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
+ {
+ this._unitOfWork = unitOfWork;
+ }
+
+ public void Delete(long id)
+ {
+ base.Delete(base.FindEntityById(id));
+ }
+
+ public void DeleteRange(List<long> ids)
+ {
+ List<PatrimonialDb> list = (
+ from x in base.All()
+ where ids.Contains(x.Item.Id)
+ select x).ToList<PatrimonialDb>();
+ base.DeleteRange(list);
+ }
+
+ public Patrimonial Find(long id)
+ {
+ PatrimonialDb patrimonialDb = base.All().FirstOrDefault<PatrimonialDb>((PatrimonialDb x) => x.Item.Id == id) ?? new PatrimonialDb();
+ return ApplicationMapper.Mapper.Map<PatrimonialDb, Patrimonial>(patrimonialDb);
+ }
+
+ public Patrimonial FindById(long id)
+ {
+ PatrimonialDb patrimonialDb = base.FindEntityById(id);
+ return ApplicationMapper.Mapper.Map<PatrimonialDb, Patrimonial>(patrimonialDb);
+ }
+
+ public List<PesquisaAvancada> FindImobiliaria(string imobiliaria, FiltroStatusDocumento status, List<VendedorUsuario> vendedorVinculado)
+ {
+ List<PesquisaAvancada> pesquisaAvancadas;
+ object connection;
+ DataTable dataTable = new DataTable();
+ DataTable dataTable1 = new DataTable();
+ DataTable dataTable2 = new DataTable();
+ DataTable dataTable3 = new DataTable();
+ SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl;
+ 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 iditem as id FROM resempco WHERE imobiliaria LIKE '%", imobiliaria, "%'");
+ using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
+ {
+ sqlDataAdapter.SelectCommand = sqlCommand;
+ sqlDataAdapter.Fill(dataTable);
+ }
+ if (dataTable.Rows.Count != 0)
+ {
+ string str = string.Concat(" AND iditem IN (", string.Join<long>(",", dataTable.AsEnumerable().Select<DataRow, long>((DataRow v) => v.Field<long>("id"))), ")");
+ sqlCommand.CommandText = string.Concat("SELECT iddocumento as id, descricao, iditem FROM item WHERE 1=1 ", str);
+ using (SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter())
+ {
+ sqlDataAdapter1.SelectCommand = sqlCommand;
+ sqlDataAdapter1.Fill(dataTable1);
+ }
+ sqlCommand.CommandText = string.Concat("SELECT DISTINCT cl.nome as cliente, c.idcliente, d.idcontrole, d.iddocumento, situacao, vigencia1, vigencia2, proposta, contrato as apolice, aditamento as endosso, CAST(tipo as INTEGER) as tipo FROM documento d INNER JOIN controle c on c.idcontrole = d.idcontrole INNER JOIN cliente cl on cl.idcliente = c.idcliente WHERE d.iddocumento IN (", string.Join<long>(",", dataTable1.AsEnumerable().Select<DataRow, long>((DataRow v) => v.Field<long>("id"))), ")");
+ using (SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter())
+ {
+ sqlDataAdapter2.SelectCommand = sqlCommand;
+ sqlDataAdapter2.Fill(dataTable2);
+ }
+ string str1 = string.Concat(" AND d.idcontrole IN (", string.Join<long>(",", (
+ from x in dataTable2.AsEnumerable().ToList<DataRow>()
+ select x.Field<long>("idcontrole")).ToList<long>()), ")");
+ sqlCommand.CommandText = string.Concat("SELECT DISTINCT vp.idvendedor, d.iddocumento, d.idcontrole, vp.idtipovendedor FROM vendedorparcela vp INNER JOIN documento d on d.iddocumento = vp.iddocumento WHERE 1=1 ", str1);
+ using (SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter())
+ {
+ sqlDataAdapter3.SelectCommand = sqlCommand;
+ sqlDataAdapter3.Fill(dataTable3);
+ List<long> list = null;
+ if (vendedorVinculado != null && vendedorVinculado.Count > 0)
+ {
+ list = dataTable3.AsEnumerable().Where<DataRow>((DataRow x) => {
+ List<VendedorUsuario> vendedorUsuarios = vendedorVinculado;
+ Func<VendedorUsuario, long> u003cu003e9_85 = PatrimonialRepository.u003cu003ec.u003cu003e9__8_5;
+ if (u003cu003e9_85 == null)
+ {
+ u003cu003e9_85 = (VendedorUsuario v) => v.Vendedor.Id;
+ PatrimonialRepository.u003cu003ec.u003cu003e9__8_5 = u003cu003e9_85;
+ }
+ return vendedorUsuarios.Select<VendedorUsuario, long>(u003cu003e9_85).Contains<long>(x.Field<long>("idvendedor"));
+ }).Select<DataRow, long>((DataRow x) => x.Field<long>("idcontrole")).ToList<long>();
+ }
+ if (list != null && list.Count == 0)
+ {
+ return new List<PesquisaAvancada>();
+ }
+ return Auxiliar.PesquisaAvancada(status, dataTable2, dataTable1, list);
+ }
+ }
+ else
+ {
+ pesquisaAvancadas = new List<PesquisaAvancada>();
+ }
+ }
+ }
+ return pesquisaAvancadas;
+ }
+
+ public List<PesquisaAvancada> Findlocatario(string imobiliaria, FiltroStatusDocumento status, List<VendedorUsuario> vendedorVinculado)
+ {
+ List<PesquisaAvancada> pesquisaAvancadas;
+ object connection;
+ bool count;
+ DataTable dataTable = new DataTable();
+ DataTable dataTable1 = new DataTable();
+ DataTable dataTable2 = new DataTable();
+ DataTable dataTable3 = new DataTable();
+ SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl;
+ 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(new string[] { "SELECT DISTINCT rec.iditem AS id FROM resempco rec INNER JOIN item i ON i.iditem = rec.iditem INNER JOIN documento d ON i.IDDOCUMENTO = d.IDDOCUMENTO WHERE (rec.locatario LIKE '%", imobiliaria, "%' OR rec.locatario2 LIKE '%", imobiliaria, "%' OR rec.locatario3 LIKE '%", imobiliaria, "%') AND d.excluido != 1;" });
+ using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
+ {
+ sqlDataAdapter.SelectCommand = sqlCommand;
+ sqlDataAdapter.Fill(dataTable);
+ }
+ if (dataTable.Rows.Count != 0)
+ {
+ string str = string.Concat(" AND iditem IN (", string.Join<long>(",", dataTable.AsEnumerable().Select<DataRow, long>((DataRow v) => v.Field<long>("id"))), ")");
+ sqlCommand.CommandText = string.Concat("SELECT iddocumento as id, descricao, iditem FROM item WHERE 1=1 ", str);
+ using (SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter())
+ {
+ sqlDataAdapter1.SelectCommand = sqlCommand;
+ sqlDataAdapter1.Fill(dataTable1);
+ }
+ sqlCommand.CommandText = string.Concat("SELECT DISTINCT cl.nome as cliente, c.idcliente, d.idcontrole, d.iddocumento, situacao, vigencia1, vigencia2, proposta, contrato as apolice, aditamento as endosso, CAST(tipo as INTEGER) as tipo FROM documento d INNER JOIN controle c on c.idcontrole = d.idcontrole INNER JOIN cliente cl on cl.idcliente = c.idcliente WHERE d.iddocumento IN (", string.Join<long>(",", dataTable1.AsEnumerable().Select<DataRow, long>((DataRow v) => v.Field<long>("id"))), ")");
+ using (SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter())
+ {
+ sqlDataAdapter2.SelectCommand = sqlCommand;
+ sqlDataAdapter2.Fill(dataTable2);
+ }
+ string str1 = string.Concat(" AND d.idcontrole IN (", string.Join<long>(",", (
+ from x in dataTable2.AsEnumerable().ToList<DataRow>()
+ select x.Field<long>("idcontrole")).ToList<long>()), ")");
+ sqlCommand.CommandText = string.Concat("SELECT DISTINCT vp.idvendedor, d.iddocumento, d.idcontrole, vp.idtipovendedor FROM vendedorparcela vp INNER JOIN documento d on d.iddocumento = vp.iddocumento WHERE 1=1 ", str1);
+ using (SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter())
+ {
+ sqlDataAdapter3.SelectCommand = sqlCommand;
+ sqlDataAdapter3.Fill(dataTable3);
+ goto Label0;
+ }
+ }
+ else
+ {
+ pesquisaAvancadas = new List<PesquisaAvancada>();
+ }
+ }
+ }
+ return pesquisaAvancadas;
+ Label0:
+ List<long> list = null;
+ if (vendedorVinculado != null && vendedorVinculado.Count > 0)
+ {
+ list = dataTable3.AsEnumerable().Where<DataRow>((DataRow x) => {
+ List<VendedorUsuario> vendedorUsuarios = vendedorVinculado;
+ Func<VendedorUsuario, long> u003cu003e9_97 = PatrimonialRepository.u003cu003ec.u003cu003e9__9_7;
+ if (u003cu003e9_97 == null)
+ {
+ u003cu003e9_97 = (VendedorUsuario v) => v.Vendedor.Id;
+ PatrimonialRepository.u003cu003ec.u003cu003e9__9_7 = u003cu003e9_97;
+ }
+ return vendedorUsuarios.Select<VendedorUsuario, long>(u003cu003e9_97).Contains<long>(x.Field<long>("idvendedor"));
+ }).Select<DataRow, long>((DataRow x) => x.Field<long>("idcontrole")).ToList<long>();
+ }
+ if (vendedorVinculado != null)
+ {
+ List<VendedorUsuario> vendedorUsuarios1 = vendedorVinculado;
+ if (vendedorUsuarios1 != null)
+ {
+ count = vendedorUsuarios1.Count == 0;
+ }
+ else
+ {
+ count = false;
+ }
+ if (count)
+ {
+ list = dataTable2.AsEnumerable().Where<DataRow>((DataRow x) => x.Field<long?>("idcontrole").HasValue).Select<DataRow, long>((DataRow x) => x.Field<long>("idcontrole")).ToList<long>();
+ }
+ }
+ return Auxiliar.PesquisaAvancada(status, dataTable2, dataTable1, list);
+ }
+
+ public Patrimonial Merge(Patrimonial patrimonial)
+ {
+ PatrimonialDb patrimonialDb = ApplicationMapper.Mapper.Map<Patrimonial, PatrimonialDb>(patrimonial);
+ base.Merge(patrimonialDb);
+ return ApplicationMapper.Mapper.Map<PatrimonialDb, Patrimonial>(patrimonialDb);
+ }
+
+ public Patrimonial SaveOrUpdate(Patrimonial patrimonial)
+ {
+ PatrimonialDb patrimonialDb = ApplicationMapper.Mapper.Map<Patrimonial, PatrimonialDb>(patrimonial);
+ this.SaveOrUpdate(patrimonialDb);
+ return ApplicationMapper.Mapper.Map<PatrimonialDb, Patrimonial>(patrimonialDb);
+ }
+ }
+} \ No newline at end of file