internal static Workflow UpdateWorkflow(Workflow workflow)
            {
                Workflow wflow = new Workflow();

                if (workflow.ID == 0)
                {
                    wflow.Description = workflow.Description;
                    wflow.IsDeleted   = workflow.IsDeleted;
                    wflow.Name        = workflow.Name;
                    wflow.CreatedBy   = workflow.CreatedBy;
                    wflow.CreatedOn   = workflow.CreatedOn;
                    wflow.PortalID    = workflow.PortalID;
                    wflow.Revisions   = 5;
                    wflow.Insert();
                    UpdateWorkflowState(new WorkflowState {
                        WorkflowID = wflow.ID, IsActive = true, Name = "Draft", Notify = true, Order = 1
                    });
                    WorkflowState wState = UpdateWorkflowState(new WorkflowState {
                        WorkflowID = wflow.ID, IsActive = true, Name = "Ready for Review", Notify = true, Order = 2
                    });
                    if (wState != null)
                    {
                        DNNModulePermissionInfo DnnPermissionInfo = Vanjaro.Common.Manager.PermissionManager.GetPermissionInfo(PageWorkflowPermission.PERMISSION_CODE).Where(p => p.PermissionKey == PageWorkflowPermission.PERMISSION_REVIEWCONTENT).FirstOrDefault();
                        WorkflowStatePermission statePerm         = new WorkflowStatePermission
                        {
                            StateID      = wState.StateID,
                            PermissionID = DnnPermissionInfo.PermissionID,
                            AllowAccess  = true
                        };
                        int PortalID = workflow.PortalID.HasValue ? workflow.PortalID.Value : PortalSettings.Current.PortalId;
                        statePerm.RoleID    = RoleController.Instance.GetRoleByName(PortalID, "Administrators").RoleID;
                        statePerm.UserID    = null;
                        statePerm.CreatedBy = workflow.CreatedBy;
                        statePerm.CreatedOn = workflow.CreatedOn;
                        statePerm.UpdatedBy = workflow.CreatedBy;
                        statePerm.UpdatedOn = workflow.CreatedOn;
                        statePerm.Insert();
                    }
                    UpdateWorkflowState(new WorkflowState {
                        WorkflowID = wflow.ID, IsActive = true, Name = "Published", Notify = true, Order = 3
                    });
                }
                else
                {
                    wflow = GetWorkflowbyID(workflow.ID);
                    if (wflow != null)
                    {
                        wflow.Description = workflow.Description;
                        wflow.IsDeleted   = workflow.IsDeleted;
                        wflow.Name        = workflow.Name;
                        wflow.CreatedBy   = wflow.CreatedBy;
                        wflow.CreatedOn   = wflow.CreatedOn;
                        wflow.DeletedBy   = workflow.DeletedBy;
                        wflow.DeletedOn   = workflow.DeletedOn;
                        wflow.Revisions   = workflow.Revisions;
                        wflow.PortalID    = wflow.ID == 1 ? null : workflow.PortalID;
                        wflow.Update();
                    }
                }
                CacheFactory.Clear(CacheFactory.Keys.Workflow);
                return(wflow);
            }