using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Variables;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PTMedicalInsurance.Common
{
class ExpressionEvaluator
{
///
/// 将long转为yyyy-MM-dd
///
///
///
public static string LongToDate(object timestamp)
{
string strValue = timestamp?.ToString();
DateTime dateTime = DateTimeOffset.FromUnixTimeMilliseconds(long.Parse(strValue)).DateTime;
return dateTime.ToString("yyyy-MM-dd");
}
///
/// 标准化为yyyy-MM-dd
///
///
///
public static string ShortDate(object dateTime)
{
string strValue = (dateTime??"").ToString();
if (!strValue.Contains("-") && strValue.Length > 8)
{
return strValue.Substring(0, 4) + "-" + strValue.Substring(4,2) + "-"+strValue.Substring(6,2);
}
return strValue.Length > 10 ? strValue.Substring(0, 10) : strValue;
}
///
/// 保存到扩展节点
///
///
///
public static void SaveToExpand(string key,object value)
{
if (key == null) return;
Utils.ExpandData(key, value);
}
///
/// 获取全局变量
///
///
///
public static string GlobaVariables(object value)
{
string key = value?.ToString();
if (key!=null && key.StartsWith("Global_"))
{
string varKey = key.Replace("Global_","");
switch (varKey)
{
case "mdtrtid":
return Global.pat.mdtrtID;
case "gender":
return Global.pat.gend;
case "name":
return Global.pat.name;
case "psn":
return Global.pat.psn_no;
case "birthday":
return Global.pat.brdy;
case "age":
return Global.pat.age;
case "insutype":
return Global.pat.insuType;
case "medtype":
return Global.pat.medType;
case "clearway":
return Global.Set.clearingWay;
case "insuplc":
return Utils.GetInsuCode();
case "mdtrtarea":
return Global.pat.mdtrtarea_admvs;
case "ectoken":
return Global.pat.ecToken;
default:
return string.Empty;
}
}
return string.Empty;
}
///
/// 动态表达式
///
///
///
///
public object Run(string data, string expression)
{
//var options = ScriptOptions.Default
// .AddReferences(typeof(string).Assembly)
// .AddImports("System");
//try
//{
// return CSharpScript.EvaluateAsync(expression, options, person).Result;
//}
//catch (CompilationErrorException e)
//{
// throw new InvalidOperationException("Compilation error: " + e.Diagnostics, e);
//}
return null;
}
}
}