From 674ca83ba9243a9e95a7568c797668dab6aee26a Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:35:25 -0300 Subject: feat: upload files --- .../ClienteEnderecoRepository.cs | 223 +++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEnderecoRepository.cs (limited to 'Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEnderecoRepository.cs') diff --git a/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEnderecoRepository.cs b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEnderecoRepository.cs new file mode 100644 index 0000000..9a2ac8e --- /dev/null +++ b/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/ClienteEnderecoRepository.cs @@ -0,0 +1,223 @@ +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 ClienteEnderecoRepository : GenericRepository, IClienteEnderecoRepository, IGenericRepository + { + private readonly GenericUnitOfWork _unitOfWork; + + public ClienteEnderecoRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) + { + this._unitOfWork = unitOfWork; + } + + public void Delete(long id) + { + base.Delete(base.FindEntityById(id)); + } + + public List DeleteEndereco(long clienteId, List enderecos) + { + if (enderecos == null || enderecos.Count == 0) + { + return null; + } + List list = ( + from cliente in base.All() + where cliente.Cliente.Id == clienteId + select cliente).ToList().Where((ClienteEnderecoDb endereco) => { + List clienteEnderecos = enderecos; + Func u003cu003e9_102 = ClienteEnderecoRepository.u003cu003ec.u003cu003e9__10_2; + if (u003cu003e9_102 == null) + { + u003cu003e9_102 = (ClienteEndereco t) => t.Id; + ClienteEnderecoRepository.u003cu003ec.u003cu003e9__10_2 = u003cu003e9_102; + } + return !clienteEnderecos.Select(u003cu003e9_102).Contains(endereco.Id); + }).ToList(); + ClienteEnderecoRepository clienteEnderecoRepository = this; + list.ForEach(new Action(clienteEnderecoRepository.Delete)); + return ApplicationMapper.Mapper.Map, List>(list); + } + + public List FindByCliente(List clientes) + { + string str = string.Concat(" AND ce.idcliente in (", string.Join(",", ( + from x in clientes + select x.Id).Distinct()), ")"); + List clienteEnderecos = this.Select(str); + ( + from x in clienteEnderecos + orderby x.Ordem + select x).ToList().ForEach((ClienteEndereco x) => x.Selecionado = x.Id == clienteEnderecos.First((ClienteEndereco c) => c.Cliente.Id == x.Cliente.Id).Id); + return clienteEnderecos; + } + + public List FindByClienteId(long id) + { + return this.Select(string.Format(" AND ce.idcliente = {0}", id)); + } + + public ClienteEndereco FindById(long id) + { + ClienteEnderecoDb clienteEnderecoDb = base.FindEntityById(id); + return ApplicationMapper.Mapper.Map(clienteEnderecoDb); + } + + public List Inserir(List endereco, Cliente cliente) + { + endereco.ForEach((ClienteEndereco x) => x.Cliente = cliente); + List clienteEnderecoDbs = ApplicationMapper.Mapper.Map, List>(endereco); + base.AddRange(clienteEnderecoDbs); + return ApplicationMapper.Mapper.Map, List>(clienteEnderecoDbs); + } + + public List Inserir(List endereco) + { + List clienteEnderecoDbs = ApplicationMapper.Mapper.Map, List>(endereco); + clienteEnderecoDbs.ForEach((ClienteEnderecoDb x) => { + string str; + ClienteEnderecoDb clienteEnderecoDb = x; + string observacao = x.Observacao; + if (observacao != null) + { + str = observacao.Trim(); + } + else + { + str = null; + } + clienteEnderecoDb.Observacao = str; + if (x.Id == 0) + { + this.SaveOrUpdate(x); + return; + } + base.Merge(x); + }); + return ApplicationMapper.Mapper.Map, List>(clienteEnderecoDbs); + } + + public ClienteEndereco Merge(ClienteEndereco clienteEndereco) + { + string str; + ClienteEnderecoDb clienteEnderecoDb = ApplicationMapper.Mapper.Map(clienteEndereco); + ClienteEnderecoDb clienteEnderecoDb1 = clienteEnderecoDb; + string observacao = clienteEnderecoDb.Observacao; + if (observacao != null) + { + str = observacao.Trim(); + } + else + { + str = null; + } + clienteEnderecoDb1.Observacao = str; + base.Merge(clienteEnderecoDb); + return ApplicationMapper.Mapper.Map(clienteEnderecoDb); + } + + public List Merge(List enderecos, Cliente cliente) + { + List clienteEnderecoDbs = ApplicationMapper.Mapper.Map, List>(enderecos); + clienteEnderecoDbs.ForEach((ClienteEnderecoDb x) => { + string str; + ClienteEnderecoDb clienteEnderecoDb = x; + string observacao = x.Observacao; + if (observacao != null) + { + str = observacao.Trim(); + } + else + { + str = null; + } + clienteEnderecoDb.Observacao = str; + if (x.Id != 0) + { + base.Merge(x); + return; + } + x.Cliente = ApplicationMapper.Mapper.Map(cliente); + this.SaveOrUpdate(x); + }); + return ApplicationMapper.Mapper.Map, List>(clienteEnderecoDbs); + } + + public ClienteEndereco SaveOrUpdate(ClienteEndereco clienteEndereco) + { + string str; + ClienteEnderecoDb clienteEnderecoDb = ApplicationMapper.Mapper.Map(clienteEndereco); + ClienteEnderecoDb clienteEnderecoDb1 = clienteEnderecoDb; + string observacao = clienteEnderecoDb.Observacao; + if (observacao != null) + { + str = observacao.Trim(); + } + else + { + str = null; + } + clienteEnderecoDb1.Observacao = str; + this.SaveOrUpdate(clienteEnderecoDb); + return ApplicationMapper.Mapper.Map(clienteEnderecoDb); + } + + private List 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 ce.*, c.nome as NomeCliente FROM cliendereco ce INNER JOIN cliente c ON c.idcliente = ce.idcliente WHERE 1=1 ", condition); + using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter()) + { + sqlDataAdapter.SelectCommand = sqlCommand; + sqlDataAdapter.Fill(dataTable); + } + } + } + List clienteEnderecos = dataTable.MapEndereco(); + int? nullable1 = new int?(0); + clienteEnderecos.ForEach((ClienteEndereco x) => { + int? ordem = nullable1; + int? nullable = ordem; + nullable1 = (nullable.HasValue ? new int?(nullable.GetValueOrDefault() + 1) : null); + ClienteEndereco clienteEndereco = x; + ordem = x.Ordem; + clienteEndereco.Ordem = (ordem.HasValue ? ordem : nullable1); + }); + return clienteEnderecos; + } + } +} \ No newline at end of file -- cgit v1.2.3