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 SeguradoraEnderecoRepository : GenericRepository, ISeguradoraEnderecoRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public SeguradoraEnderecoRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { SeguradoraEnderecoDb seguradoraEnderecoDb = base.FindEntityById(id); if (seguradoraEnderecoDb == null) { return; } base.Delete(seguradoraEnderecoDb); } public SeguradoraEndereco FindById(long id) { SeguradoraEnderecoDb seguradoraEnderecoDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(seguradoraEnderecoDb); } public List FindBySeguradora(long empresa, long id) { List list = ( from x in base.All() where x.Empresa.Id == empresa && x.Seguradora.Id == id select x).ToList(); return ApplicationMapper.Mapper.Map, List>(list); } public SeguradoraEndereco Merge(SeguradoraEndereco endereco) { SeguradoraEnderecoDb seguradoraEnderecoDb = ApplicationMapper.Mapper.Map(endereco); base.Merge(seguradoraEnderecoDb); return ApplicationMapper.Mapper.Map(seguradoraEnderecoDb); } public List Merge(List enderecos, Seguradora seguradora, long empresa) { IQueryable seguradoraEnderecoDbs = from x in base.All() where x.Seguradora.Id == seguradora.Id && x.Empresa.Id == empresa select x; SeguradoraEnderecoRepository seguradoraEnderecoRepository = this; ( from x in seguradoraEnderecoDbs select x.Id).ToList().Where((long x) => { List seguradoraEnderecos = enderecos; Func u003cu003e9_64 = SeguradoraEnderecoRepository.u003cu003ec.u003cu003e9__6_4; if (u003cu003e9_64 == null) { u003cu003e9_64 = (SeguradoraEndereco t) => t.Id; SeguradoraEnderecoRepository.u003cu003ec.u003cu003e9__6_4 = u003cu003e9_64; } return !seguradoraEnderecos.Select(u003cu003e9_64).Contains(x); }).ToList().ForEach(new Action(seguradoraEnderecoRepository.Delete)); List seguradoraEnderecoDbs1 = ApplicationMapper.Mapper.Map, List>(enderecos); seguradoraEnderecoDbs1.ForEach((SeguradoraEnderecoDb x) => { if (x.Id == 0) { this.SaveOrUpdate(x); return; } base.Merge(x); }); return ApplicationMapper.Mapper.Map, List>(seguradoraEnderecoDbs1); } public SeguradoraEndereco SaveOrUpdate(SeguradoraEndereco endereco) { SeguradoraEnderecoDb seguradoraEnderecoDb = ApplicationMapper.Mapper.Map(endereco); this.SaveOrUpdate(seguradoraEnderecoDb); return ApplicationMapper.Mapper.Map(seguradoraEnderecoDb); } } }