/// <summary> /// Update newFilter with the properties of the oldFilter. /// </summary> /// <param name="sb"></param> /// <param name="newFilter"></param> /// <param name="oldFilter"></param> internal static void SyncFilterProperties(StringBuilder sb, Filter newFilter, Filter oldFilter) { #region Update new filter's primary properties newFilter.Enabled = oldFilter.Enabled; newFilter.Alias = oldFilter.Alias; newFilter.Ex = oldFilter.Ex; newFilter.Name = oldFilter.Name; newFilter.CustomWhere = oldFilter.CustomWhere; newFilter.CreateStoredProcedure = oldFilter.CreateStoredProcedure; newFilter.IsReturnTypeCollection = oldFilter.IsReturnTypeCollection; #endregion #region FilterColumns foreach (Filter.FilterColumn newColumn in newFilter.FilterColumns) { foreach (Filter.FilterColumn oldColumn in oldFilter.FilterColumns) { if (newColumn.Column.Name == oldColumn.Column.Name && newColumn.Column.Parent.Name == oldColumn.Column.Parent.Name) { newColumn.Alias = oldColumn.Alias; newColumn.CompareOperator = oldColumn.CompareOperator; newColumn.LogicalOperator = oldColumn.LogicalOperator; break; } } } #endregion #region OrderByColumns for (int orderColumnCounter = newFilter.OrderByColumns.Length - 1; orderColumnCounter >= 0; orderColumnCounter--) { Filter.OrderByColumn newColumn = newFilter.OrderByColumns[orderColumnCounter]; bool found = false; foreach (Filter.OrderByColumn oldColumn in oldFilter.OrderByColumns) { if (newColumn.Column.Name == oldColumn.Column.Name && newColumn.Column.Parent.Name == oldColumn.Column.Parent.Name) { newColumn.SortOperator = oldColumn.SortOperator; found = true; break; } } if (!found) { newFilter.RemoveOrderByColumn(newColumn); } } #endregion #region Add missing FilterColumns foreach (Filter.FilterColumn oldColumn in oldFilter.FilterColumns) { bool found = false; foreach (Filter.FilterColumn newColumn in newFilter.FilterColumns) { if (newColumn.Column.Name == oldColumn.Column.Name && newColumn.Column.Parent.Name == oldColumn.Column.Parent.Name) { found = true; break; } } if (!found) { bool success = false; foreach (Column column in newFilter.Parent.Columns) { if (column.Name == oldColumn.Column.Name && column.Parent.Name == oldColumn.Column.Parent.Name) { Filter.FilterColumn filterColumn = new Filter.FilterColumn(column, oldColumn.LogicalOperator, oldColumn.CompareOperator, oldColumn.Alias); newFilter.AddFilterColumn(filterColumn); success = true; break; } } if (!success) { //sb.AppendLine(string.Format("Filter column is missing and couldn't be updated. Filter:{0}, Column:{1}.{2}", newFilter.Alias, oldColumn.Column.Parent.Name, oldColumn.Column.Alias)); } } } #endregion #region Add missing OrderByColumns foreach (Filter.OrderByColumn oldColumn in oldFilter.OrderByColumns) { bool found = false; foreach (Filter.OrderByColumn newColumn in newFilter.OrderByColumns) { if (newColumn.Column.Name == oldColumn.Column.Name && newColumn.Column.Parent.Name == oldColumn.Column.Parent.Name) { found = true; break; } } if (!found) { bool success = false; foreach (Column column in newFilter.Parent.Columns) { if (column.Name == oldColumn.Column.Name && column.Parent.Name == oldColumn.Column.Parent.Name) { Filter.OrderByColumn orderByColumn = new Filter.OrderByColumn(column, oldColumn.SortOperator); newFilter.AddOrderByColumn(orderByColumn); success = true; break; } } if (!success) { sb.AppendLine(string.Format("OrderBy column is missing and couldn't be updated. Filter:{0}, Column:{1}", newFilter.Alias, oldColumn.Column.Parent.Name + oldColumn.Column.Alias)); } } } #endregion }