public questStatus List(QueryOptions queryOptions, out PrivilegesListViewModel privilegesListViewModel)
        {
            // Initialize
            questStatus status = null;

            privilegesListViewModel = null;


            // List
            QueryResponse queryResponse = null;
            List <Quest.Functional.ASM.Privilege> privilegeList = null;
            PrivilegesMgr privilegesMgr = new PrivilegesMgr(this.UserSession);

            status = privilegesMgr.List(queryOptions, out privilegeList, out queryResponse);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Sort
            privilegeList.Sort(delegate(Quest.Functional.ASM.Privilege i1, Quest.Functional.ASM.Privilege i2) { return(i1.Name.CompareTo(i2.Name)); });


            // Transfer model.
            // TODO: USE BaseListModeler to xfer queryOptions to QueryOptionsViewModel.
            privilegesListViewModel = new PrivilegesListViewModel(this.UserSession);
            QueryResponseViewModel queryResponseViewModel = null;

            status = TransferQueryResponse(queryResponse, out queryResponseViewModel);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }
            privilegesListViewModel.QueryResponse = queryResponseViewModel;
            foreach (Quest.Functional.ASM.Privilege privilege in privilegeList)
            {
                PrivilegeLineItemViewModel privilegeLineItemViewModel = new PrivilegeLineItemViewModel();
                BufferMgr.TransferBuffer(privilege, privilegeLineItemViewModel);
                privilegesListViewModel.Items.Add(privilegeLineItemViewModel);
            }
            return(new questStatus(Severity.Success));
        }
        public questStatus Page(out PrivilegesListViewModel privilegesListViewModel)
        {
            // Initialize
            questStatus status = null;

            privilegesListViewModel = null;


            // Set up query options.
            // TEMPORARY: OPTIMIZE THIS
            List <SearchField> searchFieldList = new List <SearchField>();

            SearchOptions searchOptions = new SearchOptions();

            searchOptions.SearchFieldList = searchFieldList;

            QueryOptions queryOptions = new QueryOptions(100, 1);

            queryOptions.SearchOptions = searchOptions;
            QueryResponse queryResponse = null;


            // List
            List <Quest.Functional.ASM.Privilege> privilegeList = null;
            PrivilegesMgr privilegesMgr = new PrivilegesMgr(this.UserSession);

            status = privilegesMgr.List(queryOptions, out privilegeList, out queryResponse);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Transfer model.
            privilegesListViewModel = new PrivilegesListViewModel(this.UserSession);
            foreach (Quest.Functional.ASM.Privilege privilege in privilegeList)
            {
                PrivilegeLineItemViewModel privilegeLineItemViewModel = new PrivilegeLineItemViewModel();
                BufferMgr.TransferBuffer(privilege, privilegeLineItemViewModel);
                privilegesListViewModel.Items.Add(privilegeLineItemViewModel);
            }
            return(new questStatus(Severity.Success));
        }