public static CaseReportFormViewModel BuildViewModel(CaseReportForm caseReportForm) { var viewModel = new CaseReportFormViewModel(); viewModel.Name = caseReportForm.Name; viewModel.CaseReportFormCategoryId = caseReportForm.CaseReportFormCategoryId; viewModel.CategoryName = caseReportForm.CaseReportFormCategory.Name; viewModel.FieldsNames = caseReportForm.Fields.Select(f => f.Label).ToList(); viewModel.Fields = caseReportForm.Fields.ToList(); viewModel.Sections = caseReportForm.Sections.ToList(); viewModel.IsLocked = caseReportForm.IsLocked ? "<label class='label label-danger'>YES</label>" : "<label class='label label-success'>NO</label>"; return(viewModel); }
public IActionResult EditForm(int?id, CaseReportForm caseReportForm, CaseReportFormField[] fields) { caseReportForm.Fields = fields; foreach (var field in caseReportForm.Fields.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(caseReportForm); _context.SaveChanges(); return(Json(new { valid = true })); } else { var errors = ModelStateHelper.Errors(ModelState); return(Json(new { errors = errors, valid = false })); } }
private void BuildFormWithSections(CaseReportFormViewModel caseReportFormViewModel, out CaseReportForm caseReportForm, out List <CaseReportFormFormSection> sections) { caseReportForm = new CaseReportForm(); sections = new List <CaseReportFormFormSection>(); caseReportForm.Fields = new List <CaseReportFormField>(); if (caseReportFormViewModel.SectionsIds != null) { foreach (var sectionId in caseReportFormViewModel.SectionsIds) { var section = _context.CaseReportFormSections .Where(s => s.ID == sectionId) .SingleOrDefault(); var formSection = new CaseReportFormFormSection(); formSection.CaseReportFormSectionId = sectionId; sections.Add(formSection); } } if (caseReportFormViewModel.Fields != null) { foreach (var field in caseReportFormViewModel.Fields) { 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); } } } caseReportForm.Name = caseReportFormViewModel.Name; caseReportForm.CaseReportFormCategoryId = caseReportFormViewModel.CaseReportFormCategoryId; caseReportForm.Fields = caseReportFormViewModel.Fields; caseReportForm.Sections = sections; }