using apiwrappercli;
using Serilog;
using SPTrader.Common;
using SPTrader.Views;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Text;
using System.Windows;
namespace SPTrader.BusinessLayer
{
public sealed class SPWebNavigator
{
private SPApiProxyWrapper apiProxy;
private static readonly Lazy<SPWebNavigator> lazy = new Lazy<SPWebNavigator>(() => new SPWebNavigator());
public static SPWebNavigator Instance { get { return lazy.Value; } }
private string host_domain { get; set; }
private string host { get; set; }
private string host_best { get; set; }
private int port { get; set; }
private string system_id { get; set; }
private int group { get; set; }
private int lang { get; set; }
private string ver { get; set; }
private string rel { get; set; }
private string key { get; set; }
private string sso_token { get; set; }
private long sso_time { get; set; }
private string ae_id { get; set; }
private string user_id { get; set; }
private string acc_no { get; set; }
private int app_id { get; set; }
private double app_rel { get; set; }
private int app_ver { get; set; }
private string md5 { get; set; }
private long time { get; set; }
private SPWebNavigator()
{
apiProxy = SPCLI.Instance.ApiProxyWrapper;
var conn_info = apiProxy.CoreService.GetConnectedServerHost(SPDataType.HOST_TC);
host = conn_info.Host;
host_best = Profiler.Instance.BestURL;
lang = (int) apiProxy.GetLanguageId();
ver = "1";
rel = "8.78";
time = CommonUtil.ToEpochTime(DateTime.Now);
key = "";
system_id = AppConstants.SP_FUTURES;
sso_token = apiProxy.TradeContext.GetServerSsoToken();
sso_time = apiProxy.TradeContext.GetServerAccountLoginTime();
user_id = apiProxy.TradeContext.GetUserId();
acc_no = apiProxy.TradeContext.GetAccNo();
}
public void OpenProcessUrl(string url)
{
try
{
Process.Start(url);
}
catch
{
// hack because of this: https://github.com/dotnet/corefx/issues/10361
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
url = url.Replace("&", "^&");
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Process.Start("xdg-open", url);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Process.Start("open", url);
}
else
{
throw;
}
}
}
public void OpenBrowserUrl(string url, string title)
{
var win = new SPWebBrowser();
win.Title = title;
win.ShowInTaskbar = false;
win.Owner = Application.Current.MainWindow;
win.Navigate(url);
win.Show();
}
public void NavigateJavaScriptInterOpTest()
{
string url = JSWebCommon.GetWebPagePath("CSWebSampleInterop.html");
OpenBrowserUrl(url, "HTML/JavaScript InterOp Test");
}
public void NavigateOrderLog()
{
port = 8000;
string url = string.Format($"https://{host}:{port}/sptrader/user_order_log.php?lang={lang}&ver=" +
$"{ver}&rel={rel}&time={time}&key=&system_id={system_id}&sso_token=&sso_time=" +
$"&user_id={user_id}&acc_no={acc_no}");
string tit = LanguageSetting.GetLanguageValue("ACCINFO_ORDERLOG");
OpenBrowserUrl(url, tit);
}
public void NavigateCustomerService()
{
host = "uat1.spsystem.info";
port = 9030;
string url = string.Format($"http://{host}:{port}/sptraderadmin/jumper.html?lang={lang}&ver=" +
$"{ver}&rel={rel}&time={time}&key=&system_id={system_id}&sso_token={sso_token}&sso_time={sso_time}" +
$"&user_id={user_id}");
string tit = LanguageSetting.GetLanguageValue("ACCINFO_CUSTOMERSERVICE");
OpenBrowserUrl(url, tit);
}
public void NavigateProductDesc(string mkt, string inst, string prod)
{
string url = string.Format($"{host_best}/spinfo_old/prdt.php?lang={lang}&" +
$"&market_code={mkt}&instmnt_code={inst}& prod_code={prod}");
string tit = LanguageSetting.GetLanguageValue("PRICEMENU_PRODUCTDESC");
tit = string.Format($"{tit} - {prod}");
OpenBrowserUrl(url, tit);
}
public void NavigateUserManual()
{
string url = string.Format($"{host_best}/sphelp/content.php?lang={lang}");
string tit = LanguageSetting.GetLanguageValue("SINGLEWIN_HELP");
OpenBrowserUrl(url, tit);
}
public void NavigateUserManual(string helpid)
{
string url = string.Format($"{host_best}/sphelp/post.php?lang={lang}&help={helpid}");
string tit = LanguageSetting.GetLanguageValue("SINGLEWIN_HELP");
OpenBrowserUrl(url, tit);
}
public void NavigateWhatsNew()
{
string url = string.Format($"{host_best}/sphelp/post.php?lang={lang}&help=whatsnew#whatsnew");
string tit = LanguageSetting.GetLanguageValue("SINGLEWIN_HELP");
OpenBrowserUrl(url, tit);
}
public void NavigateELearning()
{
string url = string.Format($"{host_best}/helpManual/teach1.html?langid={lang}");
string tit = LanguageSetting.GetLanguageValue("SINGLEWIN_TEACHINF");
OpenBrowserUrl(url, tit);
}
}
}