Skip to content
Snippets Groups Projects
Commit ed449d80 authored by BadWolf97's avatar BadWolf97
Browse files

started work on Admin Page

parent 59f44eae
Branches
No related tags found
No related merge requests found
......@@ -115,6 +115,7 @@ public class App : Application
new ViewMap(ViewModel: typeof(ShellModel)),
new ViewMap<LoginPage, LoginModel>(),
new ViewMap<MainPage, MainModel>(),
new ViewMap<AdminPage, AdminModel>(),
new DataViewMap<UserSettingsPage, UserSettingsModel, UserEntity>()
);
......@@ -124,6 +125,7 @@ public class App : Application
{
new RouteMap("Login", View: views.FindByViewModel<LoginModel>()),
new RouteMap("Main", View: views.FindByViewModel<MainModel>()),
new RouteMap("Admin", View: views.FindByViewModel<AdminModel>()),
new RouteMap("UserSettings", View: views.FindByViewModel<UserSettingsModel>()),
}
)
......
using Uno.Toolkit;
namespace EBLDienstplanUno.Business.API;
public class AsyncCommand : ICommand, ILoadable
{
public event EventHandler CanExecuteChanged;
public event EventHandler IsExecutingChanged;
private Func<Task> _executeAsync;
private bool _isExecuting;
public AsyncCommand(Func<Task> executeAsync)
{
_executeAsync = executeAsync;
}
public bool CanExecute(object parameter) => !IsExecuting;
public bool IsExecuting
{
get => _isExecuting;
set
{
if (_isExecuting != value)
{
_isExecuting = value;
IsExecutingChanged?.Invoke(this, new());
CanExecuteChanged?.Invoke(this, new());
}
}
}
public async void Execute(object parameter)
{
try
{
IsExecuting = true;
await _executeAsync();
}
finally
{
IsExecuting = false;
}
}
}
......@@ -14,6 +14,7 @@ public class EBLDienstplan : IEBLDienstplan
}
public EBLDienstplan(IOptions<Server> option) : this(option.Value.BaseURL ?? "") { }
#region Login
public async Task<UserJwtToken?> Login(string username, string password)
{
try
......@@ -50,7 +51,8 @@ public class EBLDienstplan : IEBLDienstplan
return null;
}
}
#endregion
#region User
public async Task<IUser?> GetUser(Guid Id)
{
try
......@@ -64,7 +66,20 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeFirstName(Guid Id, string newName)
public async Task<IEnumerable<IUser>> GetUsers()
{
try
{
IEnumerable<IUser> result = await APIClient.UsersAllAsync();
return result;
}
catch
{
return new List<IUser>();
}
}
public async Task<IUser?> UserChangeFirstName(Guid Id, string newName)
{
try
{
......@@ -78,7 +93,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeLastName(Guid Id, string newName)
public async Task<IUser?> UserChangeLastName(Guid Id, string newName)
{
try
{
......@@ -92,7 +107,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeEMail(Guid Id, string newMail)
public async Task<IUser?> UserChangeEMail(Guid Id, string newMail)
{
try
{
......@@ -106,7 +121,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangePassword(Guid Id, string newPassword)
public async Task<IUser?> UserChangePassword(Guid Id, string newPassword)
{
try
{
......@@ -120,7 +135,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeIsAdmin(Guid Id, bool newState)
public async Task<IUser?> UserChangeIsAdmin(Guid Id, bool newState)
{
try
{
......@@ -134,7 +149,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeIsInternalTutor(Guid Id, bool newState)
public async Task<IUser?> UserChangeIsInternalTutor(Guid Id, bool newState)
{
try
{
......@@ -148,7 +163,7 @@ public class EBLDienstplan : IEBLDienstplan
}
}
public async Task<IUser?> ChangeIsExternalTutor(Guid Id, bool newState)
public async Task<IUser?> UserChangeIsExternalTutor(Guid Id, bool newState)
{
try
{
......@@ -161,6 +176,335 @@ public class EBLDienstplan : IEBLDienstplan
return null;
}
}
#endregion
#region DutyShift
public async Task<IEnumerable<IDutyShift>> GetDutyShiftsAsync(bool ShowElapsed)
{
try
{
IEnumerable<IDutyShift> result = await APIClient.DutyshiftAllAsync(ShowElapsed);
return result;
}
catch
{
return new List<IDutyShift>();
}
}
public async Task<IDutyShift?> AddDutyShift(DateTime start, DateTime ende, Guid? courseId, Guid? dsCategoryId, bool canHaveTwoTutors, string comment)
{
try
{
IDutyShift result = await APIClient.DutyshiftPUTAsync(start, ende, courseId, dsCategoryId, canHaveTwoTutors, comment);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeStartTime(Guid guid, DateTime newStart)
{
try
{
IDutyShift result = await APIClient.StarttimeAsync(guid, newStart);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeEndTime(Guid guid, DateTime newEnd)
{
try
{
IDutyShift result = await APIClient.EndtimeAsync(guid, newEnd);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeCourse(Guid guid, Guid? newCourse)
{
try
{
IDutyShift result = await APIClient.CourseidAsync(guid, newCourse);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeCategory(Guid guid, Guid? newCategory)
{
try
{
IDutyShift result = await APIClient.DutyshiftcategoryidAsync(guid, newCategory);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeCanHaveTwoTutors(Guid guid, bool newCanHaveTwoTutors)
{
try
{
IDutyShift result = await APIClient.CanhavetwotutorsAsync(guid, newCanHaveTwoTutors);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShift?> DutyShiftChangeComment(Guid guid, string newComment)
{
try
{
IDutyShift result = await APIClient.CommentAsync(guid, newComment);
return result;
}
catch
{
return null;
}
}
public async Task<IEnumerable<IDutyShiftPlace>> GetDutyShiftPlacesAsync(Guid DutyShiftId)
{
try
{
IEnumerable<IDutyShiftPlace> result = await APIClient.PlacesAllAsync(DutyShiftId);
return result;
}
catch
{
return new List<IDutyShiftPlace>();
}
}
public async Task<IDutyShiftPlace?> AddDutyShiftPlace(Guid DutyShiftId, Guid PlaceId)
{
try
{
IDutyShiftPlace result = await APIClient.PlacesPOSTAsync(DutyShiftId, PlaceId);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShiftPlace?> RemoveDutyShiftPlace(Guid DutyShiftId, Guid PlaceId)
{
try
{
IDutyShiftPlace result = await APIClient.PlacesDELETEAsync(DutyShiftId, PlaceId);
return result;
}
catch
{
return null;
}
}
public async Task<IEnumerable<IDutyShiftCategory>> GetDutyShiftCategoriesAsync()
{
try
{
IEnumerable<IDutyShiftCategory> result = await APIClient.CategoriesAllAsync();
return result;
}
catch
{
return new List<IDutyShiftCategory>();
}
}
public async Task<IDutyShiftCategory?> AddDutyShiftCategory(string name)
{
try
{
IDutyShiftCategory result = await APIClient.CategoriesPUTAsync(name);
return result;
}
catch
{
return null;
}
}
public async Task<IDutyShiftCategory?> ChangeDutyShiftCategoryName(Guid Id, string newName)
{
try
{
IDutyShiftCategory result = await APIClient.NameAsync(Id, newName);
return result;
}
catch
{
return null;
}
}
public async Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesByDutyShiftCategoryAsync(Guid Id)
{
try
{
IEnumerable<IPlaceCategory> result = await APIClient.NeededplacecategoriesAllAsync(Id);
return result;
}
catch
{
return new List<IPlaceCategory>();
}
}
public async Task<IPlaceCategory?> AddPlaceCategoryToDutyShiftCategory(Guid DutyShiftCategoryId, Guid PlaceCategoryId)
{
try
{
IPlaceCategory result = await APIClient.Add2Async(DutyShiftCategoryId, PlaceCategoryId);
return result;
}
catch
{
return null;
}
}
public async Task<IPlaceCategory?> RemovePlaceCategoryFromDutyShiftCategory(Guid DutyShiftCategoryId, Guid PlaceCategoryId)
{
try
{
IPlaceCategory result = await APIClient.NeededplacecategoriesAsync(DutyShiftCategoryId, PlaceCategoryId);
return result;
}
catch
{
return null;
}
}
#endregion
#region Places
public async Task<IEnumerable<IPlace>> GetPlacesAsync()
{
try
{
IEnumerable<IPlace> result = await APIClient.PlaceAllAsync();
return result;
}
catch
{
return new List<IPlace>();
}
}
public async Task<IPlace?> AddPlace(string name)
{
try
{
IPlace result = await APIClient.PlacePUTAsync(name);
return result;
}
catch
{
return null;
}
}
public async Task<IPlace?> ChangePlaceName(Guid Id, string newName)
{
try
{
IPlace result = await APIClient.PlacePATCHAsync(Id, newName);
return result;
}
catch
{
return null;
}
}
public async Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesByPlaceAsync(Guid PlaceId)
{
try
{
IEnumerable<IPlaceCategory> result = await APIClient.CategoriesAll2Async(PlaceId);
return result;
}
catch
{
return new List<IPlaceCategory>();
}
}
public async Task<IPlaceCategory?> AddPlaceCategoryToPlace(Guid PlaceId, Guid PlaceCategoryId)
{
try
{
IPlaceCategory result = await APIClient.Add2Async(PlaceId, PlaceCategoryId);
return result;
}
catch
{
return null;
}
}
public async Task<IPlaceCategory?> RemovePlaceCategoryFromPlace(Guid PlaceId, Guid PlaceCategoryId)
{
try
{
IPlaceCategory result = await APIClient.CategoriesDELETEAsync(PlaceId, PlaceCategoryId);
return result;
}
catch
{
return null;
}
}
public async Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesAsync()
{
try
{
IEnumerable<IPlaceCategory> result = await APIClient.CategoriesAll3Async();
return result;
}
catch
{
return new List<IPlaceCategory>();
}
}
public async Task<IPlaceCategory?> AddPlaceCategory(string name)
{
try
{
IPlaceCategory result = await APIClient.CategoriesPUT2Async(name);
return result;
}
catch
{
return null;
}
}
public async Task<IPlaceCategory?> ChangePlaceCategoryName(Guid Id, string newName)
{
try
{
IPlaceCategory result = await APIClient.CategoriesPATCHAsync(Id, newName);
return result;
}
catch
{
return null;
}
}
#endregion
//add a method for a SHA512 Hash
......@@ -185,13 +529,44 @@ public interface IEBLDienstplan
Task<UserJwtToken?> Login(string username, string password);
Task<IUser?> WhoAmI();
Task<IUser?> GetUser(Guid Id);
Task<IUser?> ChangeFirstName(Guid Id, string newName);
Task<IUser?> ChangeLastName(Guid Id, string newName);
Task<IUser?> ChangeEMail(Guid Id, string newMail);
Task<IUser?> ChangePassword(Guid Id, string newPassword);
Task<IUser?> ChangeIsAdmin(Guid Id, bool newState);
Task<IUser?> ChangeIsInternalTutor(Guid Id, bool newState);
Task<IUser?> ChangeIsExternalTutor(Guid Id, bool newState);
Task<IEnumerable<IUser>> GetUsers();
Task<IUser?> UserChangeFirstName(Guid Id, string newName);
Task<IUser?> UserChangeLastName(Guid Id, string newName);
Task<IUser?> UserChangeEMail(Guid Id, string newMail);
Task<IUser?> UserChangePassword(Guid Id, string newPassword);
Task<IUser?> UserChangeIsAdmin(Guid Id, bool newState);
Task<IUser?> UserChangeIsInternalTutor(Guid Id, bool newState);
Task<IUser?> UserChangeIsExternalTutor(Guid Id, bool newState);
Task<IEnumerable<IDutyShift>> GetDutyShiftsAsync(bool ShowElapsed);
Task<IDutyShift?> AddDutyShift(DateTime start, DateTime ende, Guid? courseId, Guid? dsCategoryId, bool canHaveTwoTutors, string comment);
Task<IDutyShift?> DutyShiftChangeStartTime(Guid guid, DateTime newStart);
Task<IDutyShift?> DutyShiftChangeEndTime(Guid guid, DateTime newEnd);
Task<IDutyShift?> DutyShiftChangeCourse(Guid guid, Guid? newCourse);
Task<IDutyShift?> DutyShiftChangeCategory(Guid guid, Guid? newCategory);
Task<IDutyShift?> DutyShiftChangeCanHaveTwoTutors(Guid guid, bool newCanHaveTwoTutors);
Task<IDutyShift?> DutyShiftChangeComment(Guid guid, string newComment);
Task<IEnumerable<IDutyShiftPlace>> GetDutyShiftPlacesAsync(Guid DutyShiftId);
Task<IDutyShiftPlace?> AddDutyShiftPlace(Guid DutyShiftId, Guid PlaceId);
Task<IDutyShiftPlace?> RemoveDutyShiftPlace(Guid DutyShiftId, Guid PlaceId);
Task<IEnumerable<IDutyShiftCategory>> GetDutyShiftCategoriesAsync();
Task<IDutyShiftCategory?> AddDutyShiftCategory(string name);
Task<IDutyShiftCategory?> ChangeDutyShiftCategoryName(Guid Id, string newName);
Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesByDutyShiftCategoryAsync(Guid Id);
Task<IPlaceCategory?> AddPlaceCategoryToDutyShiftCategory(Guid DutyShiftCategoryId, Guid PlaceCategoryId);
Task<IPlaceCategory?> RemovePlaceCategoryFromDutyShiftCategory(Guid DutyShiftCategoryId, Guid Place);
Task<IEnumerable<IPlace>> GetPlacesAsync();
Task<IPlace?> AddPlace(string name);
Task<IPlace?> ChangePlaceName(Guid Id, string newName);
Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesByPlaceAsync(Guid PlaceId);
Task<IPlaceCategory?> AddPlaceCategoryToPlace(Guid PlaceId, Guid PlaceCategoryId);
Task<IPlaceCategory?> RemovePlaceCategoryFromPlace(Guid PlaceId, Guid PlaceCategoryId);
Task<IEnumerable<IPlaceCategory>> GetPlaceCategoriesAsync();
Task<IPlaceCategory?> AddPlaceCategory(string name);
Task<IPlaceCategory?> ChangePlaceCategoryName(Guid Id, string newName);
}
......@@ -51,6 +51,7 @@
<None Remove="Assets\Icons\admin.svg" />
<None Remove="Assets\Icons\logout.svg" />
<None Remove="Assets\Icons\settings.svg" />
<None Remove="Presentation\AdminPage.xaml" />
<None Remove="Presentation\BlankPage1.xaml" />
<None Remove="Presentation\UserSettingsPage.xaml" />
</ItemGroup>
......@@ -85,4 +86,14 @@
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<UpToDateCheckInput Remove="Presentation\AdminPage.xaml" />
</ItemGroup>
<ItemGroup>
<Page Update="Presentation\AdminPage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
</Project>
using EBLDienstplanAPI.OpenAPI;
using EBLDienstplanUno.Business.API;
namespace EBLDienstplanUno.Presentation;
public partial record AdminModel
{
private INavigator _navigator;
private IEBLDienstplan _api;
public AdminModel(
IOptions<AppConfig> appInfo,
IAuthenticationService authentication,
IEBLDienstplan api,
INavigator navigator)
{
_navigator = navigator;
_api = api;
_authentication = authentication;
if (_api.user == null)
{
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Nicht eingeloggt!");
navigator.NavigateViewAsync<LoginModel>(this);
return;
}
else if (_api.user.IsAdmin == false)
{
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Kein Admin!");
navigator.NavigateViewAsync<MainModel>(this);
return;
}
LoadDutyShiftsCommand = new AsyncCommand(async () => DutyShifts = await _api.GetDutyShiftsAsync(false));
LoadUsersCommand = new AsyncCommand(async () => Users = await _api.GetUsers());
LoadPlacesCommand = new AsyncCommand(async () => Places = await _api.GetPlacesAsync());
LoadPlaceCategoriesCommand = new AsyncCommand(async () => PlaceCategories = await _api.GetPlaceCategoriesAsync());
LoadDutyShiftCategoriesCommand = new AsyncCommand(async () => DutyShiftCategories = await _api.GetDutyShiftCategoriesAsync ());
LoadDutyShiftsCommand.Execute(null);
LoadUsersCommand.Execute(null);
LoadPlacesCommand.Execute(null);
LoadPlaceCategoriesCommand.Execute(null);
LoadDutyShiftCategoriesCommand.Execute(null);
Title = $"Administration - angemeldet als {api.user?.Firstname} {api.user?.Lastname}";
}
public string? Title { get; }
public IEnumerable<IDutyShift> DutyShifts;
public IEnumerable<IUser> Users;
public IEnumerable<IPlace> Places;
public IEnumerable<IPlaceCategory> PlaceCategories;
public IEnumerable<IDutyShiftCategory> DutyShiftCategories;
public AsyncCommand LoadDutyShiftsCommand { get; }
public AsyncCommand LoadUsersCommand { get; }
public AsyncCommand LoadPlacesCommand { get; }
public AsyncCommand LoadPlaceCategoriesCommand { get; }
public AsyncCommand LoadDutyShiftCategoriesCommand { get; }
public async ValueTask Logout(CancellationToken token)
{
await _authentication.LogoutAsync(token);
}
private IAuthenticationService _authentication;
}
<Page x:Class="EBLDienstplanUno.Presentation.AdminPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:EBLDienstplanUno.Presentation"
xmlns:uen="using:Uno.Extensions.Navigation.UI"
xmlns:utu="using:Uno.Toolkit.UI"
xmlns:um="using:Uno.Material"
NavigationCacheMode="Required"
Background="{ThemeResource BackgroundBrush}">
<Grid utu:SafeArea.Insets="VisibleBounds">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<utu:NavigationBar Content="{Binding Title}">
<utu:NavigationBar.PrimaryCommands>
<AppBarButton x:Name="CMB_logout" Label="Ausloggen" Command="{Binding Logout}">
<AppBarButton.Icon>
<BitmapIcon ShowAsMonochrome="True" UriSource="ms-appx:///EBLDienstplanUno/Assets/Icons/logout.png" />
</AppBarButton.Icon>
</AppBarButton>
</utu:NavigationBar.PrimaryCommands>
</utu:NavigationBar>
<utu:TabBar SelectedIndex="0" Style="{StaticResource ColoredTopTabBarStyle}" Grid.Row="2" SelectionIndicatorTransitionMode="Slide" uen:Region.Attached="True">
<utu:TabBar.Items>
<utu:TabBarItem Content="Dienstschichten" uen:Region.Name="Dienstschichten">
<utu:TabBarItem.Icon>
<SymbolIcon Symbol="Calendar" />
</utu:TabBarItem.Icon>
</utu:TabBarItem>
<utu:TabBarItem Content="Dienststellen" uen:Region.Name="Dienststellen">
<utu:TabBarItem.Icon>
<SymbolIcon Symbol="MapPin" />
</utu:TabBarItem.Icon>
</utu:TabBarItem>
<utu:TabBarItem Content="Kategorien" uen:Region.Name="Kategorien">
<utu:TabBarItem.Icon>
<SymbolIcon Symbol="Link" />
</utu:TabBarItem.Icon>
</utu:TabBarItem>
<utu:TabBarItem Content="Benutzer" uen:Region.Name="Benutzer">
<utu:TabBarItem.Icon>
<SymbolIcon Symbol="OtherUser" />
</utu:TabBarItem.Icon>
</utu:TabBarItem>
</utu:TabBar.Items>
</utu:TabBar>
<Grid uen:Region.Attached="True" uen:Region.Navigator="Visibility" Grid.Row="1">
<Grid Visibility="Collapsed" uen:Region.Name="Dienstschichten">
<utu:LoadingView Source="{Binding LoadDutyShiftsCommand}">
<utu:LoadingView.LoadingContent>
<ProgressRing IsActive="True" />
</utu:LoadingView.LoadingContent>
<ListView ItemsSource="{Binding DutyShifts}" />
</utu:LoadingView>
</Grid>
<Grid Visibility="Collapsed" uen:Region.Name="Kategorien">
</Grid>
<Grid Visibility="Collapsed" uen:Region.Name="Dienststellen">
<utu:LoadingView Source="{Binding LoadPlacesCommand}">
<utu:LoadingView.LoadingContent>
<ProgressRing IsActive="True" />
</utu:LoadingView.LoadingContent>
<ListView ItemsSource="{Binding Places}" />
</utu:LoadingView>
</Grid>
<Grid Visibility="Collapsed" uen:Region.Name="Benutzer">
<utu:LoadingView Source="{Binding LoadUsersCommand}">
<utu:LoadingView.LoadingContent>
<ProgressRing IsActive="True" />
</utu:LoadingView.LoadingContent>
<ListView ItemsSource="{Binding Users}" />
</utu:LoadingView>
</Grid>
</Grid>
</Grid>
</Page>
namespace EBLDienstplanUno.Presentation;
namespace EBLDienstplanUno.Presentation;
public sealed partial class SecondPage : Page
public sealed partial class AdminPage : Page
{
public SecondPage()
public AdminPage()
{
this.InitializeComponent();
}
}
......@@ -16,6 +16,14 @@ public partial record MainModel
_navigator = navigator;
_api = api;
_authentication = authentication;
if (_api.user == null)
{
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Nicht eingeloggt!");
navigator.NavigateViewAsync<LoginModel>(this);
return;
}
Title = $"Startbildschirm - angemeldet als {api.user?.Firstname} {api.user?.Lastname}";
}
......@@ -28,6 +36,11 @@ public partial record MainModel
await _navigator.NavigateViewModelAsync<UserSettingsModel>(this, data: new UserEntity(_api.user!));
}
public async Task GoToAdmin()
{
await _navigator.NavigateViewModelAsync<AdminModel>(this);
}
public async ValueTask Logout(CancellationToken token)
{
await _authentication.LogoutAsync(token);
......
......@@ -16,18 +16,31 @@ public partial record UserSettingsModel
{
_navigator = navigator;
_api = api;
if (user == null)
{
navigator.GoBack(this);
return;
}
if (_api.user == null)
{
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Nicht eingeloggt!");
navigator.NavigateViewAsync<LoginModel>(this);
return;
}
if (api.user?.Id == Entity.User.Id)
{
user = api.user;
} else
{
user = Entity.User;
}
if (user == null)
else if (_api.user.IsAdmin == false)
{
navigator.GoBack(this);
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Kein Admin!");
navigator.NavigateViewAsync<MainModel>(this);
return;
}
else
{
user = Entity.User;
}
Title = $"Nutzereinstellungen für {user?.Username}";
}
public string? Title { get; }
......@@ -52,12 +65,12 @@ public partial record UserSettingsModel
var isAdmin = await IsAdmin;
var isInternalTutor = await IsInternalTutor;
var isExternalTutor = await IsExternalTutor;
if (user.Firstname != firstname) { await _api.ChangeFirstName(user.Id, firstname); }
if (user.Lastname != lastname) { await _api.ChangeLastName(user.Id, lastname); }
if (user.EMail != email) { await _api.ChangeEMail(user.Id, email); }
if (user.IsAdmin != isAdmin) { await _api.ChangeIsAdmin(user.Id, isAdmin); }
if (user.IsInternalTutor != isInternalTutor) { await _api.ChangeIsInternalTutor(user.Id, isInternalTutor); }
if (user.IsExternalTutor != isExternalTutor) { await _api.ChangeIsExternalTutor(user.Id, isExternalTutor); }
if (user.Firstname != firstname) { await _api.UserChangeFirstName(user.Id, firstname); }
if (user.Lastname != lastname) { await _api.UserChangeLastName(user.Id, lastname); }
if (user.EMail != email) { await _api.UserChangeEMail(user.Id, email); }
if (user.IsAdmin != isAdmin) { await _api.UserChangeIsAdmin(user.Id, isAdmin); }
if (user.IsInternalTutor != isInternalTutor) { await _api.UserChangeIsInternalTutor(user.Id, isInternalTutor); }
if (user.IsExternalTutor != isExternalTutor) { await _api.UserChangeIsExternalTutor(user.Id, isExternalTutor); }
}
public async ValueTask ChangePassword(CancellationToken token)
{
......@@ -69,6 +82,6 @@ public partial record UserSettingsModel
_ = _navigator.ShowMessageDialogAsync(this, title: "Fehler", content: "Die Passwörter stimmen nicht überein.");
return;
}
await _api.ChangePassword(user.Id, password1);
await _api.UserChangePassword(user.Id, password1);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment