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.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 VendedorUsuarioRepository : GenericRepository, IVendedorUsuarioRepository, IGenericRepository { private readonly GenericUnitOfWork _unitOfWork; public VendedorUsuarioRepository(GenericUnitOfWork unitOfWork) : base(unitOfWork.Session) { this._unitOfWork = unitOfWork; } public void Delete(long id) { base.Delete(base.FindEntityById(id)); } public bool Exist(long id) { return base.All().Any((VendedorUsuarioDb v) => v.Vendedor.Id == id); } public bool ExistVinculoUsuario(long idUsuario) { return base.All().Any((VendedorUsuarioDb v) => v.Usuario.Id == idUsuario); } public VendedorUsuario FindById(long id) { VendedorUsuarioDb vendedorUsuarioDb = base.FindEntityById(id); return ApplicationMapper.Mapper.Map(vendedorUsuarioDb); } public IList FindByUsuario(long idUsuario) { List list = ( from x in base.All() where x.Usuario.Id == idUsuario select x).ToList(); List vendedors = new List(); list.ForEach((VendedorUsuarioDb vu) => vendedors.Add((new VendedorRepository(this._unitOfWork)).FindById(vu.Vendedor.Id))); return vendedors; } public List FindByVinculo(long idUsuario) { return ( from x in base.All() where x.Usuario.Id == idUsuario select x into u select new VendedorUsuario() { Id = u.Id, Usuario = new Usuario() { Id = u.Usuario.Id, Nome = u.Usuario.Nome }, Vendedor = new Vendedor() { Id = u.Vendedor.Id, Nome = u.Vendedor.Nome } }).ToList(); } public VendedorUsuario Merge(VendedorUsuario vendedorUsuario) { VendedorUsuarioDb vendedorUsuarioDb = ApplicationMapper.Mapper.Map(vendedorUsuario); base.Merge(vendedorUsuarioDb); return ApplicationMapper.Mapper.Map(vendedorUsuarioDb); } public VendedorUsuario SaveOrUpdate(VendedorUsuario vendedorUsuario) { VendedorUsuarioDb vendedorUsuarioDb = ApplicationMapper.Mapper.Map(vendedorUsuario); this.SaveOrUpdate(vendedorUsuarioDb); return ApplicationMapper.Mapper.Map(vendedorUsuarioDb); } } }