using Diary.Models;
using Diary.Services;
using ReactiveUI;
using System;
using System.Reactive;
using System.Reactive.Linq;
namespace Diary.ViewModels;
public class LoginViewModel : ViewModelBase
{
private Database _db;
private Helpers _hp;
private string _username;
private string _password;
private User _user;
public LoginViewModel(Database db, Helpers hp)
{
_db = db;
_hp = hp;
IObservable<bool> usernameOk = this.WhenAnyValue(
x => x.Username,
x => !string.IsNullOrEmpty(x) && CheckUsername());
IObservable<bool> passwordOk = this.WhenAnyValue(
x => x.Password,
x => !string.IsNullOrEmpty(x) && CheckPassword());
IObservable<bool> okEnabled = passwordOk
.Concat(usernameOk);
Login = ReactiveCommand.Create(CreateUser, okEnabled);
Exit = ReactiveCommand.Create(() => { });
}
public User CreateUser()
{
User currentUser = _db.GetUser(Username);
return new User
{
Id = currentUser.Id,
FirstName = currentUser.FirstName,
LastName = currentUser.LastName,
Email = currentUser.Email,
Username = currentUser.Username,
Password = currentUser.Password
};
}
using Diary.Models;
using Diary.Services;
using ReactiveUI;
using System;
using System.Reactive;
using System.Reactive.Linq;
namespace Diary.ViewModels;
public class LoginViewModel : ViewModelBase
{
private Database _db;
private Helpers _hp;
private string _username;
private string _password;
private User _user;
public LoginViewModel(Database db, Helpers hp)
{
_db = db;
_hp = hp;
IObservable<bool> usernameOk = this.WhenAnyValue(
x => x.Username,
x => !string.IsNullOrEmpty(x) && CheckUsername());
IObservable<bool> passwordOk = this.WhenAnyValue(
x => x.Password,
x => !string.IsNullOrEmpty(x) && CheckPassword());
IObservable<bool> okEnabled = passwordOk
.Concat(usernameOk);
Login = ReactiveCommand.Create(CreateUser, okEnabled);
Exit = ReactiveCommand.Create(() => { });
}
public User CreateUser()
{
User currentUser = _db.GetUser(Username);
return new User
{
Id = currentUser.Id,
FirstName = currentUser.FirstName,
LastName = currentUser.LastName,
Email = currentUser.Email,
Username = currentUser.Username,
Password = currentUser.Password
};
}