/**
  * Utilized to create or update model attribute values after a workflow's triggers are fired as true.
  * @param WorkflowActionProcessingModelAdapter $adapter
  * @param $attribute
  * @throws NotSupportedException
  */
 public function resolveValueAndSetToModel(WorkflowActionProcessingModelAdapter $adapter, $attribute)
 {
     assert('is_string($attribute)');
     if ($this->type == static::TYPE_STATIC) {
         $adapter->getModel()->{$attribute} = $this->value;
     } elseif ($this->type == self::TYPE_DYNAMIC_FROM_TRIGGERED_DATE) {
         $newTimeStamp = $this->resolveNewTimeStampForDuration(time());
         $adapter->getModel()->{$attribute} = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp);
     } elseif ($this->type == self::TYPE_DYNAMIC_FROM_EXISTING_DATE) {
         if (!DateTimeUtil::isDateStringNull($adapter->getModel()->{$attribute})) {
             $existingTimeStamp = DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($adapter->getModel()->{$attribute}));
             $newTimeStamp = $this->resolveNewTimeStampForDuration($existingTimeStamp);
             $newDate = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp);
             $adapter->getModel()->{$attribute} = $newDate;
         }
     } else {
         throw new NotSupportedException();
     }
 }
 /**
  * @param TimeTriggerForWorkflowForm $trigger
  * @param RedBeanModel $model
  * @return int
  * @throws ValueForProcessDateTimeIsNullException
  */
 protected static function resolveTimeStampForDateAttributeForProcessDateTime(TimeTriggerForWorkflowForm $trigger, RedBeanModel $model)
 {
     $date = static::resolveModelValueByTimeTrigger($trigger, $model);
     if (DateTimeUtil::isDateStringNull($date)) {
         throw new ValueForProcessDateTimeIsNullException();
     } else {
         return $trigger->resolveNewTimeStampForDuration(DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($date)));
     }
 }