using AutoMapper; 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.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; namespace Gestor.Infrastructure.Repository.Logic { public class EstipulanteRepository : GenericRepository, IEstipulanteRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public EstipulanteRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { base.Delete(base.FindEntityById(id)); } public List Find(string value, long idempresa = 0L) { string str = (idempresa == 0 ? string.Format(" AND idempresa = {0}", idempresa) : ""); string str1 = string.Concat(new string[] { " AND (UPPER(ISNULL(nome, '')) LIKE '%", value.ToUpper(), "%' OR UPPER(ISNULL(cpfcnpj, '')) LIKE '%", value.ToUpper(), "%') " }); return this.Select(string.Concat(str, str1)); } public List Find() { return this.Select(""); } public Estipulante FindById(long id) { EstipulanteDb estipulanteDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(estipulanteDb); } public Estipulante Merge(Estipulante estipulante) { EstipulanteDb estipulanteDb = ApplicationMapper.Mapper.Map(estipulante); base.Merge(estipulanteDb); return ApplicationMapper.Mapper.Map(estipulanteDb); } public Estipulante SaveOrUpdate(Estipulante estipulante) { EstipulanteDb estipulanteDb = ApplicationMapper.Mapper.Map(estipulante); this.SaveOrUpdate(estipulanteDb); return ApplicationMapper.Mapper.Map(estipulanteDb); } 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 DISTINCT * FROM estipulante WHERE 1=1 ", condition, ";"); using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter()) { sqlDataAdapter.SelectCommand = sqlCommand; sqlDataAdapter.Fill(dataTable); } } } return dataTable.MapEstipulante(); } } }