public IActionResult Detail(string id)
        {
            TextClassificationRepository repository = new TextClassificationRepository();
            ObjectId objectId = new ObjectId(id);
            var      result   = repository.FirstOrDefault(m => m.Id == objectId);

            if (result == null)
            {
                return(View(new TextClassificationResultDetail()));
            }

            TextClassificationResultDetail detail = new TextClassificationResultDetail()
            {
                Title   = result.Title,
                Content = result.Content,
                Ctime   = result.Ctime.ToLocalTime(),
            };

            if (result?.ResultItems != null)
            {
                foreach (var item in result.ResultItems)
                {
                    if (!string.IsNullOrEmpty(item?.VendorLabel) &&
                        item.VendorLabel.IsCaseInsensitiveEqual("A"))
                    {
                        detail.AResult = item.VendorResult;
                    }
                    if (!string.IsNullOrEmpty(item?.VendorLabel) &&
                        item.VendorLabel.IsCaseInsensitiveEqual("B"))
                    {
                        detail.BResult = item.VendorResult;
                    }
                    if (!string.IsNullOrEmpty(item?.VendorLabel) &&
                        item.VendorLabel.IsCaseInsensitiveEqual("C"))
                    {
                        detail.CResult = item.VendorResult;
                    }
                }
            }

            return(View(detail));
        }
        public IActionResult TextClassifications_Read([DataSourceRequest] DataSourceRequest request)
        {
            TextClassificationRepository repository = new TextClassificationRepository();

            IQueryable <TextClassificationResult> results = repository.Results;

            return(Json(results.ToDataSourceResult(request,
                                                   (item) =>
            {
                return new TextClassificationResultDto()
                {
                    Id = item.Id.ToString(),

                    Title = item.Title,

                    AResult = item.ResultItems.Any(m => m.VendorLabel.Equals(
                                                       "A", StringComparison.InvariantCultureIgnoreCase))
                            ? item.ResultItems.Single(m => m.VendorLabel.Equals(
                                                          "A", StringComparison.InvariantCultureIgnoreCase))
                              .VendorResult
                            : string.Empty,
                    BResult = item.ResultItems.Any(m => m.VendorLabel.Equals(
                                                       "B", StringComparison.InvariantCultureIgnoreCase))
                            ? item.ResultItems.Single(m => m.VendorLabel.Equals(
                                                          "B", StringComparison.InvariantCultureIgnoreCase))
                              .VendorResult
                            : string.Empty,
                    CResult = item.ResultItems.Any(m => m.VendorLabel.Equals(
                                                       "C", StringComparison.InvariantCultureIgnoreCase))
                            ? item.ResultItems.Single(m => m.VendorLabel.Equals(
                                                          "C", StringComparison.InvariantCultureIgnoreCase))
                              .VendorResult
                            : string.Empty,
                    Ctime = item.Ctime
                };
            })));
        }
        public IActionResult AddNew(TextClassificationModel model)
        {
            if (model != null && ModelState.IsValid)
            {
                TextClassificationRepository repository
                    = new TextClassificationRepository();

                List <TextClassificationResultItem> resultItems
                    = new List <TextClassificationResultItem>();

                Task task1 = Task.Run(() =>
                {
                    try
                    {
                        Task <TextClassificationResultItem> taskA = this.GetItemAResult(model);
                        taskA.Wait();
                        TextClassificationResultItem itemA = taskA.Result;
                        if (itemA != null)
                        {
                            resultItems.Add(itemA);
                        }
                    }
                    catch (Exception ex1)
                    {
                        System.Diagnostics.Trace.WriteLine("GetA: " + ex1.Message + "," + ex1.StackTrace);
                    }
                });
                Task task2 = Task.Run(() =>
                {
                    try
                    {
                        Task <TextClassificationResultItem> taskB = this.GetItemBResult(model);
                        taskB.Wait();
                        TextClassificationResultItem itemB = taskB.Result;
                        if (itemB != null)
                        {
                            resultItems.Add(itemB);
                        }
                    }
                    catch (Exception ex1)
                    {
                        System.Diagnostics.Trace.WriteLine("GetB: " + ex1.Message + "," + ex1.StackTrace);
                    }
                });

                Task task3 = Task.Run(() =>
                {
                    try
                    {
                        Task <TextClassificationResultItem> taskC = this.GetItemCResult(model);
                        taskC.Wait();
                        TextClassificationResultItem itemC = taskC.Result;
                        if (itemC != null)
                        {
                            resultItems.Add(itemC);
                        }
                    }
                    catch (Exception ex1)
                    {
                        System.Diagnostics.Trace.WriteLine("GetC: " + ex1.Message + "," + ex1.StackTrace);
                    }
                });
                Task.WaitAll(task1, task2, task3);

                TextClassificationResult newResult = new TextClassificationResult()
                {
                    Ctime       = DateTime.Now,
                    Title       = model.Title,
                    Content     = model.Content,
                    ResultItems = resultItems
                };

                repository.Add(newResult);

                return(RedirectToAction("TextClassification", "Home"));
            }

            return(View("AddNew", model));
        }