Files
6098/Cowain.Bake.UI/Home/ViewModels/LoginViewModel.cs

127 lines
4.0 KiB
C#
Raw Normal View History

//using Cowain.Bake.Common.Service;
using Cowain.Bake.BLL;
using Cowain.Bake.Common;
using Cowain.Bake.Common.Enums;
using Cowain.Bake.Common.Interface;
using Prism.Commands;
using Prism.Ioc;
using Prism.Mvvm;
using System;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using Unity;
namespace Cowain.Bake.UI.Home.ViewModels
{
public class LoginViewModel : BindableBase
{
private readonly IUnityContainer _unityContainer;
//private readonly IRegionManager _regionManager;
public LoginViewModel(IUnityContainer unityContainer/*, IRegionManager regionManager*/)
{
//初始化数据库连接池
_unityContainer = unityContainer;
//_regionManager = regionManager;
//ConfigInfo.InitConfigParm(_unityContainer);
Global.STOVE_LAYERS = _unityContainer.Resolve<MemoryDataProvider>().AllStation.Find(x => x.Type == (int)EStationType.Stove).Layers;
}
private string _userName = "TEST12132";
public string UserName
{
get { return _userName; }
set { SetProperty<string>(ref _userName, value); }
}
private string _password = "123456";
public string Password
{
get { return _password; }
set { SetProperty<string>(ref _password, value); }
}
private string _errorMsg;
public string ErrorMsg
{
get { return _errorMsg; }
set { SetProperty<string>(ref _errorMsg, value); }
}
// 登录命令
public ICommand LoginCommand
{
get => new DelegateCommand<object>(OnLogin);
}
public static bool loginFlag = false;
private async void OnLogin(object obj)
{
string msg = "";
try
{
this.ErrorMsg = "" ;
if (string.IsNullOrEmpty(this.UserName))
{
this.ErrorMsg = "请输入用户名!";
return;
}
if (string.IsNullOrEmpty(this.Password))
{
this.ErrorMsg = "请输入密码!";
return;
}
var loginTask = Task.Run(() => _unityContainer.Resolve<UserService>().Login(this.UserName, this.Password, out msg));
var timeouttask = Task.Delay(8000);
var completedTask = await Task.WhenAny(loginTask, timeouttask);
if (completedTask == timeouttask)
{
this.ErrorMsg = "连接数据库超时,请联系管理员!";
}
else
{
var task = await loginTask;
if (task == true && !loginFlag)
{
loginFlag = true;
this.ErrorMsg = "登录成功 . . .";
(obj as Window).DialogResult = true;
}
else if (task == true && loginFlag)//切换用户
{
_unityContainer.Resolve<ICommonFun>().InitWindows();
(obj as Window).DialogResult = true;
(obj as Window).Close();
}
else
{
if (!string.IsNullOrEmpty(msg))
{
this.ErrorMsg = msg;
}
else if (!loginFlag)
{
this.ErrorMsg = "登录失败,用户名或密码错误. . .";
}
else
{
this.ErrorMsg = "切换用户失败,用户名或密码错误. . .";
}
}
}
}
catch (Exception ex)
{
this.ErrorMsg = "登录失败!" + ex.Message;
}
}
}
}