using LCU.API.Internal.RepoApi.Repos.Models; using LCU.API.Internal.RepoApi.Repos.Persistence; using Microsoft.EntityFrameworkCore; namespace LCU.API.Internal.RepoApi.Repos.Repositories { public class ExternalUserRepository : BaseRepository, IExternalUserRepository { public ExternalUserRepository(AppDbContext context) : base(context) { } public async Task> ListAsync() { var result = await _context.ExternalUsers.AsNoTracking().ToListAsync(); return result; } public async Task FindByReferenceIdAsync(int referenceId) { return await _context.ExternalUsers.AsNoTracking().Where(user => user.ReferenceId == referenceId).FirstOrDefaultAsync(); } public async Task SynchronizeSet(IReadOnlyCollection externalUsers) { foreach (var user in externalUsers) { var existing = await FindByReferenceIdAsync(user.ReferenceId); if (existing != null) { user.Id = existing.Id; _context.Entry(user).State = EntityState.Modified; _context.ExternalUsers.Update(user); } else { await _context.ExternalUsers.AddAsync(user); } } } } }