using Prism.Commands;
using Prism.Events;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Windows.Input;
using System.Threading.Tasks;
using TeamAAS_VP.Data;
using TeamAAS_VP.Enums;
using TeamAAS_VP.Events;
using TeamAAS_VP.Core;
using TeamAAS_VP.Models;
using TouchSocket.Core;
using TeamAAS_VP.Resources.Languages;
using TeamAAS_VP.Interfaces;
namespace TeamAAS_VP.ViewModels.User
{
public class SignUpViewModel : BindableBase
{
IRegionManager _regionManager;
IEventAggregator _eventAggregator;
IContainerProvider _container;
private readonly ISystemDatabaseService _systemDb;
#region 属性
public TeamAAS_VP.Models.User MyUser { get; set; } = new TeamAAS_VP.Models.User();
#endregion
#region 命令
///
/// 注册命令
///
public DelegateCommand SignUpCommand { get; set; }
///
/// 登录命令
///
public DelegateCommand BackupCommand { get; set; }
#endregion
#region 事件
#endregion
public SignUpViewModel(IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, ISystemDatabaseService systemDb)
{
_regionManager = regionManager;
_eventAggregator = ea;
_container = container;
_systemDb = systemDb;
SignUpCommand = new DelegateCommand(async () => await SignUpAsync());
BackupCommand = new DelegateCommand(new Action(Backup));
}
#region 方法
private void Backup()
{
_regionManager.RequestNavigate("UserRegionContext", "LoginView");
_container.Resolve().UpdateUserList();
}
private async Task SignUpAsync()
{
if (string.IsNullOrEmpty(MyUser.UserName))
return;
MyUser.CreateTime = DateTime.Now;
MyUser.IsRemember = false;
try
{
// if Id is zero then treat as new
var added = await _systemDb.AddUserAsync(MyUser);
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成注册, Duration = 1 });
}
catch (Exception)
{
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.已注册, Duration = 1 });
}
}
#endregion
}
}