From 1f4e14b2e973ee7de337fd4866d9a5ceff5cb6d1 Mon Sep 17 00:00:00 2001 From: Lucas Faria Mendes Date: Mon, 30 Mar 2026 10:38:18 -0300 Subject: chore: location --- .../AgendaTelefoneRepository.cs | 149 +++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/AgendaTelefoneRepository.cs (limited to 'Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/AgendaTelefoneRepository.cs') diff --git a/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/AgendaTelefoneRepository.cs b/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/AgendaTelefoneRepository.cs new file mode 100644 index 0000000..9c1b0d6 --- /dev/null +++ b/Codemerx/Gestor.Infrastructure/Gestor.Infrastructure.Repository.Logic/AgendaTelefoneRepository.cs @@ -0,0 +1,149 @@ +using AutoMapper; +using Gestor.Infrastructure.Entities.Ferramentas; +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.Ferramentas; +using Gestor.Model.Domain.Generic; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Runtime.CompilerServices; + +namespace Gestor.Infrastructure.Repository.Logic +{ + public class AgendaTelefoneRepository : GenericRepository, IAgendaTelefoneRepository, IGenericRepository + { + private readonly GenericUnitOfWork _unitOfWork; + + public AgendaTelefoneRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) + { + this._unitOfWork = unitOfWork; + } + + public void Delete(long id) + { + base.Delete(base.FindEntityById(id)); + } + + public void DeleteRange(long id) + { + IQueryable agendaTelefoneDbs = + from x in base.All() + where x.Agenda.Id == id + select x; + if (!agendaTelefoneDbs.Any()) + { + return; + } + base.DeleteRange(agendaTelefoneDbs); + } + + public List Find(string telefone) + { + List list = ( + from x in base.All() + where x.Numero.Contains(telefone) + select x).ToList(); + return ApplicationMapper.Mapper.Map, List>(list); + } + + private List FindByAgenda(long id) + { + return ( + from x in base.All() + where x.Agenda.Id == id + select new AgendaTelefone() + { + Id = x.Id, + Agenda = ApplicationMapper.Mapper.Map(x.Agenda), + Prefixo = x.Prefixo, + Numero = x.Numero, + Tipo = x.Tipo, + Observacao = x.Observacao + }).ToList(); + } + + public List FindByAgendaId(long id) + { + return this.FindByAgenda(id); + } + + public AgendaTelefone FindById(long id) + { + AgendaTelefoneDb agendaTelefoneDb = base.FindEntityById(id); + return ApplicationMapper.Mapper.Map(agendaTelefoneDb); + } + + public List Inserir(List telefones) + { + List agendaTelefoneDbs = ApplicationMapper.Mapper.Map, List>(telefones); + agendaTelefoneDbs.ForEach((AgendaTelefoneDb x) => { + if (x.Id == 0) + { + this.SaveOrUpdate(x); + return; + } + base.Merge(x); + }); + return ApplicationMapper.Mapper.Map, List>(agendaTelefoneDbs); + } + + public List Inserir(List telefones, Agenda agenda) + { + telefones.ForEach((AgendaTelefone x) => x.Agenda = agenda); + List agendaTelefoneDbs = ApplicationMapper.Mapper.Map, List>(telefones); + base.AddRange(agendaTelefoneDbs); + return ApplicationMapper.Mapper.Map, List>(agendaTelefoneDbs); + } + + public AgendaTelefone Merge(AgendaTelefone telefone) + { + AgendaTelefoneDb agendaTelefoneDb = ApplicationMapper.Mapper.Map(telefone); + base.Merge(agendaTelefoneDb); + return ApplicationMapper.Mapper.Map(agendaTelefoneDb); + } + + public List Merge(List telefones, Agenda agenda) + { + IQueryable agendaTelefoneDbs = + from x in base.All() + where x.Agenda.Id == agenda.Id + select x; + AgendaTelefoneRepository agendaTelefoneRepository = this; + ( + from x in agendaTelefoneDbs + select x.Id).ToList().Where((long x) => { + List agendaTelefones = telefones; + Func u003cu003e9_114 = AgendaTelefoneRepository.u003cu003ec.u003cu003e9__11_4; + if (u003cu003e9_114 == null) + { + u003cu003e9_114 = (AgendaTelefone t) => t.Id; + AgendaTelefoneRepository.u003cu003ec.u003cu003e9__11_4 = u003cu003e9_114; + } + return !agendaTelefones.Select(u003cu003e9_114).Contains(x); + }).ToList().ForEach(new Action(agendaTelefoneRepository.Delete)); + List agendaTelefoneDbs1 = ApplicationMapper.Mapper.Map, List>(telefones); + agendaTelefoneDbs1.ForEach((AgendaTelefoneDb x) => { + if (x.Id != 0) + { + base.Merge(x); + return; + } + x.Agenda = ApplicationMapper.Mapper.Map(agenda); + this.SaveOrUpdate(x); + }); + return ApplicationMapper.Mapper.Map, List>(agendaTelefoneDbs1); + } + + public AgendaTelefone SaveOrUpdate(AgendaTelefone telefone) + { + AgendaTelefoneDb agendaTelefoneDb = ApplicationMapper.Mapper.Map(telefone); + this.SaveOrUpdate(agendaTelefoneDb); + return ApplicationMapper.Mapper.Map(agendaTelefoneDb); + } + } +} \ No newline at end of file -- cgit v1.2.3