/**
  * Given a RedBeanModel, query workflow rules and process any beforeSave triggers for either on-save or
  * by-time workflows.  Called from @see WokflowsObserver->processWorkflowBeforeSave
  * @param Item $model
  * @param User $triggeredByUser
  * @throws NotSupportedException if the workflow type is not valid
  */
 public static function resolveBeforeSaveByModel(Item $model, User $triggeredByUser)
 {
     $savedWorkflows = SavedWorkflow::getActiveByModuleClassNameAndIsNewModel($model::getModuleClassName(), $model->getIsNewModel());
     foreach ($savedWorkflows as $savedWorkflow) {
         $workflow = SavedWorkflowToWorkflowAdapter::makeWorkflowBySavedWorkflow($savedWorkflow);
         if (WorkflowTriggersUtil::areTriggersTrueBeforeSave($workflow, $model)) {
             if ($workflow->getType() == Workflow::TYPE_BY_TIME) {
                 $model->addWorkflowToProcessAfterSave($workflow);
             } elseif ($workflow->getType() == Workflow::TYPE_ON_SAVE) {
                 WorkflowActionsUtil::processBeforeSave($workflow, $model, $triggeredByUser);
                 $model->addWorkflowToProcessAfterSave($workflow);
             } else {
                 throw new NotSupportedException();
             }
         }
     }
 }