public ActionResult Delete(PrivilegeEditorViewModel privilegeEditorViewModel)
        {
            questStatus status = null;

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Log Operation
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = LogOperation();
            if (!questStatusDef.IsSuccess(status))
            {
                // TODO
                throw new Exception("LogOperation failed");
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Authorize
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = Authorize(privilegeEditorViewModel._ctx);
            if (!questStatusDef.IsSuccess(status))
            {
                // TODO
                throw new Exception("Authorize failed");
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            PrivilegeId            privilegeId            = new PrivilegeId(privilegeEditorViewModel.Id);
            PrivilegeEditorModeler privilegeEditorModeler = new PrivilegeEditorModeler(this.Request, this.UserSession);

            status = privilegeEditorModeler.Delete(privilegeId);
            if (!questStatusDef.IsSuccess(status))
            {
                privilegeEditorViewModel.questStatus = status;
                return(Json(privilegeEditorViewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = new questStatus(Severity.Success, "Privilege successfully deleted");
            privilegeEditorViewModel.questStatus = status;
            return(Json(privilegeEditorViewModel, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Save(PrivilegeEditorViewModel privilegeEditorViewModel)
        {
            questStatus status = null;

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

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            bool bInitialCreation = privilegeEditorViewModel.Id < BaseId.VALID_ID ? true : false;
            PrivilegeEditorModeler privilegeEditorModeler = new PrivilegeEditorModeler(this.Request, this.UserSession);

            status = privilegeEditorModeler.Save(privilegeEditorViewModel);
            if (!questStatusDef.IsSuccess(status))
            {
                privilegeEditorViewModel.questStatus = status;
                return(Json(privilegeEditorViewModel, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = new questStatus(Severity.Success, "Privilege successfully" + (bInitialCreation ? " created" : " updated"));
            privilegeEditorViewModel.questStatus = status;
            return(Json(privilegeEditorViewModel, JsonRequestBehavior.AllowGet));
        }