public async Task <ActionResult> PostScreenRequest_ADX(string code, [FromBody] dynamic requestBody, string type = "day", int start = 0, int end = 0)
        {
            JsonElement rootElement = requestBody;

            string name = rootElement.GetProperty("name").GetString();

            this.screenBLL = ScreenFactory.GetScreenFunction(name, this.s3_bucket_name, this.local_temp_folder);

            Dictionary <string, object> options = new Dictionary <string, object>();

            JsonElement el;

            if (rootElement.TryGetProperty("OFFSET", out el))
            {
                options.Add("OFFSET", el.GetDouble());
            }

            if (rootElement.TryGetProperty("DIRECTION", out el))
            {
                options.Add("DIRECTION", el.GetString());
            }

            List <ScreenResultEntity> matchedResult = new List <ScreenResultEntity>();

            try
            {
                matchedResult = await this.screenBLL.DoScreen(code.ToUpper(), type, start, end, options);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"error occurs {code} {type} {start} {end} \n {rootElement.GetRawText()} \n {ex.ToString()}");
            }

            return(Ok(matchedResult));
        }
        public static IScreenInterface GetScreenFunction(string name, string s3_bucket_name, string localFolder)
        {
            IScreenInterface screenObject = null;

            switch (name)
            {
            case "Screen_MACD_William":
                screenObject = new Screen_MACD_William(s3_bucket_name, localFolder);
                break;

            case "Screen_ADX":
                screenObject = new Screen_ADX(s3_bucket_name, localFolder);
                break;
            }

            return(screenObject);
        }