using Data.SeaHavenIndustries; using Microsoft.EntityFrameworkCore; using SeaHaven.DataServices.Interfaces; namespace SeaHaven.DataServices.Implementation { public class UserDataService : IUserDataService { private readonly ApplicationDbContext _context; public UserDataService(ApplicationDbContext context) { _context = context; } public async Task GetByIdAsync(string id) { return await _context.Users.FindAsync(id); } public async Task> GetAllAsync() { return await _context.Users.ToListAsync(); } public async Task GetByEmailAsync(string email) { return await _context.Users .FirstOrDefaultAsync(u => u.Email == email); } public async Task ExistsAsync(string id) { return await _context.Users.AnyAsync(u => u.Id == id); } public async Task> GetDisplayNamesByIdsAsync(IEnumerable ids) { var idList = ids .Where(id => !string.IsNullOrWhiteSpace(id)) .Distinct(StringComparer.Ordinal) .ToList(); if (idList.Count == 0) return new Dictionary(StringComparer.Ordinal); var users = await _context.Users .AsNoTracking() .Where(u => idList.Contains(u.Id)) .Select(u => new { u.Id, u.FirstName, u.LastName }) .ToListAsync(); return users.ToDictionary( u => u.Id, u => $"{u.FirstName ?? ""} {u.LastName ?? ""}".Trim(), StringComparer.Ordinal); } } }