using Microsoft.EntityFrameworkCore; using Domain.Entities; using Models.Interfaces; using Models.Models; using System.Globalization; namespace Models.Repositories { public class PhSLookUpRepository(PhronCareOperationsHubContext context) : IPhSLookUpRepository { #region Declaraciones private readonly PhronCareOperationsHubContext _context = context; #endregion public async Task> CustomersListAsync(string filter, int limit = 10) => await _context.PhSCustomers .Where(c => c.Name.Contains(filter)) .OrderBy(c => c.Name) .Select(c => new ELookUpItem { Id = c.Id, Nombre = c.Name }) .Take(limit) .ToListAsync(); public async Task> InstitutionsListAsync(string filter, int limit = 10) => await _context.PhSInstitutions .Where(c => c.Name.Contains(filter)) .OrderBy(c => c.Name) .Select(c => new ELookUpItem { Id = c.Id, Nombre = c.Name + " (" + c.Streetaddress + ")" }) .Take(limit) .ToListAsync(); public async Task> PatientsListAsync(string filter, int limit = 10) { var ti = CultureInfo.CurrentCulture.TextInfo; return await _context.PhSPatients .Where(c => c.Firstname.Contains(filter) || c.Lastname.Contains(filter)) .OrderBy(c => c.Firstname) .Select(c => new ELookUpItem { Id = c.Id, Nombre = ti.ToTitleCase(c.Firstname.ToLower()) + " " + ti.ToTitleCase(c.Lastname.ToLower()) }) .Take(limit) .ToListAsync(); } public async Task> ProfessionalsListAsync(string filter, int limit = 10) { TextInfo ti = CultureInfo.CurrentCulture.TextInfo; return await _context.PhSProfessionals .Where(c => c.Fullname.Contains(filter)) .OrderBy(c => c.Fullname) .Select(c => new ELookUpItem { Id = c.Id, Nombre = ti.ToTitleCase(c.Fullname.ToLower()) }) .Take(limit) .ToListAsync(); } public async Task> PeopleListAsync(string filter, int limit = 10) => await _context.PhSPeople .Where(c => c.Name.Contains(filter)) .OrderBy(c => c.Name) .Select(c => new ELookUpItem { Id = c.Id, Nombre = c.Name }) .Take(limit) .ToListAsync(); public async Task> BussinessUnitsListAsync(string filter, int limit = 10) => await _context.PhSBusinessUnits .Where(c => c.Code.Contains(filter) || c.Description.Contains(filter)) .OrderBy(c => c.Code) .Select(c => new ELookUpItem { Id = c.Id, Nombre = c.Code + " | " + c.Description }) .Take(limit) .ToListAsync(); public async Task> ProductsListAsync(string filter, int limit = 10) => await _context.PhSProducts .Where(c => c.Name.Contains(filter) || c.Description.Contains(filter)) .OrderBy(c => c.Name) .Select(c => new EProductLookupItem { Id = c.Id, Code=c.Businessunits.Code, Description = c.Description , UnitPrice= c.Baseprice }) .Take(limit) .ToListAsync(); } }