public questStatus FormatBootstrapTreeviewNode(TablesetView tablesetView, out BootstrapTreenodeViewModel bootstrapTreenodeViewModel) { // Initialize questStatus status = null; bootstrapTreenodeViewModel = new BootstrapTreenodeViewModel(); bootstrapTreenodeViewModel.Id = tablesetView.Id; bootstrapTreenodeViewModel.type = "view"; bootstrapTreenodeViewModel.icon = "fa fa-th padding-right-20"; bootstrapTreenodeViewModel.text = "[" + tablesetView.Schema + "].[" + tablesetView.Name + "]"; bootstrapTreenodeViewModel.Schema = tablesetView.Schema; bootstrapTreenodeViewModel.Name = tablesetView.Name; bootstrapTreenodeViewModel.selectable = "true"; List <BootstrapTreenodeViewModel> columnNodeList = new List <BootstrapTreenodeViewModel>(); foreach (TablesetColumn tablesetColumn in tablesetView.TablesetColumnList) { BootstrapTreenodeViewModel columnNode = null; status = FormatBootstrapTreeviewNode(tablesetView, tablesetColumn, out columnNode); if (!questStatusDef.IsSuccess(status)) { return(status); } columnNodeList.Add(columnNode); } bootstrapTreenodeViewModel.nodes.AddRange(columnNodeList); return(new questStatus(Severity.Success)); }
public questStatus GetViewInfo(DatabaseId databaseId, TablesetView tablesetView, out View view) { // Initialize questStatus status = null; view = null; // Get view DbViewsMgr dbViewsMgr = new DbViewsMgr(this._userSession); status = dbViewsMgr.Read(databaseId, tablesetView.Schema, tablesetView.Name, out view); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetView.View = view; // Get view columns ViewId viewId = new ViewId(view.Id); List <Column> columnList = null; DbColumnsMgr dbColumnsMgr = new DbColumnsMgr(this._userSession); status = dbColumnsMgr.Read(viewId, out columnList); if (!questStatusDef.IsSuccess(status)) { return(status); } view.ColumnList = columnList; return(new questStatus(Severity.Success)); }
public questStatus ReadTablesetConfiguration(TablesetId tablesetId, out TablesetConfiguration tablesetConfiguration) { // Initialize questStatus status = null; tablesetConfiguration = null; // Read tableset configuration status = _dbTablesetMgr.ReadTablesetConfiguration(tablesetId, out tablesetConfiguration); if (!questStatusDef.IsSuccess(status)) { return(status); } // Read database entities DatabaseId databaseId = new DatabaseId(tablesetConfiguration.Database.Id); DatabaseEntities databaseEntities = null; DatabaseMgr databaseMgr = new DatabaseMgr(this.UserSession); status = databaseMgr.ReadDatabaseEntities(databaseId, out databaseEntities); if (!questStatusDef.IsSuccess(status)) { return(status); } // Sort out what's assigned and not assigned to the tableset. List <Table> nonAssignedTableList = new List <Table>(); List <View> nonAssignedViewList = new List <View>(); foreach (Table table in databaseEntities.TableList) { TablesetTable tablesetTable = tablesetConfiguration.TablesetTables.Find(delegate(TablesetTable ts) { return(ts.Schema == table.Schema && ts.Name == table.Name); }); if (tablesetTable == null) { nonAssignedTableList.Add(table); } } tablesetConfiguration.DBTableList = nonAssignedTableList; // Load database views and columns into configuration NOT assigned to tableset. foreach (View view in databaseEntities.ViewList) { TablesetView tablesetView = tablesetConfiguration.TablesetViews.Find(delegate(TablesetView tv) { return(tv.Schema == view.Schema && tv.Name == view.Name); }); if (tablesetView == null) { nonAssignedViewList.Add(view); } } tablesetConfiguration.DBViewList = nonAssignedViewList; return(new questStatus(Severity.Success)); }
public questStatus FormatBootstrapTreeviewNode(TablesetView tablesetView, TablesetColumn tablesetColumn, out BootstrapTreenodeViewModel bootstrapTreenodeViewModel) { // Initialize bootstrapTreenodeViewModel = new BootstrapTreenodeViewModel(); bootstrapTreenodeViewModel.Id = tablesetColumn.Id; bootstrapTreenodeViewModel.ParentId = tablesetColumn.TableSetEntityId; bootstrapTreenodeViewModel.type = "column"; bootstrapTreenodeViewModel.parentType = "view"; bootstrapTreenodeViewModel.icon = "fa fa-square-o padding-right-20 "; bootstrapTreenodeViewModel.text = tablesetColumn.Name + " : " + GetColumnDataType(tablesetColumn.Column); bootstrapTreenodeViewModel.Schema = null; bootstrapTreenodeViewModel.Name = tablesetColumn.Name; bootstrapTreenodeViewModel.selectable = "true"; return(new questStatus(Severity.Success)); }
public questStatus Save(TablesetConfigurationViewModel tablesetConfigurationViewModel) { // Initialize questStatus status = null; TablesetId tablesetId = null; // Validate: must have a valid TablesetId if (tablesetConfigurationViewModel.Tableset.Id < BaseId.VALID_ID) { return(new questStatus(Severity.Error, "Invalid Tableset identity")); } tablesetId = new TablesetId(tablesetConfigurationViewModel.Tableset.Id); Tableset tableset = null; TablesetsMgr tablesetsMgr = new TablesetsMgr(this.UserSession); status = tablesetsMgr.Read(tablesetId, out tableset); if (!questStatusDef.IsSuccess(status)) { return(new questStatus(Severity.Error, String.Format("Tableset identity not found: {0}", tablesetId.Id))); } // Transfer model if (tablesetConfigurationViewModel.TableList == null) { tablesetConfigurationViewModel.TableList = new List <BootstrapTreenodeViewModel>(); } TablesetConfiguration tablesetConfiguration = new TablesetConfiguration(); BufferMgr.TransferBuffer(tablesetConfigurationViewModel, tablesetConfiguration, true); foreach (BootstrapTreenodeViewModel _table in tablesetConfigurationViewModel.TableList) { TablesetTable tablesetTable = new TablesetTable(); string[] parts = _table.text.Split(new[] { '[', '.', ']' }, StringSplitOptions.RemoveEmptyEntries); tablesetTable.Schema = parts[0]; tablesetTable.Name = parts[1]; tablesetConfiguration.TablesetTables.Add(tablesetTable); } foreach (BootstrapTreenodeViewModel _view in tablesetConfigurationViewModel.ViewList) { TablesetView tablesetView = new TablesetView(); string[] parts = _view.text.Split(new[] { '[', '.', ']' }, StringSplitOptions.RemoveEmptyEntries); tablesetView.Schema = parts[0]; tablesetView.Name = parts[1]; tablesetConfiguration.TablesetViews.Add(tablesetView); } // Save tablesetId = null; TablesetMgr tablesetMgr = new TablesetMgr(this.UserSession); status = tablesetMgr.SaveTablesetConfiguration(tablesetConfiguration, out tablesetId); if (!questStatusDef.IsSuccess(status)) { FormatErrorMessage(status, tablesetConfigurationViewModel); return(status); } tablesetConfigurationViewModel.Tableset.Id = tablesetId.Id; return(new questStatus(Severity.Success)); }
private questStatus getJoinTarget(TablesetColumnId tablesetColumnId, out TablesetTable tablesetTable, out TablesetView tablesetView) { // Initialize questStatus status = null; tablesetTable = null; tablesetView = null; // Get TablesetColumn DbTablesetColumnsMgr dbTablesetColumnsMgr = new DbTablesetColumnsMgr(this.UserSession); TablesetColumn tablesetColumn = null; status = dbTablesetColumnsMgr.Read(tablesetColumnId, out tablesetColumn); if (!questStatusDef.IsSuccessOrWarning(status)) { return(status); } if (tablesetColumn.EntityTypeId == EntityType.Table) { TablesetTableId tablesetTableId = new TablesetTableId(tablesetColumn.TableSetEntityId); DbTablesetTablesMgr dbTablesetTablesMgr = new DbTablesetTablesMgr(this.UserSession); status = dbTablesetTablesMgr.Read(tablesetTableId, out tablesetTable); if (!questStatusDef.IsSuccessOrWarning(status)) { return(status); } } else if (tablesetColumn.EntityTypeId == EntityType.View) { TablesetViewId tablesetViewId = new TablesetViewId(tablesetColumn.TableSetEntityId); DbTablesetViewsMgr dbTablesetViewsMgr = new DbTablesetViewsMgr(this.UserSession); status = dbTablesetViewsMgr.Read(tablesetViewId, out tablesetView); if (!questStatusDef.IsSuccessOrWarning(status)) { return(status); } } return(new questStatus(Severity.Success)); }
public questStatus Save(DbMgrTransaction trans, FilterId filterId, Filter filter) { // Initialize questStatus status = null; Mgr mgr = new Mgr(this.UserSession); ColumnsMgr columnMgr = new ColumnsMgr(this.UserSession); try { // Validate filter status = Verify(filterId, filter); if (!questStatusDef.IsSuccess(status)) { return(status); } // Remove filter entities, items and values. Also, tables and columns. status = _dbFilterMgr.Clear(trans, filterId); if (!questStatusDef.IsSuccess(status)) { return(status); } // Save filter tables FilterTablesMgr filterTablesMgr = new FilterTablesMgr(this.UserSession); foreach (FilterTable filterTable in filter.FilterTableList) { filterTable.FilterId = filter.Id; FilterTableId filterTableId = null; status = filterTablesMgr.Create(trans, filterTable, out filterTableId); if (!questStatusDef.IsSuccess(status)) { return(status); } filterTable.Id = filterTableId.Id; } // Save filter views FilterViewsMgr filterViewsMgr = new FilterViewsMgr(this.UserSession); foreach (FilterView _filterView in filter.FilterViewList) { _filterView.FilterId = filter.Id; FilterViewId filterViewId = null; status = filterViewsMgr.Create(trans, _filterView, out filterViewId); if (!questStatusDef.IsSuccess(status)) { return(status); } _filterView.Id = filterViewId.Id; } // Save filter columns DbFilterMgr dbFilterMgr = new DbFilterMgr(this.UserSession); FilterColumnsMgr filterColumnsMgr = new FilterColumnsMgr(this.UserSession); foreach (FilterColumn filterColumn in filter.FilterColumnList) { if (filterColumn.FilterEntityId < BaseId.VALID_ID) { // Get the FilterTable or FilterView Id. // This is a klugie. Gotta rework DataManager panel first, though. No time to do that. if (filterColumn.FilterEntityTypeId == FilterEntityType.Table) { TablesetTable tablesetTable = null; status = dbFilterMgr.GetTablesetTable(filterColumn, out tablesetTable); if (!questStatusDef.IsSuccess(status)) { return(status); } FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(t.Schema == tablesetTable.Schema && t.Name == tablesetTable.Name); }); if (filterTable == null) { return(new questStatus(Severity.Error, String.Format("ERROR: FilterTable not found for TableSetTable Schema:{0} Name:{1}", tablesetTable.Schema, tablesetTable.Name))); } filterColumn.FilterEntityId = filterTable.Id; } else if (filterColumn.FilterEntityTypeId == FilterEntityType.View) { TablesetView tablesetView = null; status = dbFilterMgr.GetTablesetView(filterColumn, out tablesetView); if (!questStatusDef.IsSuccess(status)) { return(status); } FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(v.Schema == tablesetView.Schema && v.Name == tablesetView.Name); }); if (filterView == null) { return(new questStatus(Severity.Error, String.Format("ERROR: FilterView not found for TableSetTable Schema:{0} Name:{1}", tablesetView.Schema, tablesetView.Name))); } filterColumn.FilterEntityId = filterView.Id; } else { return(new questStatus(Severity.Error, String.Format("ERROR: FilterColumn FilterEntityTypeId {0} not supported. FilterColumn {1}", filterColumn.FilterEntityTypeId, filterColumn.Id))); } } // Save FilterColumnId filterColumnId = null; status = filterColumnsMgr.Create(trans, filterColumn, out filterColumnId); if (!questStatusDef.IsSuccess(status)) { return(status); } filterColumn.Id = filterColumnId.Id; } // Save filter items. FilterItemsMgr filterItemsMgr = new FilterItemsMgr(this.UserSession); FilterItemJoinsMgr filterItemJoinsMgr = new FilterItemJoinsMgr(this.UserSession); FilterOperationsMgr filterOperationsMgr = new FilterOperationsMgr(this.UserSession); FilterValuesMgr filterValuesMgr = new FilterValuesMgr(this.UserSession); foreach (FilterItem filterItem in filter.FilterItemList) { FilterColumn filterColumn = null; // Get filterItem FilterEntityId if (filterItem.FilterEntityId < BaseId.VALID_ID) { status = dbFilterMgr.GetFilterColumn(filter, filterItem, out filterColumn); if (!questStatusDef.IsSuccess(status)) { return(status); } filterItem.FilterEntityId = filterColumn.Id; filterItem.FilterColumn = filterColumn; // helps with bookkeeping further down. } // Save FilterItem FilterItemId filterItemId = null; status = filterItemsMgr.Create(trans, filterItem, out filterItemId); if (!questStatusDef.IsSuccess(status)) { return(status); } filterItem.Id = filterItemId.Id; // Save filter item joins foreach (FilterItemJoin filterItemJoin in filterItem.JoinList) { filterItemJoin.FilterItemId = filterItemId.Id; if (string.IsNullOrEmpty(filterItemJoin.SourceSchema) || string.IsNullOrEmpty(filterItemJoin.SourceEntityName) || string.IsNullOrEmpty(filterItemJoin.SourceColumnName)) { // Get join target type (Table or View) TablesetColumnId tablesetColumnId = new TablesetColumnId(filterItemJoin.ColumnId); TablesetTable tablesetTable = null; TablesetView tablesetView = null; status = getJoinTarget(tablesetColumnId, out tablesetTable, out tablesetView); if (!questStatusDef.IsSuccess(status)) { return(status); } filterItemJoin.TargetEntityTypeId = tablesetTable == null ? FilterEntityType.View : FilterEntityType.Table; // Get target identifier parts. string targetSchema = null; string targetEntityName = null; string targetColumnName = null; SQLIdentifier.ParseThreePartIdentifier(filterItemJoin.Identifier, out targetSchema, out targetEntityName, out targetColumnName); filterItemJoin.TargetSchema = targetSchema; filterItemJoin.TargetEntityName = targetEntityName; filterItemJoin.TargetColumnName = targetColumnName; // Get source identifier parts. string sourceSchema = null; string sourceEntityName = null; string sourceColumnName = null; if (filterColumn.FilterEntityTypeId == FilterEntityType.Table) { FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(filterColumn.FilterEntityId == t.Id); }); if (filterTable == null) { return(new questStatus(Severity.Error, String.Format("ERROR: building Join on {0}, FilterTable {1} not found", filterItemJoin.Identifier, filterColumn.FilterEntityId))); } sourceSchema = filterTable.Schema; sourceEntityName = filterTable.Name; } else if (filterColumn.FilterEntityTypeId == FilterEntityType.View) { FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(filterColumn.FilterEntityId == v.Id); }); if (filterView == null) { return(new questStatus(Severity.Error, String.Format("ERROR: building Join on {0}, FilterView {1} not found", filterItemJoin.Identifier, filterColumn.FilterEntityId))); } sourceSchema = filterView.Schema; sourceEntityName = filterView.Name; } sourceColumnName = filterColumn.Name; filterItemJoin.SourceSchema = sourceSchema; filterItemJoin.SourceEntityName = sourceEntityName; filterItemJoin.SourceColumnName = sourceColumnName; } // Create FilterItemJoin FilterItemJoinId filterItemJoinId = null; status = filterItemJoinsMgr.Create(trans, filterItemJoin, out filterItemJoinId); if (!questStatusDef.IsSuccess(status)) { return(status); } } // Save filter operations foreach (FilterOperation filterOperation in filterItem.OperationList) { filterOperation.FilterItemId = filterItem.Id; FilterOperationId filterOperationId = null; status = filterOperationsMgr.Create(trans, filterOperation, out filterOperationId); if (!questStatusDef.IsSuccess(status)) { return(status); } // Save filter values foreach (FilterValue filterValue in filterOperation.ValueList) { filterValue.FilterOperationId = filterOperationId.Id; FilterValueId filterValueId = null; status = filterValuesMgr.Create(trans, filterValue, out filterValueId); if (!questStatusDef.IsSuccess(status)) { return(status); } } } } // Save filter procedures // Get the filter's database. Quest.Functional.MasterPricing.Database database = null; status = GetFilterDatabase(filterId, out database); if (!questStatusDef.IsSuccess(status)) { return(status); } // NOTE: business rules reads in procedure parameters and writes them. FilterProceduresMgr filterProceduresMgr = new FilterProceduresMgr(this.UserSession); foreach (FilterProcedure filterProcedure in filter.FilterProcedureList) { if (string.IsNullOrEmpty(filterProcedure.Name)) { continue; } filterProcedure.FilterId = filter.Id; FilterProcedureId filterProcedureId = null; status = filterProceduresMgr.Create(trans, database, filterProcedure, out filterProcedureId); if (!questStatusDef.IsSuccess(status)) { return(status); } } // NOTE: YOU STILL HAVE TO UPDATE THE FILTER'S SQL. BUT, CAN'T HERE, B/C YOU'RE IN A TRANSACTION. // TODO: REFACTOR SO YOU CAN, BUT GOTTA GET A PARAMETERS MAKE-REQUIRED UPDATE OUT THERE FIRST. } catch (System.Exception ex) { return(new questStatus(Severity.Fatal, String.Format("EXCEPTION: {0}.{1}: {2}", this.GetType().Name, MethodBase.GetCurrentMethod().Name, ex.InnerException != null ? ex.InnerException.Message : ex.Message))); } return(new questStatus(Severity.Success)); }
/* Used or useful? */ public questStatus GetColumnInfo(TablesetColumn tablesetColumn, out Column column) { // Initialize questStatus status = null; column = null; DbTablesetTablesMgr dbTablesetTablesMgr = new DbTablesetTablesMgr(this._userSession); DbTablesetViewsMgr dbTablesetViewsMgr = new DbTablesetViewsMgr(this._userSession); TablesetId tablesetId = null; TablesetTable tablesetTable = null; TablesetView tablesetView = null; if (tablesetColumn.EntityTypeId == EntityType.Table) { // Get TablesetTable TablesetTableId tablesetTableId = new TablesetTableId(tablesetColumn.TableSetEntityId); status = dbTablesetTablesMgr.Read(tablesetTableId, out tablesetTable); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetId = new TablesetId(tablesetTable.TablesetId); } else if (tablesetColumn.EntityTypeId == EntityType.View) { // Get TablesetView TablesetViewId tablesetViewId = new TablesetViewId(tablesetColumn.TableSetEntityId); status = dbTablesetViewsMgr.Read(tablesetViewId, out tablesetView); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetId = new TablesetId(tablesetView.TablesetId); } else { return(new questStatus(Severity.Error, String.Format("ERROR: unsupported EntityTypeId {0} for TablesetColumn {1}", tablesetColumn.EntityTypeId, tablesetColumn.Id))); } // Get the Tableset DbTablesetsMgr dbTablesetsMgr = new DbTablesetsMgr(this._userSession); Tableset tableset = null; status = dbTablesetsMgr.Read(tablesetId, out tableset); if (!questStatusDef.IsSuccess(status)) { return(status); } // Get the database DatabaseId databaseId = new DatabaseId(tableset.DatabaseId); Quest.Functional.MasterPricing.Database database = null; DbDatabasesMgr dbDatabasesMgr = new DbDatabasesMgr(this._userSession); status = dbDatabasesMgr.Read(databaseId, out database); if (!questStatusDef.IsSuccess(status)) { return(status); } // Get the Table or View by identifier within this database DbTablesMgr dbTablesMgr = new DbTablesMgr(this._userSession); DbViewsMgr dbViewsMgr = new DbViewsMgr(this._userSession); EntityTypeId entityTypeId = null; EntityId entityId = null; if (tablesetColumn.EntityTypeId == EntityType.Table) { TableId tableId = new TableId(); Table table = null; status = dbTablesMgr.Read(databaseId, tablesetTable.Schema, tablesetTable.Name, out table); if (!questStatusDef.IsSuccess(status)) { return(status); } entityTypeId = new EntityTypeId(EntityType.Table); entityId = new EntityId(table.Id); } else if (tablesetColumn.EntityTypeId == EntityType.View) { } // Get column info DbColumnsMgr dbColumnsMgr = new DbColumnsMgr(this._userSession); status = dbColumnsMgr.Read(entityTypeId, entityId, tablesetColumn.Name, out column); if (!questStatusDef.IsSuccess(status)) { return(status); } return(new questStatus(Severity.Success)); }
public questStatus GetTablesetView(DatabaseId databaseId, FilterViewTablesetViewId filterViewTablesetViewId, out TablesetView tablesetView) { // Initialize questStatus status = null; tablesetView = null; // Get tableset view DbTablesetViewsMgr dbTablesetViewsMgr = new DbTablesetViewsMgr(this._userSession); status = dbTablesetViewsMgr.Read(filterViewTablesetViewId, out tablesetView); if (!questStatusDef.IsSuccess(status)) { return(status); } // Get tableset columns EntityType entityType = new EntityType(); entityType.Id = EntityType.View; TableSetEntityId tableSetEntityId = new TableSetEntityId(tablesetView.Id); DbTablesetColumnsMgr dbTablesetColumnsMgr = new DbTablesetColumnsMgr(this._userSession); List <TablesetColumn> tablesetColumnList = null; TablesetColumnId tablesetColumnId = new TablesetColumnId(); status = dbTablesetColumnsMgr.Read(entityType, tableSetEntityId, out tablesetColumnList); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetView.TablesetColumnList = tablesetColumnList; // Get view View view = null; status = GetViewInfo(databaseId, tablesetView, out view); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetView.View = view; // Get column info DbColumnsMgr dbColumnsMgr = new DbColumnsMgr(this._userSession); EntityTypeId entityTypeId = new EntityTypeId(EntityType.View); EntityId entityId = new EntityId(view.Id); foreach (TablesetColumn tablesetColumn in tablesetColumnList) { Column column = null; status = dbColumnsMgr.Read(entityTypeId, entityId, tablesetColumn.Name, out column); if (!questStatusDef.IsSuccess(status)) { return(status); } tablesetColumn.Column = column; } return(new questStatus(Severity.Success)); }
/*================================================================================================================================== * Public Methods *=================================================================================================================================*/ public questStatus Save(FilterPanelViewModel filterPanelViewModel) { // Initialize questStatus status = null; Quest.Functional.MasterPricing.Filter filter = null; FilterId filterId = null; // Validate if (filterPanelViewModel.Editor.TablesetId < BaseId.VALID_ID) { return(new questStatus(Severity.Error, "Invalid Tableset Id")); } if (filterPanelViewModel.Editor.FilterId < BaseId.VALID_ID) { // For headless agents that want to save all-in-one, not via the Filters panel. filter = new Functional.MasterPricing.Filter(); BufferMgr.TransferBuffer(filterPanelViewModel.Editor, filter); filterId = null; FiltersMgr filtersMgr = new FiltersMgr(this.UserSession); status = filtersMgr.Create(filter, out filterId); if (!questStatusDef.IsSuccess(status)) { return(status); } filterPanelViewModel.Editor.Id = filterId.Id; filterPanelViewModel.Editor.FilterId = filterId.Id; } // Read tableset configuration TablesetId tablesetId = new TablesetId(filterPanelViewModel.Editor.TablesetId); TablesetDataManagement tablesetDataManagement = null; TablesetMgr tablesetMgr = new TablesetMgr(this.UserSession); status = tablesetMgr.ReadTablesetDataManagement(tablesetId, out tablesetDataManagement); if (!questStatusDef.IsSuccess(status)) { return(status); } #region Transfer filter entities // // Transfer filter entities // filter = new Functional.MasterPricing.Filter(); filter.TablesetId = filterPanelViewModel.Editor.TablesetId; filter.Id = filterPanelViewModel.Editor.Id; foreach (BootstrapTreenodeViewModel filterEntity in filterPanelViewModel.Entities) { if (filterEntity.type == "table") { FilterTable filterTable = new FilterTable(); filterTable.FilterId = filterPanelViewModel.Editor.Id; filterTable.Schema = filterEntity.Schema; filterTable.Name = filterEntity.Name; filter.FilterTableList.Add(filterTable); } else if (filterEntity.type == "view") { FilterView filterView = new FilterView(); filterView.FilterId = filterPanelViewModel.Editor.Id; filterView.Schema = filterEntity.Schema; filterView.Name = filterEntity.Name; filter.FilterViewList.Add(filterView); } else if (filterEntity.type == "column") { FilterColumn filterColumn = new FilterColumn(); filterColumn.FilterId = filterPanelViewModel.Editor.Id; filterColumn.Name = filterEntity.Name; filterColumn.TablesetEntityId = filterEntity.ParentId; if (filterEntity.parentType == "table") { TablesetTable parentTablesetTable = tablesetDataManagement.TablesetConfiguration.TablesetTables.Find(delegate(TablesetTable tt) { return(tt.Id == filterEntity.ParentId); }); if (parentTablesetTable == null) { return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\" (Id {1}) table parent Id {2} not found.", filterEntity.text, filterEntity.Id, filterEntity.ParentId))); } filterColumn.FilterEntityTypeId = FilterEntityType.Table; // If column table not in filter entities, add it. BootstrapTreenodeViewModel filterColumnTable = filterPanelViewModel.Entities.Find(delegate(BootstrapTreenodeViewModel n) { return(n.type == "table" && n.Id == filterEntity.ParentId); }); if (filterColumnTable == null) { FilterTable filterTable = filter.FilterTableList.Find(delegate(FilterTable t) { return(filterEntity.ParentId == t.TablesetTable.Id); }); if (filterTable == null) { filterTable = new FilterTable(); filterTable.FilterId = filterPanelViewModel.Editor.Id; filterTable.TablesetTable = parentTablesetTable; filterTable.Schema = parentTablesetTable.Schema; filterTable.Name = parentTablesetTable.Name; filter.FilterTableList.Add(filterTable); } } } else if (filterEntity.parentType == "view") { TablesetView parentTablesetView = tablesetDataManagement.TablesetConfiguration.TablesetViews.Find(delegate(TablesetView tv) { return(tv.Id == filterEntity.ParentId); }); if (parentTablesetView == null) { return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\" (Id {1}) view parent Id {2} not found.", filterEntity.text, filterEntity.Id, filterEntity.ParentId))); } filterColumn.FilterEntityTypeId = FilterEntityType.View; // If column view not in filter entities, add it. BootstrapTreenodeViewModel filterColumnView = filterPanelViewModel.Entities.Find(delegate(BootstrapTreenodeViewModel n) { return(n.type == "view" && n.Id == filterEntity.ParentId); }); if (filterColumnView == null) { FilterView filterView = filter.FilterViewList.Find(delegate(FilterView v) { return(filterEntity.ParentId == v.TablesetView.Id); }); if (filterView == null) { filterView = new FilterView(); filterView.FilterId = filterPanelViewModel.Editor.Id; filterView.TablesetView = parentTablesetView; filterView.Schema = parentTablesetView.Schema; filterView.Name = parentTablesetView.Name; filter.FilterViewList.Add(filterView); } } } else { return(new questStatus(Severity.Error, String.Format("ERROR: column filter entity \"{0}\" (Id {1}) unknown parent parent type: {2}", filterEntity.text, filterEntity.Id, filterEntity.ParentId, (filterEntity.parentType == null ? "null" : filterEntity.parentType)))); } filter.FilterColumnList.Add(filterColumn); } else { return(new questStatus(Severity.Error, String.Format("Invalid filter entity type: {0}", filterEntity.type))); } } #endregion #region Transfer filter items // // Transfer filter items // foreach (FilterItemViewModel filterItemViewModel in filterPanelViewModel.Items) { // Filter Item FilterItem filterItem = new FilterItem(); filterItem.FilterId = filterPanelViewModel.Editor.FilterId; if (filterItemViewModel.Entity.type == "table") { filterItem.FilterEntityTypeId = FilterEntityType.Table; } if (filterItemViewModel.Entity.type == "view") { filterItem.FilterEntityTypeId = FilterEntityType.View; } else if (filterItemViewModel.Entity.type == "column") { filterItem.FilterEntityTypeId = FilterEntityType.Column; } filterItem.TablesetColumnId = filterItemViewModel.Entity.Id; filterItem.Label = filterItemViewModel.Label; filterItem.ParameterName = filterItemViewModel.ParameterName; filterItem.bHidden = filterItemViewModel.bHidden; filterItem.bBulkUpdateValueRequired = filterItemViewModel.bBulkUpdateValueRequired; // Joins foreach (FilterItemJoinViewModel filterItemJoinViewModel in filterItemViewModel.Joins) { FilterItemJoin filterItemJoin = new FilterItemJoin(); filterItemJoin.ColumnId = filterItemJoinViewModel.ColumnId; filterItemJoin.JoinType = filterItemJoinViewModel.JoinType; filterItemJoin.Identifier = filterItemJoinViewModel.Identifier; filterItem.JoinList.Add(filterItemJoin); } // Operations foreach (FilterOperationViewModel filterOperationViewModel in filterItemViewModel.Operations) { FilterOperation filterOperation = new FilterOperation(); filterOperation.FilterOperatorId = filterOperationViewModel.Operator; // Values foreach (FilterValueViewModel filterValueViewModel in filterOperationViewModel.Values) { FilterValue filterValue = new FilterValue(); filterValue.Value = filterValueViewModel.Value; filterOperation.ValueList.Add(filterValue); } filterItem.OperationList.Add(filterOperation); } // Lookup if (filterItemViewModel.Lookup.Id >= BaseId.VALID_ID) { filterItem.LookupId = filterItemViewModel.Lookup.Id; } // TypeList if (filterItemViewModel.TypeList.Id >= BaseId.VALID_ID) { filterItem.TypeListId = filterItemViewModel.TypeList.Id; } filter.FilterItemList.Add(filterItem); } #endregion #region Transfer filter procedures // // Transfer filter procedures // foreach (FilterProcedureViewModel filterProcedureViewModel in filterPanelViewModel.Procedures) { if (filterProcedureViewModel.Id > BaseId.INVALID_ID) { FilterProcedure filterProcedure = new FilterProcedure(); BufferMgr.TransferBuffer(filterProcedureViewModel, filterProcedure); filterProcedure.FilterId = filterPanelViewModel.Editor.FilterId; filter.FilterProcedureList.Add(filterProcedure); } } #endregion #region Save filter // // Save filter // filterId = new FilterId(filterPanelViewModel.Editor.FilterId); FilterMgr filterMgr = new FilterMgr(this.UserSession); status = filterMgr.Save(filterId, filter); if (!questStatusDef.IsSuccess(status)) { if (questStatusDef.IsWarning(status)) { return(status); } return(new questStatus(status.Severity, String.Format("Error saving filter items: {0}", status.Message))); } #endregion #region Return procedure parameters // // Return procedure parameters // // Get filter database Quest.Functional.MasterPricing.Database database = null; filterMgr.GetFilterDatabase(filterId, out database); if (filter.FilterProcedureList.Count > 0) { foreach (FilterProcedureViewModel filterProcedureViewModel in filterPanelViewModel.Procedures) { if ((filterProcedureViewModel.Id == BaseId.INVALID_ID) || (string.IsNullOrEmpty(filterProcedureViewModel.Name))) { continue; } // Get procedure parameters List <Quest.Functional.MasterPricing.FilterProcedureParameter> filterProcedureParameterList = null; status = filterMgr.GetStoredProdecureParameters(database, filterProcedureViewModel.Name, out filterProcedureParameterList); if (!questStatusDef.IsSuccess(status)) { return(status); } foreach (FilterProcedureParameter filterProcedureParameter in filterProcedureParameterList) { FilterProcedureParameterViewModel filterProcedureParameterViewModel = new FilterProcedureParameterViewModel(); BufferMgr.TransferBuffer(filterProcedureParameter, filterProcedureParameterViewModel, true); filterProcedureParameterViewModel.Precision = filterProcedureParameter.Precision[0]; filterProcedureParameterViewModel.Scale = filterProcedureParameter.Scale[0]; filterProcedureViewModel.Parameters.Add(filterProcedureParameterViewModel); } } } #endregion // Return warning if no items in filter. if (filter.FilterItemList.Count == 0) { return(new questStatus(Severity.Warning, "Filter successfully saved, but has no items")); } return(new questStatus(Severity.Success)); }