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.Generic; 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.Runtime.CompilerServices; namespace Gestor.Infrastructure.Repository.Logic { public class MetaSeguradoraRepository : GenericRepository, IMetaSeguradoraRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public MetaSeguradoraRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { base.Delete(base.FindEntityById(id)); } public List Find(long id) { return ( from x in this._unitOfWork.Session.CreateQuery(string.Format("from MetaSeguradoraDb WHERE idciaseg = {0}", id)).List() select new MetaSeguradora() { Id = x.Id, Mes = x.Mes, Ano = x.Ano, Valor = x.Valor }).ToList(); } public MetaSeguradora FindById(long id) { MetaSeguradoraDb metaSeguradoraDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(metaSeguradoraDb); } public List FindByMeta(Filtros filtro) { List metaSeguradoras; object connection; string str = (filtro.Seguradoras == null || filtro.Seguradoras.Count == 0 ? "" : string.Concat(" AND idciaseg IN (", string.Join(",", from v in filtro.Seguradoras select v), ")")); SessionFactoryImpl sessionFactory = this._unitOfWork.Session.SessionFactory as SessionFactoryImpl; DataTable dataTable = new DataTable(); 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); object month = filtro.Fim.Month; DateTime fim = filtro.Fim; sqlCommand.CommandText = string.Format("SELECT IdMeta, IdCiaSeg, Mes, Ano, Valor\r\n FROM Meta\r\n WHERE (IdCiaSeg IS NOT NULL OR IdCiaSeg != '') AND Mes = {0} AND Ano = {1} {2};", month, fim.Year, str); using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter()) { sqlDataAdapter.SelectCommand = sqlCommand; sqlDataAdapter.Fill(dataTable); } if (dataTable.Rows.Count != 0) { return ( from x in dataTable.AsEnumerable().ToList() select new MetaSeguradora() { Id = x.Field("IdMeta"), Mes = (Mes)x.Field("Mes"), Ano = long.Parse(x.Field("Ano").ToString()), Valor = x.Field("Valor"), Seguradora = Auxiliar.Seguradoras.FirstOrDefault((Seguradora s) => s.Id == x.Field("IdCiaseg")) }).ToList(); } else { metaSeguradoras = new List(); } } } return metaSeguradoras; } public MetaSeguradora Merge(MetaSeguradora metaSeguradora) { MetaSeguradoraDb idAggilizador = ApplicationMapper.Mapper.Map(metaSeguradora); idAggilizador.IdAggilizador = idAggilizador.Seguradora.IdAggilizador; base.Merge(idAggilizador); return ApplicationMapper.Mapper.Map(idAggilizador); } public MetaSeguradora SaveOrUpdate(MetaSeguradora metaSeguradora) { MetaSeguradoraDb idAggilizador = ApplicationMapper.Mapper.Map(metaSeguradora); idAggilizador.IdAggilizador = idAggilizador.Seguradora.IdAggilizador; this.SaveOrUpdate(idAggilizador); return ApplicationMapper.Mapper.Map(idAggilizador); } } }