Thứ Hai, 9 tháng 10, 2017

Thứ Hai, 2 tháng 10, 2017

NCalc Custom Functions

        static void Main(string[] argsx)
        {
            Expression e = new Expression("if (And(NOT(ISBLANK(ReceivedDate)), ReceivedDate >= Date(2017,01,01), ReceivedDate <= Date(2018,12,31)), Total * 0.1, Total * VAT)");

            e.Parameters["ReceivedDate"] = DateTime.Parse("2018/01/01");
            e.Parameters["VAT"] = (decimal)12 / 100;
            e.Parameters["Total"] = 1000;

            e.EvaluateFunction += delegate (string name, FunctionArgs args)
            {
                var operatorName = name.ToUpper();
                if (operatorName == "DATE")
                {
                    args.Result = new DateTime((int)args.Parameters[0].Evaluate(), (int)args.Parameters[1].Evaluate(), (int)args.Parameters[2].Evaluate());
                }
                if (operatorName == "AND")
                {
                    args.Result = args.Parameters.All(x => (bool)x.Evaluate());
                }
                if (operatorName == "ISBLANK")
                {
                    var temp = args.Parameters[0].Evaluate();
                    args.Result = temp == null || string.IsNullOrWhiteSpace(temp.ToString());
                }
                if (operatorName == "NOT")
                {
                    args.Result = !(bool)args.Parameters[0].Evaluate();
                }
            };

            var rs = e.Evaluate();
        }

Thứ Ba, 12 tháng 9, 2017

Authenticate Bearer Token Manually

var authManager = HttpContext.Current.GetOwinContext().Authentication;
var authRs = authManager.AuthenticateAsync("Bearer").Result;

Thứ Ba, 18 tháng 7, 2017

Decimal - Remove Trailing Zeros

public static decimal RemoveTrailingZeros(this decimal d)
{
 return d / 1.0000000000000000000000000000M;
}

public static string ToStringIgnoreTrailingZeros(this decimal d)
{
 return d.ToString("#,##0.############################");
}