public questStatus Read(FilterId filterId, out FilterSQLViewModel filterSQLViewModel)
        {
            // Initialize
            questStatus status = null;

            filterSQLViewModel = null;

            // Read filter
            Quest.Functional.MasterPricing.Filter filter = null;
            FilterMgr filterMgr = new FilterMgr(this.UserSession);

            status = filterMgr.GetFilter(filterId, out filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Transfer model
            filterSQLViewModel = new FilterSQLViewModel();
            BufferMgr.TransferBuffer(filter, filterSQLViewModel);


            if (string.IsNullOrEmpty(filterSQLViewModel.SQL))
            {
                return(new questStatus(Severity.Warning, "Filter has no SQL"));
            }

            return(new questStatus(Severity.Success));
        }
        /*==================================================================================================================================
        * Public Methods
        *=================================================================================================================================*/
        public questStatus PerformBulkUpdate(BulkUpdateRequest bulkUpdateRequest, out int numRows)
        {
            // Initialize
            questStatus status = null;

            numRows = -1;

            // Get the filter
            Filter    filter    = null;
            FilterId  filterId  = new FilterId(bulkUpdateRequest.FilterId);
            FilterMgr filterMgr = new FilterMgr(this.UserSession);

            status = filterMgr.GetFilter(filterId, out filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            bulkUpdateRequest.Filter = filter;



            // Determine if bulk update filter procedure exists.
            FilterProcedure filterProcedure = null;

            status = _dbBulkUpdateMgr.GetFilterProcedure(bulkUpdateRequest, "Update", out filterProcedure);
            if (!questStatusDef.IsSuccessOrWarning(status))
            {
                return(status);
            }

            //  Perform bulk update filter procedure if exists.
            if (questStatusDef.IsSuccess(status))
            {
                return(PerformBulkUpdateFilterProcedure(bulkUpdateRequest, filterProcedure));
            }



            // Generate the SQL
            status = _dbBulkUpdateMgr.GenerateBulkUpdateSQL(bulkUpdateRequest);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }


            // Perform bulk update.
            status = _dbBulkUpdateMgr.PerformBulkUpdate(bulkUpdateRequest, out numRows);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            return(new questStatus(Severity.Success));
        }
        public questStatus Read(FilterId filterId, out FilterEditorViewModel filterEditorViewModel)
        {
            // Initialize
            questStatus status = null;

            filterEditorViewModel = null;


            // Read filter
            Quest.Functional.MasterPricing.Filter filter = null;
            FilterMgr filterMgr = new FilterMgr(this.UserSession);

            status = filterMgr.GetFilter(filterId, out filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Transfer model
            filterEditorViewModel = new FilterEditorViewModel();
            BufferMgr.TransferBuffer(filter, filterEditorViewModel);
            foreach (FilterTable filterTable in filter.FilterTableList)
            {
                BootstrapTreenodeViewModel bootstrapTreenodeViewModel = null;
                status = FormatBootstrapTreeviewNode(filterTable, out bootstrapTreenodeViewModel);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                filterEditorViewModel.Entities.Add(bootstrapTreenodeViewModel);
            }
            foreach (FilterView filterView in filter.FilterViewList)
            {
                BootstrapTreenodeViewModel bootstrapTreenodeViewModel = null;
                status = FormatBootstrapTreeviewNode(filterView, out bootstrapTreenodeViewModel);
                if (!questStatusDef.IsSuccess(status))
                {
                    return(status);
                }
                filterEditorViewModel.Entities.Add(bootstrapTreenodeViewModel);
            }
            foreach (FilterItem filterItem in filter.FilterItemList)
            {
                FilterItemViewModel filterItemViewModel = new FilterItemViewModel();
                filterItemViewModel.Id = filterItem.Id;
                ////filterItemViewModel.Name = filterItem.TablesetColumn.Name;
                filterItemViewModel.Name                     = filterItem.FilterColumn.TablesetColumn.Column.Name;
                filterItemViewModel.Label                    = filterItem.Label;
                filterItemViewModel.ParameterName            = filterItem.ParameterName;
                filterItemViewModel.bHidden                  = filterItem.bHidden;
                filterItemViewModel.bBulkUpdateValueRequired = filterItem.bBulkUpdateValueRequired;

                filterItemViewModel.Entity.type   = "column"; // TODO: ALL THAT'S SUPPORTED RIGHT NOW.
                filterItemViewModel.Entity.Schema = null;
                filterItemViewModel.Entity.Name   = filterItem.FilterColumn.TablesetColumn.Column.Name;
                BufferMgr.TransferBuffer(filterItem.FilterColumn.TablesetColumn.Column, filterItemViewModel.Entity.Column);

                filterItemViewModel.ParentEntity.type   = filterItem.FilterColumn.ParentEntityType.type;
                filterItemViewModel.ParentEntity.Schema = filterItem.FilterColumn.ParentEntityType.Schema;
                filterItemViewModel.ParentEntity.Name   = filterItem.FilterColumn.ParentEntityType.Name;



                // Joins
                foreach (FilterItemJoin filterItemJoin in filterItem.JoinList)
                {
                    FilterItemJoinViewModel filterItemJoinViewModel = new FilterItemJoinViewModel();
                    BufferMgr.TransferBuffer(filterItemJoin, filterItemJoinViewModel);
                    filterItemJoinViewModel.Identifier = '[' + filterItemJoin.TargetSchema + "].[" + filterItemJoin.TargetEntityName + "].[" + filterItemJoin.TargetColumnName + "]";
                    filterItemViewModel.Joins.Add(filterItemJoinViewModel);
                }


                // Operations
                foreach (FilterOperation filterOperation in filterItem.OperationList)
                {
                    FilterOperationViewModel filterOperationViewModel = new FilterOperationViewModel();
                    filterOperationViewModel.Id       = filterOperation.Id;
                    filterOperationViewModel.Operator = filterOperation.FilterOperatorId;

                    // Views
                    foreach (FilterValue filterValue in filterOperation.ValueList)
                    {
                        FilterValueViewModel filterValueViewModel = new FilterValueViewModel();
                        filterValueViewModel.Id    = filterValue.Id;
                        filterValueViewModel.Value = filterValue.Value;
                        filterOperationViewModel.Values.Add(filterValueViewModel);
                    }
                    filterItemViewModel.Operations.Add(filterOperationViewModel);
                }

                // Lookup
                if (filterItem.LookupId.HasValue)
                {
                    FilterItemLookupViewModel filterItemLookupViewModel = new FilterItemLookupViewModel();
                    filterItemLookupViewModel.Id   = filterItem.Lookup.Id;
                    filterItemLookupViewModel.Name = filterItem.Lookup.Name;
                    filterItemViewModel.Lookup     = filterItemLookupViewModel;
                }

                // TypeList
                if (filterItem.TypeListId.HasValue)
                {
                    FilterItemTypeListViewModel filterItemTypeListViewModel = new FilterItemTypeListViewModel();
                    filterItemTypeListViewModel.Id   = filterItem.TypeList.Id;
                    filterItemTypeListViewModel.Name = filterItem.TypeList.Name;
                    filterItemViewModel.TypeList     = filterItemTypeListViewModel;
                }

                filterEditorViewModel.Items.Add(filterItemViewModel);
            }

            foreach (FilterProcedure filterProcedure in filter.FilterProcedureList)
            {
                FilterProcedureViewModel filterProcedureViewModel = new FilterProcedureViewModel();
                BufferMgr.TransferBuffer(filterProcedure, filterProcedureViewModel);
                foreach (FilterProcedureParameter filterProcedureParameter in filterProcedure.ParameterList)
                {
                    FilterProcedureParameterViewModel filterProcedureParameterViewModel = new FilterProcedureParameterViewModel();
                    BufferMgr.TransferBuffer(filterProcedureParameter, filterProcedureParameterViewModel, true);
                    filterProcedureParameterViewModel.Precision = filterProcedureParameter.Precision[0];
                    filterProcedureParameterViewModel.Scale     = filterProcedureParameter.Scale[0];
                    filterProcedureViewModel.Parameters.Add(filterProcedureParameterViewModel);
                }
                filterEditorViewModel.Procedures.Add(filterProcedureViewModel);
            }

            return(new questStatus(Severity.Success));
        }
示例#4
0
        public questStatus Run(FilterRunViewModel filterRunViewModel, out FilterRunViewModel filterRunResultsViewModel, out ResultsSet resultsSet)
        {
            // Initialize
            questStatus status = null;

            filterRunResultsViewModel = null;
            resultsSet = null;


            // NOTE: THIS IS FOR RUNNING A FILTER THAT IS --NOT-- IN THE DATABASE.  HOWEVER IT IS *BASED* ON A FILTER IN THE DATABASE, THUS A VALID FILTER ID MUST BE GIVEN.
            FilterMgr filterMgr = new FilterMgr(this.UserSession);


            // Get the filter
            FilterId filterId = new FilterId(filterRunViewModel.FilterId);

            Quest.Functional.MasterPricing.Filter filterFROMDatabase = null;
            status = filterMgr.GetFilter(filterId, out filterFROMDatabase);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Merge view model into filter from database.
            Quest.Functional.MasterPricing.Filter filter = null;
            status = MergeFilterEditorViewModel(filterRunViewModel, filterFROMDatabase, out filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Verify the filter
            status = filterMgr.Verify(filter);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }


            // Generate filter SQL
            Quest.Functional.MasterPricing.Filter filterWithSQL = null;
            status = filterMgr.GenerateFilterSQL(filter, out filterWithSQL);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Run the filter
            RunFilterRequest runFilterRequest = new RunFilterRequest();  // Filter Id doesn't matter, non-DB filter run request.

            runFilterRequest.RowLimit = filterRunViewModel._ResultsOptions.RowLimit;
            runFilterRequest.ColLimit = filterRunViewModel._ResultsOptions.ColLimit;
            status = filterMgr.Run(runFilterRequest, filterWithSQL, out resultsSet);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Transfer results to view model.
            status = TransferResults(resultsSet, out filterRunResultsViewModel);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            if (string.IsNullOrEmpty(filterRunViewModel.Name))
            {
                filterRunResultsViewModel.Name = filterFROMDatabase.Name;
            }
            return(new questStatus(Severity.Success));
        }