public void LogicalCascadeDeleteChildren(FormResponseProperties formResponseProperties) { if (formResponseProperties.RecStatus != RecordStatus.Deleted) { formResponseProperties.RecStatus = RecordStatus.Deleted; CascadeThroughChildren(formResponseProperties, frp => frp.RecStatus = RecordStatus.Deleted); } }
public ChildResponseContext(FormResponseProperties formResponseProperties) { FormId = formResponseProperties.FormId; FormName = formResponseProperties.FormName; ParentFormId = formResponseProperties.ParentFormId; ParentFormName = formResponseProperties.ParentFormName; ParentResponseId = formResponseProperties.ParentResponseId; RecStatus = formResponseProperties.RecStatus; }
public void CascadeThroughChildren(FormResponseProperties formResponseProperties, Action <FormResponseProperties> action) { Dictionary <string /*ChildFormName*/, List <FormResponseProperties> > childFormResponses = null; if (ChildResponses.TryGetValue(formResponseProperties.ResponseId, out childFormResponses)) { // interate over list child forms foreach (var childFormResponseList in childFormResponses.Values.ToArray()) { // iterate over list of child responses foreach (var childFormResponseProperties in childFormResponseList.ToArray()) { action(childFormResponseProperties); AddOrReplaceChildResponse(childFormResponseProperties); CascadeThroughChildren(childFormResponseProperties, action); } } } }
public FormResponseProperties AddOrReplaceChildResponse(FormResponseProperties childResponse) { var parentResponseId = childResponse.ParentResponseId; var childFormName = childResponse.FormName; var childResponseId = childResponse.ResponseId; var childResponseList = GetChildResponseList(parentResponseId, childFormName, /*addIfNoList=*/ true); var existingResponse = childResponseList.SingleOrDefault(r => r.ResponseId == childResponseId); if (existingResponse != null) { childResponse.CopyTo(existingResponse); } else { childResponseList.Add(childResponse); } // Add the response to the response index if it doesn't alread exist. ChildResponseContext existingChildResponseContext = null; if (!ChildResponseContexts.TryGetValue(childResponse.ResponseId, out existingChildResponseContext)) { ChildResponseContexts.Add(childResponse.ResponseId, new ChildResponseContext(childResponse)); } else { existingChildResponseContext.RecStatus = childResponse.RecStatus; } var childResponsesByChildFormId = ChildResponses[parentResponseId]; childResponsesByChildFormId[childFormName] = childResponseList; return(childResponse); }