public async Task <IActionResult> Create(CaseReportFormOptionGroupViewModel optionGroupVM) { try { if (ModelState.IsValid) { var optionGroup = new CaseReportFormOptionGroup(); optionGroup.Name = optionGroupVM.Name; optionGroup.Choices = new List <CaseReportFormOptionChoice>(); foreach (string choiceName in optionGroupVM.Options) { var optionChoice = new CaseReportFormOptionChoice(); optionChoice.Name = choiceName; optionChoice.CaseReportFormOptionGroup = optionGroup; optionGroup.Choices.Add(optionChoice); } _context.Add(optionGroup); await _context.SaveChangesAsync(); return(Json(new { result = "ok" })); } else { Hashtable errors = ModelStateHelper.Errors(ModelState); return(Json(new { success = false, errors })); } } catch (DbUpdateException) { return(null); } }
private static void AddCaseResultFormDefaultOptionDropdowns(AspergillosisContext context) { var caseReportFormOptionGroups = new CaseReportFormOptionGroup[] { new CaseReportFormOptionGroup { Name = "Specimen" }, new CaseReportFormOptionGroup { Name = "Serology Result" } }; foreach (var item in caseReportFormOptionGroups) { context.Add(item); } var caseReportFormSerologyOptionChoices = new String[] { "Positive", "Weakly Positive", "Negative" }; var caseReportFormSpecimenOptionChoices = new String[] { "Blood", "Sputum", "Fungal isolate" }; var serologyOptionGroup = caseReportFormOptionGroups .Where(crfog => crfog.Name.Contains("Serology Result")) .FirstOrDefault(); foreach (string serologyOptName in caseReportFormSerologyOptionChoices) { CaseReportFormOptionChoice serologyOpt = new CaseReportFormOptionChoice(); serologyOpt.CaseReportFormOptionGroup = serologyOptionGroup; serologyOpt.Name = serologyOptName; context.CaseReportFormOptionChoices.Add(serologyOpt); } var specimenOptionGroup = caseReportFormOptionGroups .Where(crfog => crfog.Name.Contains("Specimen")) .FirstOrDefault(); foreach (string serologyOptName in caseReportFormSpecimenOptionChoices) { CaseReportFormOptionChoice serologyOpt = new CaseReportFormOptionChoice(); serologyOpt.CaseReportFormOptionGroup = specimenOptionGroup; serologyOpt.Name = serologyOptName; context.CaseReportFormOptionChoices.Add(serologyOpt); } }
public IActionResult EditOptionGroupItem(int?id, CaseReportFormOptionGroupViewModel optionGroup) { if (id == null) { return(NotFound()); } var foundItem = _context.CaseReportFormOptionGroups .Include(crfog => crfog.Choices) .Where(crfc => crfc.ID == id) .FirstOrDefault(); if (foundItem == null) { return(NotFound()); } var optionsNames = optionGroup.Options; var dbOptionsChoices = foundItem.Choices.Select(c => c.Name).ToList(); var dbOptionsItems = foundItem.Choices.ToList(); var toDeleteOptions = dbOptionsChoices.Except(optionsNames); var toInsertOptions = optionsNames.Except(dbOptionsChoices); if (toDeleteOptions.Count() > 0) { var dbDeleteList = _context.CaseReportFormOptionChoices .Where(crfoc => toDeleteOptions.Contains(crfoc.Name) && crfoc.CaseReportFormOptionGroupId == id); _context.CaseReportFormOptionChoices.RemoveRange(dbDeleteList); } if (toInsertOptions.Count() > 0) { foreach (var optionName in toInsertOptions) { var option = new CaseReportFormOptionChoice() { CaseReportFormOptionGroupId = id.Value, Name = optionName }; _context.CaseReportFormOptionChoices.Add(option); } } foundItem.Name = optionGroup.Name; if (TryValidateModel(foundItem)) { try { _context.Update(foundItem); _context.SaveChanges(); } catch (DbUpdateException /* ex */) { ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists, " + "see your system administrator."); } } else { Hashtable errors = ModelStateHelper.Errors(ModelState); return(Json(new { success = false, errors })); } return(Json(new { result = "ok" })); }