public async Task <IActionResult> NaturalLanguageClassifier([FromBody] JObject request) { var watch = System.Diagnostics.Stopwatch.StartNew(); string methodName = "NaturalLanguageClassifier"; ResponseDTO response = new ResponseDTO(); try { Log.Write(appSettings, LogEnum.DEBUG.ToString(), label, className, methodName, $"REQUEST: {JsonConvert.SerializeObject(request)}"); NaturalLanguageClassifierRequest requestBody = request.ToObject <NaturalLanguageClassifierRequest>(); switch (requestBody.Method.ToLower()) { case "classify": response.Result = await Task.Run(() => NaturalLanguageClassifierService.NaturalLanguageClassifier(appSettings, requestBody)); break; case "list": response.Result = await Task.Run(() => NaturalLanguageClassifierService.NaturalLanguageClassifierList(appSettings, requestBody)); break; case "detail": response.Result = await Task.Run(() => NaturalLanguageClassifierService.NaturalLanguageClassifierDetail(appSettings, requestBody)); break; case "delete": response.Result = await Task.Run(() => NaturalLanguageClassifierService.NaturalLanguageClassifierDelete(appSettings, requestBody)); break; default: break; } response.Success = true; watch.Stop(); Log.Write(appSettings, LogEnum.DEBUG.ToString(), label, className, methodName, $"RESULT: {JsonConvert.SerializeObject(response)} Execution Time: {watch.ElapsedMilliseconds} ms"); return(Ok(response)); } catch (Exception e) { response.Success = false; response.Msg = e.Message; watch.Stop(); Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {JsonConvert.SerializeObject(request)}"); Log.Write(appSettings, LogEnum.ERROR.ToString(), label, className, methodName, $"ERROR: {e.Source + Environment.NewLine + e.Message + Environment.NewLine + e.StackTrace}"); return(BadRequest(response)); } }