public ChecklistResultModel SaveChecklistResultModel(ChecklistResultModel item)
 {
     var newId = Tools.Web.ShortGuid.CreateGuid();
     item.Id = newId;
     var resultCollection = mChecklistDb.GetCollection<ChecklistResultModel>("results");
     resultCollection.InsertOne(item);
     return item;
 }
 /**
 Runs some Asserts to check whether demoData is equal to result.
 **/
 public static void AssertElementsAreEqual(ChecklistResultModel demoData, ChecklistResultModel result)
 {
     Assert.Equal(demoData.Id, result.Id);
     Assert.Equal(demoData.TemplateId, result.TemplateId);
     Assert.Equal(demoData.UserId, result.UserId);
     Assert.Equal(RemoveMilliseconds(demoData.CreationTime), RemoveMilliseconds(result.CreationTime));
     Assert.NotNull(demoData.Results);
     Assert.NotNull(result.Results);
     if (demoData.Results != null && result.Results != null)
     {
         Assert.Equal(demoData.Results.Count, result.Results.Count);
         if (demoData.Results.Count == result.Results.Count)
         {
             for (int i = 0; i < demoData.Results.Count; ++i)
             {
                 var demoItem = demoData.Results[i];
                 var resultItem = demoData.Results[i];
                 Assert.Equal(demoItem.Result, resultItem.Result);
                 Assert.Equal(demoItem.TemplateItemId, resultItem.TemplateItemId);
             }
         }
     }
 }
        /**
        Constructs a ChecklistResultViewModel from a ChecklistResultModel.
        result.Template is required to be set for this to succeed.

        The item tree hierarchy is constructed from the template and the corresponding
        result to each ChecklistItem is found in result.Items by matchin ChecklistResultItem.TemplateItemId
        with the ChecklistItem.Id.
        **/
        public static ChecklistResultViewModel FromResult(ChecklistResultModel result)
        {
            return new ChecklistResultViewModel()
            {
                Model = result,
                Items = ConnectResultItems(result.Template.Items, result.Results).ToList()
            };
        }
 public IActionResult Result(ChecklistResultModel item)
 {
     item.CreationTime = DateTime.Now;
     ChecklistResultModel result = mChecklistRepository.SaveChecklistResultModel(item);
     return Json(result);
     // FIXME: This does not use a RESTful url such as /c/result/1234, but instead
     // redirects to /c/result?id=1234
     //return RedirectToAction("Result", new { id = id });
 }