using Microsoft.EntityFrameworkCore; public static class DataSeeder { public static async Task SeedAsync(AppDbContext db) { var existing = await db.Users.Select(u => u.Username).ToListAsync(); if (existing.Count >= 12) return; var all = new[] { CreateUser("intake1", "Intake Clerk 1", UserRole.IntakeClerk), CreateUser("intake2", "Intake Clerk 2", UserRole.IntakeClerk), CreateUser("entry1", "Entry Clerk 1", UserRole.DataEntryClerk), CreateUser("entry2", "Entry Clerk 2", UserRole.DataEntryClerk), CreateUser("verifier1", "Verifier 1", UserRole.Verifier), CreateUser("verifier2", "Verifier 2", UserRole.Verifier), CreateUser("approver1", "Clinical Approver 1", UserRole.ClinicalApprover), CreateUser("approver2", "Clinical Approver 2", UserRole.ClinicalApprover), CreateUser("clinician1", "Dr. Tanaka", UserRole.Clinician), CreateUser("clinician2", "Dr. Chen", UserRole.Clinician), CreateUser("admin1", "Administrator 1", UserRole.Administrator), CreateUser("admin2", "Administrator 2", UserRole.Administrator), }; var existingSet = existing.ToHashSet(); var missing = all.Where(u => !existingSet.Contains(u.Username)).ToArray(); if (missing.Length == 0) return; db.Users.AddRange(missing); await db.SaveChangesAsync(); } private static User CreateUser(string username, string fullName, UserRole role) => new() { Id = Guid.NewGuid(), Username = username, PasswordHash = BCrypt.Net.BCrypt.HashPassword("password"), FullName = fullName, Role = role, IsActive = true, CreatedAt = DateTimeOffset.UtcNow }; }