@using OnProfNext.Client.Services @using OnProfNext.Shared.Models @using OnProfNext.Shared.Models.DTOs @inject ProjectApiService ProjectService @inject UserApiService UserService @code { [Parameter] public bool ShowModal { get; set; } [Parameter] public EventCallback ShowModalChanged { get; set; } [Parameter] public ProjectCreateDto NewProject { get; set; } = new(); [Parameter] public EventCallback OnProjectCreated { get; set; } [Parameter] public string SearchText { get; set; } = ""; private List? users; private string? errorMessage; protected override async Task OnInitializedAsync() { await LoadUsersAsync(); } private async Task LoadUsersAsync() { var userResult = await UserService.GetUsersAsync(); Console.WriteLine($"UserService.GetUsersAsync result: Success={userResult.Success}, Data={userResult.Data?.Count}, Error={userResult.Error}"); if (userResult.Success && userResult.Data != null) { users = userResult.Data; } else { errorMessage = userResult.Error ?? "Fehler beim Laden der Benutzer."; } } private IEnumerable FilteredUsers => users is null || string.IsNullOrWhiteSpace(SearchText) ? Enumerable.Empty() : users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}" .Contains(SearchText, StringComparison.OrdinalIgnoreCase)); private void CloseModal() { ShowModal = false; ShowModalChanged.InvokeAsync(ShowModal); } private void ToggleProjectManager(int userId, bool isChecked) { if (isChecked) { if (!NewProject.ProjectManagerIds.Contains(userId)) NewProject.ProjectManagerIds.Add(userId); } else { NewProject.ProjectManagerIds.Remove(userId); } } private async Task CreateProjectAsync() { var result = await ProjectService.CreateProjectAsync(NewProject); if (result.Success) { await OnProjectCreated.InvokeAsync(NewProject); CloseModal(); } } }