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 ActionResult SQL(FilterPanelViewModel viewModel)
        {
            questStatus status = null;

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Log Operation
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = LogOperation();
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Authorize
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = Authorize(viewModel._ctx);
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            FilterId            filterId            = new FilterId(viewModel.Editor.FilterId);
            FilterSQLViewModel  filterSQLViewModel  = null;
            FilterEditorModeler filterEditorModeler = new FilterEditorModeler(Request, this.UserSession, viewModel);

            status = filterEditorModeler.Read(filterId, out filterSQLViewModel);
            if (!questStatusDef.IsSuccess(status))
            {
                viewModel.questStatus = status;
                return(Json(viewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = new questStatus(Severity.Success, "Filter SQL retrieved");
            filterSQLViewModel.questStatus = status;
            return(Json(filterSQLViewModel, JsonRequestBehavior.AllowGet));
        }