using AutoMapper; using Gestor.Infrastructure.Entities.Financeiro; 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.Financeiro; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Runtime.CompilerServices; namespace Gestor.Infrastructure.Repository.Logic { public class ControleFinanceiroRepository : GenericRepository, IControleFinanceiroRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public ControleFinanceiroRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { ControleFinanceiroDb controleFinanceiroDb = base.FindEntityById(id); if (controleFinanceiroDb == null) { return; } IQueryable lancamentoDbs = from x in this._unitOfWork.Query() where x.Controle.Id == id select x; if (lancamentoDbs.Any()) { this._unitOfWork.Repository().DeleteRange(lancamentoDbs); } base.Delete(controleFinanceiroDb); } public List FindByFornecedor(long id) { List list = ( from x in base.All() where x.Fornecedor.Id == id select x).ToList(); return ApplicationMapper.Mapper.Map, List>(list); } public ControleFinanceiro FindById(long id) { ControleFinanceiroDb controleFinanceiroDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(controleFinanceiroDb); } public ControleFinanceiro Merge(ControleFinanceiro controle) { ControleFinanceiroDb controleFinanceiroDb = ApplicationMapper.Mapper.Map(controle); base.Merge(controleFinanceiroDb); return ApplicationMapper.Mapper.Map(controleFinanceiroDb); } public ControleFinanceiro SaveOrUpdate(ControleFinanceiro controle) { ControleFinanceiroDb controleFinanceiroDb = ApplicationMapper.Mapper.Map(controle); this.SaveOrUpdate(controleFinanceiroDb); return ApplicationMapper.Mapper.Map(controleFinanceiroDb); } } }