private List<string> SetValues(Business.ManagedItem managedItem, DataTable dtExcelData, DataRow row) { DataRow rowPattern = dtExcelData.Rows[_ROW_SECONDARY_COLUMN_HEADINGS]; List<string> errors = new List<string>(); string activeWorkflow = row[_COL_ACTIVE_WF].ToString(); string activeWorkflowState = row[_COL_ACTIVE_WF_STATE].ToString(); if (!(string.IsNullOrEmpty(activeWorkflow) && string.IsNullOrEmpty(activeWorkflowState))) { if (string.IsNullOrEmpty(activeWorkflow) || string.IsNullOrEmpty(activeWorkflowState)) errors.Add("Both the ActiveWorkflow and the ActiveWorkflowState must be provided. "); else { Business.Workflow workflow = managedItem.FindWorkflow(activeWorkflow); if (workflow == null) errors.Add(string.Format("The provided workflow '{0}' is not defined. ", activeWorkflow)); else { Business.State state = workflow.FindState(activeWorkflowState); if (state == null) errors.Add(string.Format("The provided ActiveWorkflowState '{0}' is not defined. ", activeWorkflowState)); else { managedItem.ActiveWorkflowID = workflow.ID; managedItem.State = state; } } } } List<string> undefinedColumns = new List<string>(); foreach (DataColumn col in dtExcelData.Columns) { if (SkipColumn(col.ColumnName)) continue; string rowColumnValue = row[col.ColumnName].ToString(); if (rowColumnValue.Trim().Equals(_ROW_COL_NO_CHANGE)) continue; if (IsEventColumn(col.ColumnName)) { SetEvent(managedItem, rowPattern, errors, col, rowColumnValue); } else { Business.Term term = managedItem.FindBasicTerm(col.ColumnName); if (term != null) { if (rowColumnValue.Trim().Equals(_ROW_TERM_NULLED_OUT)) { NullOutTerm(managedItem, undefinedColumns, col, term); } else SetTermValue(rowPattern, errors, col, term, rowColumnValue, row); } else { errors.Add(string.Format("Term {0} not found", col.ColumnName)); } } } if (undefinedColumns.Count > 0) errors.Add(string.Format("The following columns are not defined: {0}. ", string.Join(",", undefinedColumns.ToArray()).TrimEnd(','))); return errors; }