Files
MyMcKesson/TomcatServer/Pluto.MSL.Api/API.cs
2016-07-27 00:32:34 -04:00

238 lines
8.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Pluto.Api;
namespace Pluto.MSL.Api
{
public class API
{
#region Construction
private static HiddenMainForm _hiddenFrm = null;
static API()
{
_hiddenFrm = new HiddenMainForm();
_hiddenFrm.Opacity = 0;
_hiddenFrm.Show();
_hiddenFrm.Visible = false;
}
#endregion
#region Change Network Settings
/// <summary>
/// Use this function to change the URL and port for the client to use when
/// communicating (affects entire API)
/// </summary>
/// <param name="url"></param>
/// <param name="port"></param>
public static void SetNetworkSettings(string url, uint port)
{
bool bChangeOccured = false;
if (!String.IsNullOrEmpty(url) && String.Compare(_hiddenFrm.ClientChannel.Hostname, url, true) != 0)
{
bChangeOccured = true;
_hiddenFrm.ClientChannel.Hostname = url;
}
if (port > 0 && _hiddenFrm.ClientChannel.Port != (int)port)
{
bChangeOccured = true;
_hiddenFrm.ClientChannel.Port = (int)port;
}
if (bChangeOccured)
{
_hiddenFrm.ClientChannel.TargetUrl = String.Format("tcp://{0}:{1}/bin", _hiddenFrm.ClientChannel.Hostname, _hiddenFrm.ClientChannel.Port);
}
}
#endregion
#region IMSLMobileConnect
/// <summary>
/// Called by Lytec/Medisoft when the mobile About Dialog is called to retrieve the UserApiKey and Pin
/// </summary>
/// <param name="SharedConnectionDataSource"></param>
/// <param name="PracticeName"></param>
/// <param name="UserApiKey"></param>
/// <param name="UserPin"></param>
/// <returns></returns>
public static bool MobileAboutDialog_GotCalled(string SharedConnectionDataSource, string RegisteredName, string PracticeName, string DataBaseNameOrDataSetName, out string UserApiKey, out string UserPin)
{
UserApiKey = String.Empty;
UserPin = String.Empty;
if (!String.IsNullOrEmpty(SharedConnectionDataSource) && !String.IsNullOrEmpty(PracticeName))
{
ApiKeyNPin key = _hiddenFrm.fMSLSpecific.MobileAboutDialogCalled(SharedConnectionDataSource, RegisteredName, PracticeName, DataBaseNameOrDataSetName);
if (key == null)
return false;
UserApiKey = key.UserApiKey;
UserPin = key.UserPin;
return true;
}
return false;
}
/// <summary>
/// Called by Lytec/Medisoft once product setup is complete (product is registered and
/// connected to a database), but before the user logs in. This will setup the Mobile service
/// on the server.
/// </summary>
/// <param name="string SharedConnectionDataSource"></param>
/// <returns></returns>
public static bool ProductSetupCompleted_PriorUserLogin(string SharedConnectionDataSource, string RegisteredName)
{
if (!String.IsNullOrEmpty(SharedConnectionDataSource))
{
bool bResult = _hiddenFrm.fMSLSpecific.ProductSetupCompleted(SharedConnectionDataSource, RegisteredName);
return bResult;
}
return false;
}
/// <summary>
/// Called by Lytec/Medisoft after a Practice Name Change occurred on their end to let
/// the Mobile solution know and update it's information
/// </summary>
/// <param name="SharedConnectionDataSource"></param>
/// <param name="NewPracticeName"></param>
/// <returns></returns>
public static bool PracticeName_ChangeOccured(string SharedConnectionDataSource, string NewPracticeName, string DataBaseNameOrDataSetName)
{
if (!String.IsNullOrEmpty(SharedConnectionDataSource) && !String.IsNullOrEmpty(NewPracticeName))
{
bool bResult = _hiddenFrm.fMSLSpecific.PracticeNameChangeOccured(SharedConnectionDataSource, NewPracticeName, DataBaseNameOrDataSetName);
return bResult;
}
return false;
}
/// <summary>
/// Is the Server Reachable from the internet? if not, show error icon or give message
/// </summary>
/// <param name="SharedConnectionDataSource"></param>
/// <returns></returns>
public static bool IsServerReachableFromTheInternet(string SharedConnectionDataSource)
{
if (!String.IsNullOrEmpty(SharedConnectionDataSource))
{
bool bResult = _hiddenFrm.fMSLSpecific.IsServerReachableFromTheInternet(SharedConnectionDataSource);
return bResult;
}
return false;
}
#endregion
#region Pluto AddOns
/// <summary>
/// Try to update the Service, if needed
/// </summary>
public static void UpdateServiceIfNeeded()
{
_hiddenFrm.fMSLSpecific.UpdateServiceIfNeeded();
}
/// <summary>
/// Check if service isd out of date
/// </summary>
/// <returns></returns>
public static bool IsAPIOutOfDate()
{
return _hiddenFrm.fAuthentication.IsAPIOutOfDate();
}
/// <summary>
/// Retrieve the API version of the service
/// </summary>
/// <returns></returns>
public static string GetAPIVersion()
{
return _hiddenFrm.fAuthentication.GetAPIVersion();
}
/// <summary>
/// Retrieve the Pluto Service's HOST GUID
/// </summary>
/// <returns></returns>
public static string GetHostGUID()
{
return _hiddenFrm.fMSLSpecific.GetHostSpecGUID();
}
/// <summary>
/// Retrieve Pluto Service's External Port
/// </summary>
/// <returns></returns>
public static int GetExternalPort()
{
return _hiddenFrm.fMSLSpecific.GetExternalPort();
}
/// <summary>
/// Retrieve Pluto Service's External IP
/// </summary>
/// <returns></returns>
public static string GetExternalIP()
{
return _hiddenFrm.fMSLSpecific.GetExternalIP();
}
/// <summary>
/// Retrieve Pluto Service's Local IP
/// </summary>
/// <returns></returns>
public static string GetLocalIP()
{
return _hiddenFrm.fMSLSpecific.GetLocalIP();
}
/// <summary>
/// Generate all user api keys for all connections
/// </summary>
public static void GenerateApiKeysForPracticesInLoadedSharedCredentials()
{
_hiddenFrm.fMSLSpecific.GenerateApiKeysForPracticesInLoadedSharedCredentials();
}
/// <summary>
/// Add a Shared Credential to the Store
/// </summary>
/// <param name="credential"></param>
/// <returns></returns>
public static bool AddSharedCredential(ApiKeyNCredential credential)
{
return _hiddenFrm.fMSLSpecific.AddSharedCredential(credential);
}
/// <summary>
/// Rerieve all loaded Credentials
/// </summary>
/// <returns></returns>
public static ApiKeyNCredential[] GetLoadedCredentials()
{
return _hiddenFrm.fMSLSpecific.GetLoadedCredentials();
}
#endregion
#region Pluto
/// <summary>
/// Post Billing
/// </summary>
public static bool PostBilling(string SystemApiKey, BillingPost1 billingPost)
{
return _hiddenFrm.fBilling.PostBilling(SystemApiKey, String.Empty, billingPost);
}
#endregion
}
}