|
@@ -1,7 +1,5 @@
|
|
|
using FISLib.Connect;
|
|
|
-using System;
|
|
|
using System.Linq;
|
|
|
-using System.Threading.Tasks;
|
|
|
using Vinno.FIS.Sonopost.Features.Config;
|
|
|
using Vinno.FIS.Sonopost.WebApi.Models;
|
|
|
using Vinno.IUS.Common.Utilities;
|
|
@@ -25,7 +23,7 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
|
|
|
if (!changed) Result.Fail();
|
|
|
}
|
|
|
var isLoginWithAccountAndPassword = SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword;
|
|
|
- var hospitalName = request.HospitalName.Trim();
|
|
|
+ var hospitalName = request.HospitalName?.Trim();
|
|
|
if (string.IsNullOrWhiteSpace(hospitalName))
|
|
|
{
|
|
|
hospitalName = null;
|
|
@@ -202,6 +200,36 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
|
|
|
return Result.Success(new VCloudLoginRequest { IsLoginWithAccountAndPassword = currentMode });
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 切换已登录的云服务器
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [WebApiAction]
|
|
|
+ public Result SwtichLoginServer(ServerNodeRequest serverNodeRequest)
|
|
|
+ {
|
|
|
+ if (LoginManager.LoginStatus == DeviceStatus.Logon)
|
|
|
+ {
|
|
|
+ if (!LoginManager.Logoff())
|
|
|
+ {
|
|
|
+ return Result.Fail($"LogOffError");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (serverNodeRequest == null)
|
|
|
+ {
|
|
|
+ return Result.Fail($"Server Info is Null");
|
|
|
+ }
|
|
|
+ if (SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword)
|
|
|
+ {
|
|
|
+ SonopostUserDefinedSettings.Instance.ServerSetting.IsLoginWithAccountAndPassword = false;
|
|
|
+ ConfigManager.Save();
|
|
|
+ }
|
|
|
+ return Login(new ServerLoginRequest2
|
|
|
+ {
|
|
|
+ Ipv4 = serverNodeRequest.Ipv4,
|
|
|
+ Port = serverNodeRequest.Port,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
#region Private Methods
|
|
|
|
|
|
private void UpdateAccount(string name, string password)
|
|
@@ -212,40 +240,6 @@ namespace Vinno.FIS.Sonopost.WebApi.Controllers
|
|
|
ConfigManager.Save();
|
|
|
}
|
|
|
|
|
|
- private async Task<(bool Success, string Code)> TryLogin(string organizationName = null, int timeout = 3000)
|
|
|
- {
|
|
|
- string code = null;
|
|
|
- await Task.Run(() =>
|
|
|
- {
|
|
|
- bool waiting = true;
|
|
|
- DateTime startTime = DateTime.Now;
|
|
|
- EventHandler<DeviceStatus> eventHandler = (object sender, DeviceStatus e) =>
|
|
|
- {
|
|
|
- if (e != DeviceStatus.Logoning)
|
|
|
- {
|
|
|
- waiting = false;
|
|
|
- }
|
|
|
- };
|
|
|
- TerminalClientManager.LoginStatusChanged += eventHandler;
|
|
|
- LoginManager.Login(organizationName);
|
|
|
- while (waiting)
|
|
|
- {
|
|
|
- if (DateTime.Now.AddMilliseconds(-timeout) > startTime)
|
|
|
- {
|
|
|
- waiting = false;
|
|
|
- code = "Timeout";
|
|
|
- }
|
|
|
- }
|
|
|
- TerminalClientManager.LoginStatusChanged -= eventHandler;
|
|
|
- });
|
|
|
- bool logged = LoginManager.LoginStatus == DeviceStatus.Logon;
|
|
|
- if (!logged && code == null)
|
|
|
- {
|
|
|
- code = Enum.GetName(typeof(DeviceStatus), LoginManager.LoginStatus);
|
|
|
- }
|
|
|
- return (logged, code);
|
|
|
- }
|
|
|
-
|
|
|
#endregion Private Methods
|
|
|
}
|
|
|
}
|