public ActionResult Cancel(TypeListEditorViewModel editorViewModel)
        {
            questStatus status = null;

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

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Direct user to list
            *---------------------------------------------------------------------------------------------------------------------------------*/
            return(RedirectToAction("Index", "TypeLists", PropagateQueryString(Request)));
        }
        public questStatus Read(TypeListId typeListId, out TypeListEditorViewModel typeListEditorViewModel)
        {
            // Initialize
            questStatus status = null;

            typeListEditorViewModel = null;


            // Read
            Quest.Functional.MasterPricing.TypeList typeList = null;
            TypeListsMgr typeListsMgr = new TypeListsMgr(this.UserSession);

            status = typeListsMgr.Read(typeListId, out typeList);
            if (!questStatusDef.IsSuccess(status))
            {
                return(status);
            }

            // Transfer model.
            typeListEditorViewModel = new TypeListEditorViewModel(this.UserSession);
            BufferMgr.TransferBuffer(typeList, typeListEditorViewModel);



            return(new questStatus(Severity.Success));
        }
        public ActionResult Read(TypeListEditorViewModel editorViewModel)
        {
            questStatus        status             = null;
            UserMessageModeler userMessageModeler = null;

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Authorize
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = Authorize(editorViewModel._ctx);
            if (!questStatusDef.IsSuccess(status))
            {
                userMessageModeler = new UserMessageModeler(status);
                return(Json(userMessageModeler, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            TypeListId typeListId = new TypeListId(editorViewModel.Id);
            TypeListEditorViewModel typeListEditorViewModel = null;
            TypeListEditorModeler   typeListEditorModeler   = new Modelers.TypeListEditorModeler(this.Request, this.UserSession);

            status = typeListEditorModeler.Read(typeListId, out typeListEditorViewModel);
            if (!questStatusDef.IsSuccess(status))
            {
                userMessageModeler = new UserMessageModeler(status);
                return(Json(userMessageModeler, JsonRequestBehavior.AllowGet));
            }

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = new questStatus(Severity.Success);
            typeListEditorViewModel.questStatus = status;
            return(Json(typeListEditorViewModel, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Delete(TypeListEditorViewModel typeListEditorViewModel)
        {
            questStatus status = null;

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

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Perform operation.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            TypeListId            typeListId            = new TypeListId(typeListEditorViewModel.Id);
            TypeListEditorModeler typeListEditorModeler = new TypeListEditorModeler(this.Request, this.UserSession);

            status = typeListEditorModeler.Delete(typeListId);
            if (!questStatusDef.IsSuccess(status))
            {
                typeListEditorViewModel.questStatus = status;
                return(Json(typeListEditorViewModel, JsonRequestBehavior.AllowGet));
            }

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

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

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

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

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return result.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            status = new questStatus(Severity.Success, "TypeList successfully" + (bInitialCreation ? " created" : " updated"));
            typeListEditorViewModel.questStatus = status;
            return(Json(typeListEditorViewModel, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Index(TypeListEditorViewModel editorViewModel)
        {
            questStatus status = null;

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

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

            /*----------------------------------------------------------------------------------------------------------------------------------
            * Return view.
            *---------------------------------------------------------------------------------------------------------------------------------*/
            TypeListEditorViewModel typeListEditorViewModel = new TypeListEditorViewModel(this.UserSession, editorViewModel);

            typeListEditorViewModel.Id = editorViewModel.Id;
            if (editorViewModel.Id >= BaseId.VALID_ID)
            {
                typeListEditorViewModel.questStatus = new questStatus(Severity.Warning);
            }
            else
            {
                typeListEditorViewModel.questStatus = new questStatus(Severity.Success);
            }
            return(View(typeListEditorViewModel));
        }
        /*==================================================================================================================================
        * Public Methods
        *=================================================================================================================================*/

        #region CRUD
        //----------------------------------------------------------------------------------------------------------------------------------
        // CRUD
        //----------------------------------------------------------------------------------------------------------------------------------
        public questStatus Save(TypeListEditorViewModel typeListEditorViewModel)
        {
            // Initialize
            questStatus status = null;


            // Transfer model
            Quest.Functional.MasterPricing.TypeList typeList = new Functional.MasterPricing.TypeList();
            BufferMgr.TransferBuffer(typeListEditorViewModel, typeList);


            // Determine if this is a create or update
            TypeListsMgr typeListsMgr = new TypeListsMgr(this.UserSession);

            if (typeListEditorViewModel.Id < BaseId.VALID_ID)
            {
                // Create
                TypeListId typeListId = null;
                status = typeListsMgr.Create(typeList, out typeListId);
                if (!questStatusDef.IsSuccess(status))
                {
                    FormatErrorMessage(status, typeListEditorViewModel);
                    return(status);
                }
                typeListEditorViewModel.Id = typeListId.Id;
            }
            else
            {
                // Update
                status = typeListsMgr.Update(typeList);
                if (!questStatusDef.IsSuccess(status))
                {
                    FormatErrorMessage(status, typeListEditorViewModel);
                    return(status);
                }
            }
            return(new questStatus(Severity.Success));
        }