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.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 SeguradoraContatoRepository : GenericRepository, ISeguradoraContatoRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public SeguradoraContatoRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { SeguradoraContatoDb seguradoraContatoDb = base.FindEntityById(id); if (seguradoraContatoDb == null) { return; } base.Delete(seguradoraContatoDb); } public List FindAssistencia(long empresa, long id) { List condicaos = new List() { new Condicao() { Campo = "idempresa", Valores = empresa.CriarValor() }, new Condicao() { Campo = "idciaseg", Valores = id.CriarValor() }, new Condicao() { Campo = "TipoContato", Valores = 1.CriarValor() } }; return this._unitOfWork.Select(condicaos.CreateParameters(0), "SELECT TOP 4 * FROM ciacontato WHERE ", "").MapSeguradoraContato(); } public SeguradoraContato FindById(long id) { SeguradoraContatoDb seguradoraContatoDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(seguradoraContatoDb); } public List FindBySeguradora(long empresa, long id) { List condicaos = new List() { new Condicao() { Campo = "idempresa", Valores = empresa.CriarValor() }, new Condicao() { Campo = "idciaseg", Valores = id.CriarValor() } }; return this._unitOfWork.Select(condicaos.CreateParameters(0), "SELECT * FROM ciacontato WHERE ", "").MapSeguradoraContato(); } public SeguradoraContato Merge(SeguradoraContato contato) { SeguradoraContatoDb seguradoraContatoDb = ApplicationMapper.Mapper.Map(contato); base.Merge(seguradoraContatoDb); return ApplicationMapper.Mapper.Map(seguradoraContatoDb); } public List Merge(List contatos, Seguradora seguradora, long empresa) { IQueryable seguradoraContatoDbs = from x in base.All() where x.Seguradora.Id == seguradora.Id && x.Empresa.Id == empresa select x; SeguradoraContatoRepository seguradoraContatoRepository = this; ( from x in seguradoraContatoDbs select x.Id).ToList().Where((long x) => { List seguradoraContatos = contatos; Func u003cu003e9_64 = SeguradoraContatoRepository.u003cu003ec.u003cu003e9__6_4; if (u003cu003e9_64 == null) { u003cu003e9_64 = (SeguradoraContato t) => t.Id; SeguradoraContatoRepository.u003cu003ec.u003cu003e9__6_4 = u003cu003e9_64; } return !seguradoraContatos.Select(u003cu003e9_64).Contains(x); }).ToList().ForEach(new Action(seguradoraContatoRepository.Delete)); List seguradoraContatoDbs1 = ApplicationMapper.Mapper.Map, List>(contatos); seguradoraContatoDbs1.ForEach((SeguradoraContatoDb x) => { if (x.Id == 0) { this.SaveOrUpdate(x); return; } base.Merge(x); }); return ApplicationMapper.Mapper.Map, List>(seguradoraContatoDbs1); } public SeguradoraContato SaveOrUpdate(SeguradoraContato contato) { SeguradoraContatoDb seguradoraContatoDb = ApplicationMapper.Mapper.Map(contato); this.SaveOrUpdate(seguradoraContatoDb); return ApplicationMapper.Mapper.Map(seguradoraContatoDb); } } }