summaryrefslogtreecommitdiff
path: root/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs')
-rw-r--r--Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs245
1 files changed, 245 insertions, 0 deletions
diff --git a/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs
new file mode 100644
index 0000000..8b4909c
--- /dev/null
+++ b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ProspectRepository.cs
@@ -0,0 +1,245 @@
+using AutoMapper;
+using Gestor.Infrastructure.Entities.Generic;
+using Gestor.Infrastructure.Entities.Seguros;
+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 System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Runtime.CompilerServices;
+
+namespace Gestor.Infrastructure.Repository.Logic
+{
+ public class ProspectRepository : GenericRepository<ProspeccaoDb>, IProspectRepository, IGenericRepository<ProspeccaoDb>
+ {
+ private readonly GenericUnitOfWork _unitOfWork;
+
+ public ProspectRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
+ {
+ this._unitOfWork = unitOfWork;
+ }
+
+ public void Delete(long id)
+ {
+ ProspeccaoDb prospeccaoDb = base.FindEntityById(id);
+ if (prospeccaoDb == null)
+ {
+ return;
+ }
+ base.Delete(prospeccaoDb);
+ }
+
+ public List<Prospeccao> Find(long idempresa, long id, DateTime inicio, DateTime fim, StatusProspeccao? status)
+ {
+ VendedorDb vendedorDb = this._unitOfWork.Query<VendedorDb>().First<VendedorDb>((VendedorDb x) => x.Corretora);
+ List<ProspeccaoDb> prospeccaoDbs = new List<ProspeccaoDb>();
+ if (status.HasValue)
+ {
+ if (idempresa == 0 && id == 0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim) && (int?)x.Status == (int?)status
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa == 0 && id > (long)0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.Vendedor.Id == id && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim) && (int?)x.Status == (int?)status
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa > (long)0 && id == 0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.IdEmpresa == idempresa && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim) && (int?)x.Status == (int?)status
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa > (long)0 && id > (long)0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.IdEmpresa == idempresa && x.Vendedor.Id == id && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim) && (int?)x.Status == (int?)status
+ select x).ToList<ProspeccaoDb>();
+ }
+ }
+ else
+ {
+ if (idempresa == 0 && id == 0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim)
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa == 0 && id > (long)0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.Vendedor.Id == id && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim)
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa > (long)0 && id == 0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.IdEmpresa == idempresa && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim)
+ select x).ToList<ProspeccaoDb>();
+ }
+ if (idempresa > (long)0 && id > (long)0)
+ {
+ prospeccaoDbs = (
+ from x in base.All()
+ where x.IdEmpresa == idempresa && x.Vendedor.Id == id && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim)
+ select x).ToList<ProspeccaoDb>();
+ }
+ }
+ foreach (ProspeccaoDb prospeccaoDb in prospeccaoDbs)
+ {
+ if (prospeccaoDb.Vendedor == null || prospeccaoDb.Vendedor.Id == 0)
+ {
+ prospeccaoDb.Vendedor = vendedorDb;
+ }
+ bool? renovacao = prospeccaoDb.Renovacao;
+ prospeccaoDb.Renovacao = new bool?(renovacao.GetValueOrDefault(true));
+ }
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(prospeccaoDbs);
+ }
+
+ public List<Prospeccao> Find(Filtros filtro)
+ {
+ List<ProspeccaoDb> prospeccaoDbs;
+ VendedorDb vendedorDb = this._unitOfWork.Query<VendedorDb>().First<VendedorDb>((VendedorDb x) => x.Corretora);
+ List<StatusProspeccao> statusProspeccaos = new List<StatusProspeccao>()
+ {
+ StatusProspeccao.Agendado,
+ StatusProspeccao.EmAndamento,
+ StatusProspeccao.NaoTrabalhado,
+ StatusProspeccao.Perdido,
+ StatusProspeccao.Ganho
+ };
+ if (filtro.Status != null && filtro.Status.Count > 0)
+ {
+ statusProspeccaos.RemoveAll((StatusProspeccao x) => true);
+ if (filtro.Status.Contains((long)1) || filtro.Status.Contains((long)2))
+ {
+ statusProspeccaos.Add(StatusProspeccao.Agendado);
+ statusProspeccaos.Add(StatusProspeccao.NaoTrabalhado);
+ statusProspeccaos.Add(StatusProspeccao.EmAndamento);
+ }
+ if (filtro.Status.Contains((long)6))
+ {
+ statusProspeccaos.Add(StatusProspeccao.Perdido);
+ }
+ if (filtro.Status.Contains((long)5))
+ {
+ statusProspeccaos.Add(StatusProspeccao.Ganho);
+ }
+ }
+ prospeccaoDbs = (filtro.Vendedores == null || filtro.Vendedores.Count <= 0 ? (
+ from x in base.All()
+ where (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)filtro.Inicio) && (x.VigenciaFinal <= (DateTime?)filtro.Fim) && statusProspeccaos.Contains(x.Status.Value)
+ select x).ToList<ProspeccaoDb>() : (
+ from x in base.All()
+ where filtro.Vendedores.Contains(x.Vendedor.Id) && (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)filtro.Inicio) && (x.VigenciaFinal <= (DateTime?)filtro.Fim) && statusProspeccaos.Contains(x.Status.Value)
+ select x).ToList<ProspeccaoDb>());
+ foreach (ProspeccaoDb nullable in prospeccaoDbs)
+ {
+ if (nullable.Vendedor == null || nullable.Vendedor.Id == 0)
+ {
+ nullable.Vendedor = vendedorDb;
+ }
+ bool? renovacao = nullable.Renovacao;
+ nullable.Renovacao = new bool?(renovacao.GetValueOrDefault(true));
+ }
+ prospeccaoDbs = (filtro.IdEmpresa == 0 ? prospeccaoDbs : (
+ from x in prospeccaoDbs
+ where x.IdEmpresa == filtro.IdEmpresa
+ select x).ToList<ProspeccaoDb>());
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(prospeccaoDbs);
+ }
+
+ public List<Prospeccao> FindByData(DateTime inicio, DateTime fim)
+ {
+ List<ProspeccaoDb> list = (
+ from x in base.All()
+ where (x.VigenciaFinal != null) && (x.VigenciaFinal >= (DateTime?)inicio) && (x.VigenciaFinal <= (DateTime?)fim)
+ select x).ToList<ProspeccaoDb>();
+ list.ForEach((ProspeccaoDb x) => x.Renovacao = new bool?(x.Renovacao.GetValueOrDefault(true)));
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(list);
+ }
+
+ public Prospeccao FindById(long id)
+ {
+ ProspeccaoDb nullable = base.FindEntityById(id);
+ if (nullable != null)
+ {
+ bool? renovacao = nullable.Renovacao;
+ nullable.Renovacao = new bool?(renovacao.GetValueOrDefault(true));
+ }
+ return ApplicationMapper.Mapper.Map<ProspeccaoDb, Prospeccao>(nullable);
+ }
+
+ public List<Prospeccao> FindByStatus(StatusProspeccao status)
+ {
+ List<ProspeccaoDb> list = (
+ from x in base.All()
+ where (int?)x.Status == (int?)status
+ select x).ToList<ProspeccaoDb>();
+ list.ForEach((ProspeccaoDb x) => x.Renovacao = new bool?(x.Renovacao.GetValueOrDefault(true)));
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(list);
+ }
+
+ public List<Prospeccao> FindByStatusPersonalizado(long statusId)
+ {
+ List<ProspeccaoDb> list = (
+ from x in base.All()
+ where x.StatusPersonalizado.Id == statusId
+ select x).ToList<ProspeccaoDb>();
+ list.ForEach((ProspeccaoDb x) => x.Renovacao = new bool?(x.Renovacao.GetValueOrDefault(true)));
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(list);
+ }
+
+ public Prospeccao FindByTarefa(long id)
+ {
+ ProspeccaoDb nullable = base.All().FirstOrDefault<ProspeccaoDb>((ProspeccaoDb x) => x.Tarefa.Id == id);
+ if (nullable != null)
+ {
+ bool? renovacao = nullable.Renovacao;
+ nullable.Renovacao = new bool?(renovacao.GetValueOrDefault(true));
+ }
+ return ApplicationMapper.Mapper.Map<ProspeccaoDb, Prospeccao>(nullable);
+ }
+
+ public List<Prospeccao> FindByVendedor(long id)
+ {
+ List<ProspeccaoDb> list = (
+ from x in base.All()
+ where x.Vendedor.Id == id
+ select x).ToList<ProspeccaoDb>();
+ list.ForEach((ProspeccaoDb x) => x.Renovacao = new bool?(x.Renovacao.GetValueOrDefault(true)));
+ return ApplicationMapper.Mapper.Map<List<ProspeccaoDb>, List<Prospeccao>>(list);
+ }
+
+ public Prospeccao Merge(Prospeccao prospeccao)
+ {
+ ProspeccaoDb prospeccaoDb = ApplicationMapper.Mapper.Map<Prospeccao, ProspeccaoDb>(prospeccao);
+ base.Merge(prospeccaoDb);
+ return ApplicationMapper.Mapper.Map<ProspeccaoDb, Prospeccao>(prospeccaoDb);
+ }
+
+ public Prospeccao SaveOrUpdate(Prospeccao prospeccao)
+ {
+ ProspeccaoDb prospeccaoDb = ApplicationMapper.Mapper.Map<Prospeccao, ProspeccaoDb>(prospeccao);
+ this.SaveOrUpdate(prospeccaoDb);
+ return ApplicationMapper.Mapper.Map<ProspeccaoDb, Prospeccao>(prospeccaoDb);
+ }
+ }
+} \ No newline at end of file