@page "/projects" @using OnProfNext.Client.Services @using OnProfNext.Shared.Models @using OnProfNext.Shared.Models.DTOs @inject ProjectApiService ProjectService @inject UserApiService UserService @inject NavigationManager Nav

📁 Projektübersicht

@if (errorMessage is not null) {
@errorMessage
} else if (projects is null) {

Projekte werden geladen...

} else if (!projects.Any()) {
Es sind aktuell keine Projekte vorhanden.
} else { @foreach (var group in projects.GroupBy(p => p.Status)) {
@group.Key
@foreach (var p in group) {
@p.ProjectName
@if (p.ProjectManagers?.Any() == true) {
@foreach (var manager in p.ProjectManagers) { @manager.FullName }
} else {

Keine Projektleiter

}

@p.Description

}
} } @if (showAddModal) { } @if (showDeleteModal) { } @code { private List? projects; private string? errorMessage; private bool showAddModal = false; private ProjectCreateDto newProject = new(); private List users = new(); private string searchText = ""; private IEnumerable FilteredUsers => string.IsNullOrWhiteSpace(searchText) ? users : users.Where(u => $"{u.FirstName} {u.LastName} {u.Username}" .Contains(searchText, StringComparison.OrdinalIgnoreCase)); protected override async Task OnInitializedAsync() { await LoadProjectsAsync(); var userResult = await UserService.GetUsersAsync(); if (userResult.Success && userResult.Data != null) users = userResult.Data; } private async Task LoadProjectsAsync() { var result = await ProjectService.GetProjectsAsync(); if (!result.Success) { errorMessage = result.Error; return; } projects = result.Data? .OrderBy(p => p.Status) .ThenByDescending(p => p.StartDate) .ToList(); } private void ShowAddModal() { newProject = new ProjectCreateDto { Status = "Geplant", MandantId = 1 }; searchText = ""; showAddModal = true; } private void CloseAddModal() { showAddModal = false; } 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) { errorMessage = result.Error; return; } CloseAddModal(); await LoadProjectsAsync(); } private bool showDeleteModal = false; private ProjectDto? projectToDelete; private void ConfirmDelete(ProjectDto project) { projectToDelete = project; showDeleteModal = true; } private void CloseDeleteModal() { showDeleteModal = false; projectToDelete = null; } private async Task DeleteProjectAsync() { if(projectToDelete is null) return; var result = await ProjectService.DeleteProjectAsync(projectToDelete.Id); if(!result.Success) { errorMessage = result.Error; return; } CloseDeleteModal(); await LoadProjectsAsync(); } private void OpenProjectDetails(int projectId) { Nav.NavigateTo($"/projects/{projectId}"); } }