private static void AddCaseResultFormDefaultSections(AspergillosisContext context)
        {
            var caseReportFormSections = new CaseReportFormSection[]
            {
                new CaseReportFormSection {
                    Name = "Aspergillus Fumigatus Percip"
                },
                new CaseReportFormSection {
                    Name = "Beta Glucan"
                },
                new CaseReportFormSection {
                    Name = "Aspergillus Galactomannan ag"
                },
                new CaseReportFormSection {
                    Name = "Cryptococcal Antigen"
                },
                new CaseReportFormSection {
                    Name = "Expected Resistance Profile"
                }
            };

            foreach (var item in caseReportFormSections)
            {
                context.CaseReportFormSections.Add(item);
            }
        }
        public static void BuildSection(AspergillosisContext context,
                                        CaseReportFormSectionViewModel formSectionVM)
        {
            var formSection = new CaseReportFormSection()
            {
                Name = formSectionVM.Name
            };

            formSection.CaseReportFormResultFields = new List <CaseReportFormField>();
            foreach (var field in formSectionVM.Fields)
            {
                formSection.CaseReportFormResultFields.Add(field);
                context.CaseReportFormFields.Add(field);
                if (field.SelectedOptionsIds == null)
                {
                    continue;
                }
                foreach (var fieldOptionId in field.SelectedOptionsIds)
                {
                    var sectionOption = new CaseReportFormFieldOption();
                    sectionOption.CaseReportFormOptionChoiceId = fieldOptionId;
                    sectionOption.Field = field;
                    context.CaseReportFormFieldOptions.Add(sectionOption);
                }
            }
            context.CaseReportFormSections.Add(formSection);
        }
 public IActionResult EditFormSection(int?id,
                                      CaseReportFormSection section,
                                      CaseReportFormField[] fields)
 {
     section.CaseReportFormResultFields = fields;
     foreach (var field in section.CaseReportFormResultFields.OrderBy(f => f.ID))
     {
         var dbOptionsIds = _context.CaseReportFormFieldOptions.Where(fo => fo.CaseReportFormFieldId == field.ID).Select(fo => fo.CaseReportFormOptionChoiceId).ToList();
         var formIds      = new List <int>();
         if (field.SelectedOptionsIds != null)
         {
             formIds = field.SelectedOptionsIds.ToList();
         }
         var toDeleteOptions = dbOptionsIds.Except(formIds);
         var toInsertOptions = formIds.Except(dbOptionsIds);
         if (toDeleteOptions.Count() > 0)
         {
             var fieldOptions = _context.CaseReportFormFieldOptions.Where(fo => fo.CaseReportFormFieldId == field.ID &&
                                                                          toDeleteOptions.Contains(fo.CaseReportFormOptionChoiceId));
             _context.RemoveRange(fieldOptions);
         }
         if (toInsertOptions.Count() > 0)
         {
             foreach (var optionId in toInsertOptions)
             {
                 var fieldOption = new CaseReportFormFieldOption();
                 fieldOption.CaseReportFormFieldId        = field.ID;
                 fieldOption.CaseReportFormOptionChoiceId = optionId;
                 _context.Add(fieldOption);
             }
         }
     }
     if (ModelState.IsValid)
     {
         _context.Update(section);
         _context.SaveChanges();
         return(Json(new { valid = true }));
     }
     else
     {
         var errors = ModelStateHelper.Errors(ModelState);
         return(Json(new { errors = errors, valid = false }));
     }
 }