summaryrefslogtreecommitdiff
path: root/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs')
-rw-r--r--Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs237
1 files changed, 237 insertions, 0 deletions
diff --git a/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs b/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs
new file mode 100644
index 0000000..ff4afc6
--- /dev/null
+++ b/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ExtratoRepository.cs
@@ -0,0 +1,237 @@
+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.Relatorios;
+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 ExtratoRepository : GenericRepository<ExtratoDb>, IExtratoRepository, IGenericRepository<ExtratoDb>
+ {
+ private readonly GenericUnitOfWork _unitOfWork;
+
+ public ExtratoRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
+ {
+ this._unitOfWork = unitOfWork;
+ }
+
+ public void Delete(long id)
+ {
+ List<DetalheExtratoDb> list = (
+ from x in this._unitOfWork.Query<DetalheExtratoDb>()
+ where x.Extrato.Id == id
+ select x).ToList<DetalheExtratoDb>();
+ if (list.Count > 0)
+ {
+ this._unitOfWork.Repository<DetalheExtratoDb>().DeleteRange(list);
+ }
+ ExtratoDb extratoDb = base.FindEntityById(id);
+ if (extratoDb == null)
+ {
+ return;
+ }
+ base.Delete(extratoDb);
+ }
+
+ public List<Extrato> FindByData(Filtros filtro)
+ {
+ string str = "CAST(datacriacao AS DATE)";
+ string referencia = filtro.Referencia;
+ if (referencia == "DATA DO EXTRATO")
+ {
+ str = "CAST(data AS DATE)";
+ }
+ else if (referencia == "DATA DO CRÉDITO")
+ {
+ str = "CAST(DataCredito AS DATE)";
+ }
+ List<Condicao> condicaos = new List<Condicao>()
+ {
+ new Condicao()
+ {
+ Campo = str,
+ Valores = filtro.Inicio.CriarValor<DateTime>(),
+ Operador = Operador.MaiorEIgual
+ },
+ new Condicao()
+ {
+ Campo = str,
+ Valores = filtro.Fim.CriarValor<DateTime>(),
+ Operador = Operador.MenorEIgual
+ },
+ new Condicao()
+ {
+ Campo = "idstatusextrato",
+ Valores = null,
+ Operador = Operador.Diferente,
+ Grupo = 1,
+ Operacao = Operacao.Or
+ },
+ new Condicao()
+ {
+ Campo = "idstatusextrato",
+ Valores = "1".CriarValor<string>(),
+ Operador = Operador.Diferente,
+ Grupo = 1,
+ Operacao = Operacao.Or
+ }
+ };
+ return CustomMap.MapExtrato(this._unitOfWork.Select(condicaos.CreateParameters(0), "SELECT * FROM EXTRATO WHERE ", ""), null);
+ }
+
+ public List<Extrato> FindByEmpresa(long id)
+ {
+ List<ExtratoDb> list = (
+ from x in base.All()
+ where x.IdEmpresa == id
+ select x).ToList<ExtratoDb>();
+ return ApplicationMapper.Mapper.Map<List<ExtratoDb>, List<Extrato>>(list);
+ }
+
+ public Extrato FindById(long id)
+ {
+ ExtratoDb extratoDb = base.FindEntityById(id);
+ return ApplicationMapper.Mapper.Map<ExtratoDb, Extrato>(extratoDb);
+ }
+
+ public List<Extrato> FindBySeguradora(long id, long idusuario, long empresa, DateTime inicio, DateTime fim, StatusExtrato? status = null)
+ {
+ List<Extrato> extratos;
+ object connection;
+ DataTable dataTable = new DataTable();
+ DataTable dataTable1 = 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())
+ {
+ Auxiliar.CriarAuxiliar(sqlCommand, false);
+ string str = "";
+ if (empresa > (long)1)
+ {
+ str = string.Format("idempresa = {0} AND", empresa);
+ }
+ string str1 = string.Format("SELECT * FROM EXTRATO WHERE {0} data >= '{1:yyyy-MM-dd}' AND data <= '{2:yyyy-MM-dd}'", str, inicio, fim);
+ if (id > (long)0)
+ {
+ str1 = string.Concat(str1, string.Format(" AND idciaseg = {0}", id));
+ }
+ if (idusuario > (long)0)
+ {
+ str1 = string.Concat(str1, string.Format(" AND usuariocriacao = {0}", idusuario));
+ }
+ if (status.HasValue)
+ {
+ StatusExtrato valueOrDefault = status.GetValueOrDefault();
+ if (valueOrDefault == StatusExtrato.Pendente)
+ {
+ str1 = string.Concat(str1, " AND (idstatusextrato IS NULL OR idstatusextrato = 1)");
+ }
+ else if (valueOrDefault == StatusExtrato.Baixado)
+ {
+ str1 = string.Concat(str1, " AND idstatusextrato IS NOT NULL AND idstatusextrato != 1");
+ }
+ }
+ sqlCommand.CommandText = str1;
+ using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
+ {
+ sqlDataAdapter.SelectCommand = sqlCommand;
+ sqlDataAdapter.Fill(dataTable);
+ }
+ if (dataTable.Rows.Count != 0)
+ {
+ string str2 = string.Concat(" AND idextrato IN (", string.Join<long>(",", dataTable.AsEnumerable().Select<DataRow, long>((DataRow v) => v.Field<long>("idextrato"))), ")");
+ List<int> nums = new List<int>()
+ {
+ 13,
+ 1,
+ 10,
+ 5,
+ 12,
+ 6,
+ 8,
+ 21
+ };
+ sqlCommand.CommandText = string.Concat("SELECT idextrato, idparcelaextrato FROM parcelaextrato WHERE idstatusparcela NOT IN (", string.Join<int>(",",
+ from v in nums
+ select v), ") ", str2);
+ using (SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter())
+ {
+ sqlDataAdapter1.SelectCommand = sqlCommand;
+ sqlDataAdapter1.Fill(dataTable1);
+ return CustomMap.MapExtrato(dataTable, dataTable1);
+ }
+ }
+ else
+ {
+ extratos = new List<Extrato>();
+ }
+ }
+ }
+ return extratos;
+ }
+
+ public List<Extrato> FindByStatus(StatusExtrato status)
+ {
+ List<ExtratoDb> list = (
+ from x in base.All()
+ where (int)x.Status == (int)status
+ select x).ToList<ExtratoDb>();
+ return ApplicationMapper.Mapper.Map<List<ExtratoDb>, List<Extrato>>(list);
+ }
+
+ public List<Seguradora> FindSeguradoras(StatusExtrato status)
+ {
+ return (
+ from x in (
+ from x in base.All()
+ where (int)x.Status == (int)status
+ select x.Seguradora).ToList<SeguradoraDb>()
+ group x by x.Id into x
+ select new Seguradora()
+ {
+ Id = x.Key,
+ Nome = x.First<SeguradoraDb>().Nome
+ }).ToList<Seguradora>();
+ }
+
+ public Extrato Merge(Extrato extrato)
+ {
+ ExtratoDb extratoDb = ApplicationMapper.Mapper.Map<Extrato, ExtratoDb>(extrato);
+ base.Merge(extratoDb);
+ return ApplicationMapper.Mapper.Map<ExtratoDb, Extrato>(extratoDb);
+ }
+
+ public Extrato SaveOrUpdate(Extrato extrato)
+ {
+ ExtratoDb extratoDb = ApplicationMapper.Mapper.Map<Extrato, ExtratoDb>(extrato);
+ this.SaveOrUpdate(extratoDb);
+ return ApplicationMapper.Mapper.Map<ExtratoDb, Extrato>(extratoDb);
+ }
+ }
+} \ No newline at end of file