using AutoMapper; using Gestor.Infrastructure.Entities.Common; using Gestor.Infrastructure.Entities.Generic; using Gestor.Infrastructure.Mappers; using Gestor.Infrastructure.Repository.Generic; using Gestor.Infrastructure.Repository.Interface; using Gestor.Infrastructure.UnitOfWork.Generic; using Gestor.Model.Domain.Common; using NHibernate; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Runtime.CompilerServices; namespace Gestor.Infrastructure.Repository.Logic { public class SocioRepository : GenericRepository, ISocioRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public SocioRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { base.Delete(base.FindEntityById(id)); } public List Find() { return ( from x in base.All() select new Socio() { Id = x.Id, Nome = x.Nome, Email = x.Email, Prefixo = x.Prefixo, Telefone = x.Telefone }).ToList(); } public List FindByEmpresa(long id) { List list = ( from x in this._unitOfWork.Session.CreateQuery("FROM SocioDb WHERE (excluido IS NULL OR excluido != '1')").List() where x.IdEmpresa == id select x).ToList(); return ApplicationMapper.Mapper.Map, List>(list); } public Socio FindById(long id) { SocioDb socioDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(socioDb); } public Socio Merge(Socio socio) { SocioDb socioDb = ApplicationMapper.Mapper.Map(socio); base.Merge(socioDb); return ApplicationMapper.Mapper.Map(socioDb); } public Socio SaveOrUpdate(Socio socio) { SocioDb socioDb = ApplicationMapper.Mapper.Map(socio); this.SaveOrUpdate(socioDb); return ApplicationMapper.Mapper.Map(socioDb); } } }