void AddRow(IDataListItem itemToAdd, IRecordSet recordset) { var recsetCols = new List <IScalar>(); foreach (var column in recordset.Columns) { var cols = column.Value.Where(scalar => scalar.IODirection == enDev2ColumnArgumentDirection.Input || scalar.IODirection == enDev2ColumnArgumentDirection.Both); recsetCols.AddRange(cols); } var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset); IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray(); var lastItem = dataListItems.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.Index; var indexNum = Convert.ToInt32(indexString) + 1; var lastRow = dataListItems.Where(c => c.Index == indexString); var addRow = false; foreach (var item in lastRow) { if (item.Value != string.Empty) { addRow = true; } } if (addRow) { AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum); } }
bool AddBlankRowToRecordset(IDataListItem dlItem, IList <IScalar> columns, int indexToInsertAt, int indexNum) { var itemsAdded = false; if (dlItem.CanHaveMutipleRows) { IList <IScalar> recsetCols = columns.Distinct(Scalar.Comparer).ToList(); string colName = null; foreach (var col in recsetCols.Distinct(new ScalarNameComparer())) { if (string.IsNullOrEmpty(colName) || !colName.Equals(col.Name)) { WorkflowInputs.Insert(indexToInsertAt + 1, new DataListItem { DisplayValue = string.Concat(dlItem.Recordset, @"(", indexNum, @").", col.Name), Value = string.Empty, CanHaveMutipleRows = dlItem.CanHaveMutipleRows, Recordset = dlItem.Recordset, Field = col.Name, Description = col.Description, Index = indexNum.ToString(CultureInfo.InvariantCulture) }); indexToInsertAt++; } colName = col.Name; itemsAdded = true; } } return(itemsAdded); }
public void SetXmlData(bool includeBlank) { var dataListObject = new JObject(); var objects = WorkflowInputs.Where(item => item.IsObject); var recSets = WorkflowInputs.Where(item => item.CanHaveMutipleRows && !item.IsObject); var scalars = WorkflowInputs.Where(item => !item.CanHaveMutipleRows && !item.IsObject); AddScalarsToObject(scalars, dataListObject); AddRecordsetsToObject(recSets, dataListObject, includeBlank); AddObjectsToObject(objects, dataListObject); var dataListString = dataListObject.ToString(Formatting.Indented); JsonData = dataListString; var xml = JsonConvert.DeserializeXNode(dataListString, @"DataList", true); try { if (xml.Descendants().Count() == 1) { xml = XDocument.Parse(@"<DataList></DataList>"); } XmlData = XElement.Parse(xml.ToString()).ToString(); } catch (Exception e) { XmlData = @"Invalid characters entered"; Dev2Logger.Error(e.StackTrace, e, "Warewolf Error"); } }
public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect) { indexToSelect = 1; var itemsAdded = false; if (selectedItem != null && selectedItem.CanHaveMutipleRows) { var recordset = DataList.RecordSets.FirstOrDefault(set => set.Name == selectedItem.Recordset); if (recordset != null) { var recsetCols = new List <IScalar>(); foreach (var column in recordset.Columns) { recsetCols.AddRange(column.Value); } var numberOfRows = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset); var lastItem = numberOfRows.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.Index; var indexNum = Convert.ToInt32(indexString) + 1; indexToSelect = indexToInsertAt + 1; itemsAdded = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum); } } return(itemsAdded); }
private bool AddBlankRowToRecordset(IDataListItem dlItem, IList <Dev2Column> columns, int indexToInsertAt, int indexNum) { bool itemsAdded = false; if (dlItem.IsRecordset) { IList <Dev2Column> recsetCols = columns; foreach (Dev2Column col in recsetCols) { WorkflowInputs.Insert(indexToInsertAt + 1, new DataListItem { DisplayValue = string.Concat(dlItem.Recordset, "(", indexNum, ").", col.ColumnName), Value = string.Empty, IsRecordset = dlItem.IsRecordset, Recordset = dlItem.Recordset, Field = col.ColumnName, Description = col.ColumnDescription, RecordsetIndex = indexNum.ToString(CultureInfo.InvariantCulture) }); itemsAdded = true; indexToInsertAt++; } } return(itemsAdded); }
/// <summary> /// Used for intelligently determining if a extra row should be added for the selected recordset /// </summary> /// <param name="itemToAdd">The item that is currently selected</param> public void AddRow(IDataListItem itemToAdd) { if (itemToAdd != null && itemToAdd.IsRecordset) { string error; IBinaryDataListEntry recordset; DataList.TryGetEntry(itemToAdd.Recordset, out recordset, out error); if (recordset != null) { IList <Dev2Column> recsetCols = recordset.Columns.Where(cc => cc.ColumnIODirection == enDev2ColumnArgumentDirection.Input || cc.ColumnIODirection == enDev2ColumnArgumentDirection.Both).ToList(); var numberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToAdd.Recordset); IEnumerable <IDataListItem> dataListItems = numberOfRows as IDataListItem[] ?? numberOfRows.ToArray(); var lastItem = dataListItems.Last(); var indexToInsertAt = WorkflowInputs.IndexOf(lastItem); var indexString = lastItem.RecordsetIndex; var indexNum = Convert.ToInt32(indexString) + 1; var lastRow = dataListItems.Where(c => c.RecordsetIndex == indexString); var dontAddRow = true; foreach (var item in lastRow) { if (item.Value != string.Empty) { dontAddRow = false; } } if (!dontAddRow) { AddBlankRowToRecordset(itemToAdd, recsetCols, indexToInsertAt, indexNum); } } } }
int UpdateIndexToSelect(IDataListItem itemToRemove, IDataListItem item) { if (itemToRemove.Index == item.Index) { var item1 = item; return(WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset))); } return(WorkflowInputs.IndexOf(itemToRemove)); }
public string BuildWebPayLoad() { var allScalars = WorkflowInputs.All(item => !item.IsRecordset); if (allScalars && WorkflowInputs.Count > 0) { return(WorkflowInputs.Aggregate("", (current, workflowInput) => current + (workflowInput.Field + "=") + workflowInput.Value + "&").TrimEnd('&')); } return(XElement.Parse(XmlData).ToString(SaveOptions.DisableFormatting)); }
/// <summary> /// Used to transform the XML into WorkflowInputs /// </summary> public void SetWorkflowInputData() { string error; DataList = Broker.DeSerialize(XmlData, DebugTo.DataList, enTranslationTypes.XML, out error); if (string.IsNullOrEmpty(error)) { WorkflowInputs.Clear(); _dataListConversionUtils.CreateListToBindTo(DataList).ToList().ForEach(i => WorkflowInputs.Add(i)); } }
/// <summary> /// Used for loading all the inputs from the saved data or the data list /// </summary> public void LoadWorkflowInputs() { WorkflowInputs.Clear(); Broker = Dev2StudioSessionFactory.CreateBroker(); DebugTo = Broker.InitDebugSession(DebugTo); XmlData = DebugTo.XmlData; RememberInputs = DebugTo.RememberInputs; DataList = DebugTo.BinaryDataList; // Flipping Jurie.... var myList = _dataListConversionUtils.CreateListToBindTo(DebugTo.BinaryDataList); WorkflowInputs.AddRange(myList); }
/// <summary> /// Used for removing a row for the collection /// </summary> /// <param name="itemToRemove">The item that will be removed from the collection</param> /// <param name="indexToSelect"></param> public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.CanHaveMutipleRows) { var numberOfRows = WorkflowInputs.Count(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); List <IDataListItem> listToRemove = WorkflowInputs.Where(c => c.Index == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { IEnumerable <IDataListItem> firstRow = WorkflowInputs.Where(c => c.Index == @"1" && c.Recordset == itemToRemove.Recordset); bool removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.Index == @"2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } } else if (numberOfRows > 2) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.Index == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } } return(itemsRemoved); }
public IDataListItem GetPreviousRow(IDataListItem selectedItem) { if (selectedItem != null) { var indexToInsertAt = WorkflowInputs.IndexOf(selectedItem); if (indexToInsertAt != -1) { var indexOfItemToGet = indexToInsertAt - 1; if (indexOfItemToGet == WorkflowInputs.Count || indexOfItemToGet == -1) { return(selectedItem); } return(WorkflowInputs[indexOfItemToGet]); } } return(null); }
public string BuildWebPayLoad() { var allScalars = WorkflowInputs.All(item => !item.CanHaveMutipleRows && !item.IsObject); if (allScalars && WorkflowInputs.Count > 0) { return(WorkflowInputs.Aggregate(string.Empty, (current, workflowInput) => current + workflowInput.Field + @"=" + workflowInput.Value + @"&").TrimEnd('&')); } try { return(XElement.Parse(XmlData).ToString(SaveOptions.DisableFormatting)); } catch (Exception) { return(string.Empty); } }
void RemoveRows(IDataListItem itemToRemove, ref int indexToSelect, ref bool itemsRemoved, List <IDataListItem> listToRemove, int numberOfRows) { if (numberOfRows > 2) { var listToChange = WorkflowInputs.Where(c => c.Index == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } }
public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.CanHaveMutipleRows) { var numberOfRows = WorkflowInputs.Count(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); var listToRemove = WorkflowInputs.Where(c => c.Index == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { RemoveRow(itemToRemove, ref indexToSelect, ref itemsRemoved, listToRemove); } else { RemoveRows(itemToRemove, ref indexToSelect, ref itemsRemoved, listToRemove, numberOfRows); } } return(itemsRemoved); }
void RemoveRow(IDataListItem itemToRemove, ref int indexToSelect, ref bool itemsRemoved, List <IDataListItem> listToRemove) { var firstRow = WorkflowInputs.Where(c => c.Index == @"1" && c.Recordset == itemToRemove.Recordset); var removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { var listToChange = WorkflowInputs.Where(c => c.Index == @"2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); indexToSelect = UpdateIndexToSelect(itemToRemove, item); itemsRemoved = true; } } }
/// <summary> /// Used for just adding a blank row to a recordset /// </summary> /// <param name="selectedItem">The item that is currently selected</param> /// <param name="indexToSelect"></param> public bool AddBlankRow(IDataListItem selectedItem, out int indexToSelect) { indexToSelect = 1; bool itemsAdded = false; if (selectedItem != null && selectedItem.IsRecordset) { string error; IBinaryDataListEntry recordset; DataList.TryGetEntry(selectedItem.Recordset, out recordset, out error); if (recordset != null) { IList <Dev2Column> recsetCols = recordset.Columns; IEnumerable <IDataListItem> numberOfRows = WorkflowInputs.Where(c => c.Recordset == selectedItem.Recordset); IDataListItem lastItem = numberOfRows.Last(); int indexToInsertAt = WorkflowInputs.IndexOf(lastItem); string indexString = lastItem.RecordsetIndex; int indexNum = Convert.ToInt32(indexString) + 1; indexToSelect = indexToInsertAt + 1; itemsAdded = AddBlankRowToRecordset(selectedItem, recsetCols, indexToInsertAt, indexNum); } } return(itemsAdded); }
/// <summary> /// Used for removing a row for the collection /// </summary> /// <param name="itemToRemove">The item that will be removed from the collection</param> /// <param name="indexToSelect"></param> public bool RemoveRow(IDataListItem itemToRemove, out int indexToSelect) { indexToSelect = 1; var itemsRemoved = false; if (itemToRemove != null && itemToRemove.IsRecordset) { // ReSharper disable InconsistentNaming IEnumerable <IDataListItem> NumberOfRows = WorkflowInputs.Where(c => c.Recordset == itemToRemove.Recordset && c.Field == itemToRemove.Field); // ReSharper restore InconsistentNaming var numberOfRows = NumberOfRows.Count(); List <IDataListItem> listToRemove = WorkflowInputs.Where(c => c.RecordsetIndex == numberOfRows.ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset).ToList(); if (numberOfRows == 2) { IEnumerable <IDataListItem> firstRow = WorkflowInputs.Where(c => c.RecordsetIndex == "1" && c.Recordset == itemToRemove.Recordset); bool removeRow = firstRow.All(item => string.IsNullOrWhiteSpace(item.Value)); if (removeRow) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == "2" && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (itemToRemove.RecordsetIndex == item.RecordsetIndex) { IDataListItem item1 = item; indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset)); } else { indexToSelect = WorkflowInputs.IndexOf(itemToRemove); } itemsRemoved = true; } } } else if (numberOfRows > 2) { IEnumerable <IDataListItem> listToChange = WorkflowInputs.Where(c => c.RecordsetIndex == (numberOfRows - 1).ToString(CultureInfo.InvariantCulture) && c.Recordset == itemToRemove.Recordset); foreach (IDataListItem item in listToChange) { item.Value = string.Empty; } foreach (IDataListItem item in listToRemove) { WorkflowInputs.Remove(item); // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (itemToRemove.RecordsetIndex == item.RecordsetIndex) { IDataListItem item1 = item; indexToSelect = WorkflowInputs.IndexOf(WorkflowInputs.Last(c => c.Recordset == item1.Recordset)); } else { indexToSelect = WorkflowInputs.IndexOf(itemToRemove); } itemsRemoved = true; } } } return(itemsRemoved); }
public void SetWorkflowInputData() { WorkflowInputs.Clear(); DataList.PopulateWithData(XmlData); _dataListConversionUtils.CreateListToBindTo(DataList).ToList().ForEach(i => WorkflowInputs.Add(i)); }