/// <summary> /// Creates a headergroup from an item record in TE /// </summary> /// <remarks> /// Mapping info: /// headergroupid = ChecklistTemplateItemCkey /// title = VisibleText /// </remarks> /// <param name="dr">item record with header group information</param> /// <returns>a headergroup class for the specific item</returns> private headergroup MapHeaderGroup(DataRow dr) { headergroup a = _srTmpTreeBuilder.MapHeaderGroup( //!Base item metadata (String)(dr["type"]), //need standard type lists for Q, H, A, AF, Note, etc (String)(dr["styleClass"]), // (String)(dr["ShortName"]), //@name //!All Displayed Items (Decimal)(dr["ChecklistTemplateItemCkey"]), (String)(dr["VisibleText"]), //@title or @val (String)(dr["longText"]), //@alt-TextElementEnumerator in eCC, OtherText in SDC (String)(dr["ReportText"]), //OtherText element in SDC (Boolean)(dr["enabled"]), !(Boolean)(dr["Hidden"]), //may conflict with styleClass, and may not be used; may be usefu for reporting notes/coments (String)(dr["ControlTip"]), //@toolTip (String)(dr["popupText"]), //@popupText (String)(dr["linkText"]), (String)(dr["linkText2"]), (String)(dr["AuthorityID"]), //@AuthorityID (Boolean)(dr["showInReport"]), //values are true, false, conditional (Boolean)(dr["mustImplement"]), (Int32)(dr["SortOrder"]), //!Sections and Questions are repeatable items (Boolean)(dr["Locked"]), //@readOnly in SDC (Int32)(dr["minCard"]), //@minCard (Int32)(dr["maxCard"]), //@maxCard //!Sections, Questions, Notes (Boolean)(dr["AuthorityRequired"]) //@required, @minCard, @mustImplemenet ); return(a); }
/// <summary> /// Gets (creates) template xml by version ckey /// </summary> /// <param name="templateVersion">template version data</param> /// <param name="templateItems">template item data</param> /// <param name="templateProcedures">template procedure data</param> /// <returns>template for version ckey</returns> private template BuildTemplateObjectTree(DataTable templateVersion, DataTable templateItems, DataTable templateProcedures) { template aTemplate = null; Dictionary <Decimal, object> objectList = new Dictionary <Decimal, object>(); if (templateVersion.Rows.Count == 0) { return(null); } aTemplate = MapTemplate(templateVersion.Rows[0]); // unmapped procedure until clarifications are completed //if (templateProcedures != null) //{ // foreach (DataRow dr in templateProcedures.Rows) // { // aTemplate.templateheader.procedures = aTemplate.templateheader.procedures.AddItem(MapProcedure(dr)); // } //} ////if (!objectList.ContainsKey(aTemplate.templateid)) objectList.Add(aTemplate.templateid, aTemplate); if (templateItems.Rows.Count == 0) { return(aTemplate); } foreach (DataRow dr in templateItems.Rows) { object o; ItemType?rowTypePrevious = null; var rowType = ItemMapper.MapItemType(Convert.ToInt32(dr["ItemTypeKey"])); // fixed to make all notes under question fixed list notes, rlm: in case TE modeler uses a Note instead of ComboNote // this is required to fix issues with ordering of all items under a question such as the WilmsTmrResx.xml template if (rowType == ItemType.NOTE && Convert.ToInt32(dr["IsParentQuestion"]) == 1) { //if (rowTypePrevious==ItemType.ANSWER || rowTypePrevious == ItemType.ANSWERFILLIN || rowTypePrevious == ItemType.FIXEDLISTNOTE || rowTypePrevious==null) rowType = ItemType.FIXEDLISTNOTE; } switch (rowType) { case ItemType.HEADER: headergroup h = MapHeaderGroup(dr); //// if (!objectList.ContainsKey(h.headergroupid)) objectList.Add(h.headergroupid, h); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddHeaderToItem(o, h); } break; case ItemType.NOTE: note n = MapNote(dr); //rlm: If the note is not already in the objectList, then add it //if (!objectList.ContainsKey(n.noteid)) objectList.Add(n.noteid, n); if (n.noteid == 36816.1000043M) { } //rlm: If the Note's Parent item is already in the objectList, then connect the note to its Parent item //rlm: If the Parent item is not present, then the note is not attached to the Parent if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddNoteToItem(o, n); } break; case ItemType.FIXEDLISTNOTE: fixedlistnote note = MapFixedListNote(dr); //if (!objectList.ContainsKey(note.noteid)) objectList.Add(note.noteid, note); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddFixedListNoteToItem(o, note); } break; case ItemType.QUESTIONSINGLE: question q = MapQuestion(dr, ItemType.QUESTIONSINGLE); //if (!objectList.ContainsKey(q.questionid)) objectList.Add(q.questionid, q); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddQuestionToItem(o, q); } break; case ItemType.QUESTIONMULTIPLE: question q2 = MapQuestion(dr, ItemType.QUESTIONMULTIPLE); //if (!objectList.ContainsKey(q2.questionid)) objectList.Add(q2.questionid, q2); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddQuestionToItem(o, q2); } break; case ItemType.QUESTIONFILLIN: question q3 = MapQuestion(dr, ItemType.QUESTIONFILLIN); //if (!objectList.ContainsKey(q3.questionid)) objectList.Add(q3.questionid, q3); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddQuestionToItem(o, q3); } break; case ItemType.ANSWER: fixedlistitem item = MapAnswer(dr); //if (!objectList.ContainsKey(item.answerid)) objectList.Add(item.answerid, item); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddAnswerToItem(o, item); } break; case ItemType.ANSWERFILLIN: fixedlistfillinanswer a = MapAnswerFillin(dr); //if (!objectList.ContainsKey(a.answerid)) objectList.Add(a.answerid, a); if (objectList.ContainsKey(Convert.ToDecimal(dr["ParentItemCkey"]))) { o = objectList[Convert.ToDecimal(dr["ParentItemCkey"])]; _srTmpTreeBuilder.AddAnswerToItem(o, a); } break; } //rowTypePrevious = rowType; } return(aTemplate); }