private void UpdateSingleItemOptionChoices(CaseReportFormPatientResult singleItemResult, CaseReportFormPatientResult dbItemResult) { var dbOptionChoicesIds = dbItemResult.Options .Select(o => o.CaseReportFormOptionChoiceId.ToString()) .ToList(); var formOptionChoicesIds = new List <string>(); if (singleItemResult.SelectedId != null && singleItemResult.SelectedIds != null) { return; } if (singleItemResult.SelectedId != null) { formOptionChoicesIds.Add(singleItemResult.SelectedId.ToString()); } if (singleItemResult.SelectedIds != null) { var selectedIds = singleItemResult.SelectedIds.Select(i => i.ToString()).ToList(); formOptionChoicesIds.AddRange(selectedIds); } var toDeleteOptionIds = dbOptionChoicesIds.Except(formOptionChoicesIds); var toInsertOptionIds = formOptionChoicesIds.Except(dbOptionChoicesIds); if (toDeleteOptionIds.Count() > 0) { var toDelOptions = _context.CaseReportFormPatientResultOptionChoices .Where(o => toDeleteOptionIds.Contains(o.CaseReportFormOptionChoiceId.ToString()) && o.CaseReportFormPatientResultId == dbItemResult.ID); if (toDelOptions != null) { _context.CaseReportFormPatientResultOptionChoices.RemoveRange(toDelOptions); _context.Entry(dbItemResult).State = EntityState.Modified; } } if (toInsertOptionIds.Count() > 0) { foreach (string id in toInsertOptionIds) { var optionChoice = CreateOptionChoiceForResult(_context, Int32.Parse(id)); optionChoice.CaseReportFormPatientResultId = dbItemResult.ID; dbItemResult.Options.Add(optionChoice); _context.CaseReportFormPatientResultOptionChoices.Add(optionChoice); _context.Entry(dbItemResult).State = EntityState.Modified; } } }
private void UpdateItemResultInDatabase(Patient patientToUpdate, CaseReportFormResult caseReportFormResult, CaseReportFormPatientResult formSingleItemResult) { var dbItemResult = _context.CaseReportFormPatientResults .Where(pr => pr.PatientId == patientToUpdate.ID && pr.CaseReportFormFieldId == formSingleItemResult.CaseReportFormFieldId && pr.CaseReportFormId == caseReportFormResult.CaseReportFormId && pr.CaseReportFormResultId == caseReportFormResult.ID) .FirstOrDefault(); if (dbItemResult != null) { UpdateSingleDbItem(caseReportFormResult, formSingleItemResult, dbItemResult); } }
private void UpdateSingleDbItem(CaseReportFormResult caseReportFormResult, CaseReportFormPatientResult updatedResult, CaseReportFormPatientResult existingDbItemResult) { existingDbItemResult.CaseReportFormFieldId = updatedResult.CaseReportFormFieldId; existingDbItemResult.CaseReportFormResultId = caseReportFormResult.ID; existingDbItemResult.NumericAnswer = updatedResult.NumericAnswer; existingDbItemResult.TextAnswer = updatedResult.TextAnswer; existingDbItemResult.SelectedId = updatedResult.SelectedId; existingDbItemResult.SelectedIds = updatedResult.SelectedIds; existingDbItemResult.DateAnswer = updatedResult.DateAnswer; _context.Entry(existingDbItemResult).Collection(c => c.Options).Load(); UpdateSingleItemOptionChoices(updatedResult, existingDbItemResult); _context.Update(existingDbItemResult); LockForm(updatedResult.CaseReportFormId); }