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 System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Runtime.CompilerServices; namespace Gestor.Infrastructure.Repository.Logic { public class VendedorTelefoneRepository : GenericRepository, IVendedorTelefoneRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public VendedorTelefoneRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { base.Delete(base.FindEntityById(id)); } public VendedorTelefone FindById(long id) { VendedorTelefoneDb vendedorTelefoneDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(vendedorTelefoneDb); } public List FindByVendedorId(long id) { List list = ( from x in base.All() where x.Vendedor.Id == id select x).ToList(); return ApplicationMapper.Mapper.Map, List>(list); } public List Inserir(List telefones) { List vendedorTelefoneDbs = ApplicationMapper.Mapper.Map, List>(telefones); vendedorTelefoneDbs.ForEach((VendedorTelefoneDb x) => { if (x.Id == 0) { this.SaveOrUpdate(x); return; } base.Merge(x); }); return ApplicationMapper.Mapper.Map, List>(vendedorTelefoneDbs); } public List Inserir(List telefones, Vendedor vendedor) { telefones.ForEach((VendedorTelefone x) => x.Vendedor = vendedor); List vendedorTelefoneDbs = ApplicationMapper.Mapper.Map, List>(telefones); base.AddRange(vendedorTelefoneDbs); return ApplicationMapper.Mapper.Map, List>(vendedorTelefoneDbs); } public VendedorTelefone Merge(VendedorTelefone telefone) { VendedorTelefoneDb vendedorTelefoneDb = ApplicationMapper.Mapper.Map(telefone); base.Merge(vendedorTelefoneDb); return ApplicationMapper.Mapper.Map(vendedorTelefoneDb); } public List Merge(List telefones, Vendedor vendedor) { IQueryable vendedorTelefoneDbs = from x in base.All() where x.Vendedor.Id == vendedor.Id select x; VendedorTelefoneRepository vendedorTelefoneRepository = this; ( from x in vendedorTelefoneDbs select x.Id).ToList().Where((long x) => { List vendedorTelefones = telefones; Func u003cu003e9_94 = VendedorTelefoneRepository.u003cu003ec.u003cu003e9__9_4; if (u003cu003e9_94 == null) { u003cu003e9_94 = (VendedorTelefone t) => t.Id; VendedorTelefoneRepository.u003cu003ec.u003cu003e9__9_4 = u003cu003e9_94; } return !vendedorTelefones.Select(u003cu003e9_94).Contains(x); }).ToList().ForEach(new Action(vendedorTelefoneRepository.Delete)); List vendedorTelefoneDbs1 = ApplicationMapper.Mapper.Map, List>(telefones); vendedorTelefoneDbs1.ForEach((VendedorTelefoneDb x) => { if (x.Id != 0) { base.Merge(x); return; } x.Vendedor = ApplicationMapper.Mapper.Map(vendedor); this.SaveOrUpdate(x); }); return ApplicationMapper.Mapper.Map, List>(vendedorTelefoneDbs1); } public VendedorTelefone SaveOrUpdate(VendedorTelefone telefone) { VendedorTelefoneDb vendedorTelefoneDb = ApplicationMapper.Mapper.Map(telefone); this.SaveOrUpdate(vendedorTelefoneDb); return ApplicationMapper.Mapper.Map(vendedorTelefoneDb); } } }