mekasu0124

Untitled

Oct 17th, 2023
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.18 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using ReactiveUI;
  3. using System;
  4. using System.Reactive;
  5. using MeksMathGame.Models;
  6. using MeksMathGame.Services;
  7.  
  8. namespace MeksMathGame.ViewModels;
  9.  
  10. public class SelectUserViewModel : ViewModelBase
  11. {
  12.     public List<string?>? _currentUsers;
  13.     public string? _selectedUsername;
  14.     public string? _newUser;
  15.     public bool? _isValid = true;
  16.  
  17.     public SelectUserViewModel()
  18.     {
  19.         CurrentUsers = Database.GetUsernames();
  20.         SelectedUsername = CurrentUsers.Count > 0 ? CurrentUsers[0] : "Create New User";
  21.  
  22.         IObservable<bool> selectedUserOk = this.WhenAnyValue(
  23.             x => x.SelectedUsername,
  24.             x => x != "Select One");
  25.  
  26.         IObservable<bool> newUserOk = this.WhenAnyValue(
  27.             x => x.NewUser,
  28.             x => !string.IsNullOrEmpty(x));
  29.  
  30.         SendSelectUser = ReactiveCommand.Create(
  31.             ReturnSelectedUser,
  32.             selectedUserOk);
  33.  
  34.         SendNewUser = ReactiveCommand.Create(
  35.             ReturnNewUser,
  36.             newUserOk);
  37.     }
  38.  
  39.     public User ReturnSelectedUser()
  40.     {
  41.         return new User { Username = SelectedUsername };
  42.     }
  43.  
  44.     public User ReturnNewUser()
  45.     {
  46.         if (CurrentUsers.Contains(NewUser))
  47.         {
  48.             IsValid = false;
  49.             return null;
  50.         }
  51.  
  52.         User user = new() { Username = NewUser };
  53.  
  54.         Database.InsertNewUsername(user);
  55.  
  56.         return user;
  57.     }
  58.  
  59.     #region Getters/Setters
  60.     public List<string?>? CurrentUsers
  61.     {
  62.         get => _currentUsers;
  63.         set => this.RaiseAndSetIfChanged(ref _currentUsers, value);
  64.     }
  65.     public string? SelectedUsername
  66.     {
  67.         get => _selectedUsername;
  68.         set => this.RaiseAndSetIfChanged(ref _selectedUsername, value);
  69.     }
  70.     public string? NewUser
  71.     {
  72.         get => _newUser;
  73.         set => this.RaiseAndSetIfChanged(ref _newUser, value);
  74.     }
  75.     public bool? IsValid
  76.     {
  77.         get => _isValid;
  78.         set => this.RaiseAndSetIfChanged(ref _isValid, value);
  79.     }
  80.     #endregion
  81.  
  82.     public ReactiveCommand<Unit, User> SendSelectUser { get; }
  83.     public ReactiveCommand<Unit, User> SendNewUser { get; }
  84. }
  85.  
Advertisement
Add Comment
Please, Sign In to add comment