summaryrefslogtreecommitdiff
path: root/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs')
-rw-r--r--Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs248
1 files changed, 248 insertions, 0 deletions
diff --git a/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs
new file mode 100644
index 0000000..6d40eff
--- /dev/null
+++ b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEmailRepository.cs
@@ -0,0 +1,248 @@
+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.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 ClienteEmailRepository : GenericRepository<ClienteEmailDb>, IClienteEmailRepository, IGenericRepository<ClienteEmailDb>
+ {
+ private readonly GenericUnitOfWork _unitOfWork;
+
+ public ClienteEmailRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session)
+ {
+ this._unitOfWork = unitOfWork;
+ }
+
+ public void Delete(long id)
+ {
+ base.Delete(base.FindEntityById(id));
+ }
+
+ public List<ClienteEmail> DeleteMail(long clienteId, List<ClienteEmail> emails)
+ {
+ if (emails == null)
+ {
+ return null;
+ }
+ List<ClienteEmailDb> list = (
+ from x in base.All()
+ where x.Cliente.Id == clienteId
+ select x).ToList<ClienteEmailDb>().Where<ClienteEmailDb>((ClienteEmailDb email) => {
+ List<ClienteEmail> clienteEmails = emails;
+ Func<ClienteEmail, long> u003cu003e9_112 = ClienteEmailRepository.u003cu003ec.u003cu003e9__11_2;
+ if (u003cu003e9_112 == null)
+ {
+ u003cu003e9_112 = (ClienteEmail t) => t.Id;
+ ClienteEmailRepository.u003cu003ec.u003cu003e9__11_2 = u003cu003e9_112;
+ }
+ return !clienteEmails.Select<ClienteEmail, long>(u003cu003e9_112).Contains<long>(email.Id);
+ }).ToList<ClienteEmailDb>();
+ if (emails.Count == 0 && (list == null || list.Count == 0))
+ {
+ return null;
+ }
+ ClienteEmailRepository clienteEmailRepository = this;
+ list.ForEach(new Action<ClienteEmailDb>(clienteEmailRepository.Delete));
+ return ApplicationMapper.Mapper.Map<List<ClienteEmailDb>, List<ClienteEmail>>(list);
+ }
+
+ private List<ClienteEmail> FindByCliente(long id)
+ {
+ return this.Select(string.Format(" AND cm.idcliente = {0}", id));
+ }
+
+ public List<ClienteEmail> FindByCliente(List<long> ids)
+ {
+ if (ids.Count == 0)
+ {
+ return new List<ClienteEmail>();
+ }
+ string str = string.Concat(" AND cm.idcliente IN (", string.Join<long>(",", ids), ")");
+ return this.Select(str);
+ }
+
+ public List<ClienteEmail> FindByClienteId(long id)
+ {
+ return this.FindByCliente(id);
+ }
+
+ public ClienteEmail FindById(long id)
+ {
+ ClienteEmailDb clienteEmailDb = base.FindEntityById(id);
+ return ApplicationMapper.Mapper.Map<ClienteEmailDb, ClienteEmail>(clienteEmailDb);
+ }
+
+ public List<ClienteEmail> FindEmailCliente(string email, long idempresa = 0L)
+ {
+ return this.Select((idempresa == 0 ? string.Concat(" AND cm.email LIKE '%", email, "%'") : string.Format(" AND c.idempresa = {0} AND CONTAINS(cm.email, \"%{1}%\")", idempresa, email)));
+ }
+
+ public List<ClienteEmail> Inserir(List<ClienteEmail> emails, Cliente cliente)
+ {
+ emails.ForEach((ClienteEmail x) => {
+ string str;
+ x.Cliente = cliente;
+ ClienteEmail clienteEmail = x;
+ string observacao = x.Observacao;
+ if (observacao != null)
+ {
+ str = observacao.Trim();
+ }
+ else
+ {
+ str = null;
+ }
+ clienteEmail.Observacao = str;
+ });
+ List<ClienteEmailDb> clienteEmailDbs = ApplicationMapper.Mapper.Map<List<ClienteEmail>, List<ClienteEmailDb>>(emails);
+ base.AddRange(clienteEmailDbs);
+ return ApplicationMapper.Mapper.Map<List<ClienteEmailDb>, List<ClienteEmail>>(clienteEmailDbs);
+ }
+
+ public List<ClienteEmail> Inserir(List<ClienteEmail> emails)
+ {
+ List<ClienteEmailDb> clienteEmailDbs = ApplicationMapper.Mapper.Map<List<ClienteEmail>, List<ClienteEmailDb>>(emails);
+ clienteEmailDbs.ForEach((ClienteEmailDb x) => {
+ string str;
+ ClienteEmailDb clienteEmailDb = x;
+ string observacao = x.Observacao;
+ if (observacao != null)
+ {
+ str = observacao.Trim();
+ }
+ else
+ {
+ str = null;
+ }
+ clienteEmailDb.Observacao = str;
+ if (x.Id == 0)
+ {
+ this.SaveOrUpdate(x);
+ return;
+ }
+ base.Merge(x);
+ });
+ return ApplicationMapper.Mapper.Map<List<ClienteEmailDb>, List<ClienteEmail>>(clienteEmailDbs);
+ }
+
+ public ClienteEmail Merge(ClienteEmail clienteEmail)
+ {
+ string str;
+ ClienteEmailDb clienteEmailDb = ApplicationMapper.Mapper.Map<ClienteEmail, ClienteEmailDb>(clienteEmail);
+ ClienteEmailDb clienteEmailDb1 = clienteEmailDb;
+ string observacao = clienteEmailDb.Observacao;
+ if (observacao != null)
+ {
+ str = observacao.Trim();
+ }
+ else
+ {
+ str = null;
+ }
+ clienteEmailDb1.Observacao = str;
+ base.Merge(clienteEmailDb);
+ return ApplicationMapper.Mapper.Map<ClienteEmailDb, ClienteEmail>(clienteEmailDb);
+ }
+
+ public List<ClienteEmail> Merge(List<ClienteEmail> emails, Cliente cliente)
+ {
+ List<ClienteEmailDb> clienteEmailDbs = ApplicationMapper.Mapper.Map<List<ClienteEmail>, List<ClienteEmailDb>>(emails);
+ clienteEmailDbs.ForEach((ClienteEmailDb x) => {
+ string str;
+ ClienteEmailDb clienteEmailDb = x;
+ string observacao = x.Observacao;
+ if (observacao != null)
+ {
+ str = observacao.Trim();
+ }
+ else
+ {
+ str = null;
+ }
+ clienteEmailDb.Observacao = str;
+ if (x.Id != 0)
+ {
+ base.Merge(x);
+ return;
+ }
+ x.Cliente = ApplicationMapper.Mapper.Map<Cliente, ClienteDb>(cliente);
+ this.SaveOrUpdate(x);
+ });
+ return ApplicationMapper.Mapper.Map<List<ClienteEmailDb>, List<ClienteEmail>>(clienteEmailDbs);
+ }
+
+ public ClienteEmail SaveOrUpdate(ClienteEmail clienteEmail)
+ {
+ string str;
+ ClienteEmailDb clienteEmailDb = ApplicationMapper.Mapper.Map<ClienteEmail, ClienteEmailDb>(clienteEmail);
+ ClienteEmailDb clienteEmailDb1 = clienteEmailDb;
+ string observacao = clienteEmailDb.Observacao;
+ if (observacao != null)
+ {
+ str = observacao.Trim();
+ }
+ else
+ {
+ str = null;
+ }
+ clienteEmailDb1.Observacao = str;
+ this.SaveOrUpdate(clienteEmailDb);
+ return ApplicationMapper.Mapper.Map<ClienteEmailDb, ClienteEmail>(clienteEmailDb);
+ }
+
+ private List<ClienteEmail> Select(string condition)
+ {
+ object connection;
+ DataTable dataTable = 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 cm.idclimail AS Id, cm.idcliente as IdCliente, cm.email AS Email, cm.obs AS Observacao, cm.ordem AS Ordem, c.nome as NomeCliente FROM climail cm INNER JOIN cliente c ON c.idcliente = cm.idcliente WHERE 1=1 ", condition);
+ using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter())
+ {
+ sqlDataAdapter.SelectCommand = sqlCommand;
+ sqlDataAdapter.Fill(dataTable);
+ }
+ }
+ }
+ List<ClienteEmail> clienteEmails = CustomMap.MapEmail(dataTable);
+ int? nullable1 = new int?(0);
+ clienteEmails.ForEach((ClienteEmail x) => {
+ int? ordem = nullable1;
+ int? nullable = ordem;
+ nullable1 = (nullable.HasValue ? new int?(nullable.GetValueOrDefault() + 1) : null);
+ ClienteEmail clienteEmail = x;
+ ordem = x.Ordem;
+ clienteEmail.Ordem = (ordem.HasValue ? ordem : nullable1);
+ });
+ return clienteEmails;
+ }
+ }
+} \ No newline at end of file