/** * 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))); } }