65 lines
1.4 KiB
C#
65 lines
1.4 KiB
C#
using System;
|
|
using System.Reactive;
|
|
using System.Reactive.Linq;
|
|
using System.Threading.Tasks;
|
|
using AutoCat.Utils;
|
|
using AutoCatCore.Model;
|
|
using AutoCatCore.Services.Api;
|
|
using DynamicData.Binding;
|
|
using ReactiveUI;
|
|
|
|
namespace AutoCat.ViewModels;
|
|
|
|
public class CheckNumberViewModel : ViewModelBase
|
|
{
|
|
#region Fields
|
|
|
|
private string _plateNumber = "";
|
|
|
|
#endregion
|
|
|
|
#region Dependencies
|
|
|
|
private readonly IApiService _apiService;
|
|
|
|
#endregion
|
|
|
|
#region Commands
|
|
|
|
public ReactiveCommand<string, Unit> CheckCommand { get; }
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
public string PlateNumber
|
|
{
|
|
get => _plateNumber;
|
|
set => this.RaiseAndSetIfChanged(ref _plateNumber, value);
|
|
}
|
|
|
|
public Vehicle? Vehicle { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Events
|
|
|
|
public event EventHandler? AutoCloseEvent;
|
|
|
|
#endregion
|
|
|
|
public CheckNumberViewModel(IApiService apiService)
|
|
{
|
|
_apiService = apiService;
|
|
|
|
var checkEnabled = this.WhenAnyValue(vm => vm.PlateNumber, n => n.Length >= 8);
|
|
CheckCommand = ReactiveCommand.CreateFromTask<string>(Check, checkEnabled);
|
|
CheckCommand.ThrownExceptions.Subscribe(Alerts.ShowError);
|
|
}
|
|
|
|
private async Task Check(string number)
|
|
{
|
|
Vehicle = await _apiService.CheckNumber(number);
|
|
AutoCloseEvent?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
} |