@page "/tenant-management" @using MudBlazor @inject ISnackbar Snackbar Mandantenverwaltung | OnProf Mandantenverwaltung Übersicht und Settings der Firmen und Mandanten im System. Neuen Mandant @context.Item.Name @if (context.Item.IsActive) { Aktiv } else { Inaktiv } @(_isEditing ? "Mandant bearbeiten" : "Neuen Mandant anlegen") Abbrechen Speichern @code { private string _searchString = ""; private bool _isModalOpen = false; private bool _isEditing = false; private Tenant _currentTenant = new(); public class Tenant { public Guid Id { get; set; } = Guid.NewGuid(); public string Name { get; set; } = string.Empty; public string ContactPerson { get; set; } = string.Empty; public bool IsActive { get; set; } = true; public int EmployeeCount { get; set; } } private List _tenants = new() { new Tenant { Name = "OnProf GmbH", ContactPerson = "Marc Mustermann", IsActive = true, EmployeeCount = 15 }, new Tenant { Name = "SubCorp AG", ContactPerson = "Anna Schmidt", IsActive = true, EmployeeCount = 42 }, new Tenant { Name = "Freelancer Network", ContactPerson = "Peter Parker", IsActive = false, EmployeeCount = 5 }, new Tenant { Name = "Test-Mandant", ContactPerson = "Maria Mayer", IsActive = true, EmployeeCount = 2 } }; private Func _quickFilter => x => { if (string.IsNullOrWhiteSpace(_searchString)) return true; if (x.Name.Contains(_searchString, StringComparison.OrdinalIgnoreCase)) return true; if (x.ContactPerson.Contains(_searchString, StringComparison.OrdinalIgnoreCase)) return true; return false; }; private void OpenAddModal() { _isEditing = false; _currentTenant = new Tenant(); _isModalOpen = true; } private void EditTenant(Tenant tenant) { _isEditing = true; _currentTenant = new Tenant { Id = tenant.Id, Name = tenant.Name, ContactPerson = tenant.ContactPerson, IsActive = tenant.IsActive, EmployeeCount = tenant.EmployeeCount }; _isModalOpen = true; } private void SaveTenant() { if (string.IsNullOrWhiteSpace(_currentTenant.Name) || string.IsNullOrWhiteSpace(_currentTenant.ContactPerson)) { Snackbar.Add("Name und Ansprechpartner sind Pflichtfelder.", Severity.Error); return; } if (_isEditing) { var index = _tenants.FindIndex(t => t.Id == _currentTenant.Id); if (index != -1) { _tenants[index] = _currentTenant; Snackbar.Add("Änderungen gespeichert.", Severity.Success); } } else { // Set dummy count for UI purpose _currentTenant.EmployeeCount = 0; _tenants.Add(_currentTenant); Snackbar.Add("Neuer Mandant angelegt.", Severity.Success); } CloseModal(); } private void CloseModal() { _isModalOpen = false; } }