/** * @param Workflow $workflow * @param EmailMessageForWorkflowForm $emailMessage * @param RedBeanModel $model * @param User $triggeredByUser * @throws FailedToSaveModelException */ protected static function processEmailMessageAfterSave(Workflow $workflow, EmailMessageForWorkflowForm $emailMessage, RedBeanModel $model, User $triggeredByUser) { if ($emailMessage->sendAfterDurationInterval == 0) { $helper = new WorkflowEmailMessageProcessingHelper($emailMessage, $model, $triggeredByUser); $helper->process(); } else { $emailMessageData = SavedWorkflowToWorkflowAdapter::makeArrayFromEmailMessageForWorkflowFormAttributesData(array($emailMessage)); $workflowMessageInQueue = new WorkflowMessageInQueue(); $workflowMessageInQueue->processDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime($emailMessage->resolveNewTimeStampForDuration(time())); $workflowMessageInQueue->savedWorkflow = SavedWorkflow::getById((int) $workflow->getId()); $workflowMessageInQueue->modelClassName = get_class($model); $workflowMessageInQueue->modelItem = $model; $workflowMessageInQueue->serializedData = serialize($emailMessageData); $workflowMessageInQueue->triggeredByUser = $triggeredByUser; $saved = $workflowMessageInQueue->save(); if (!$saved) { throw new FailedToSaveModelException(); } } }
public function testResolveNewTimeStampForDuration() { $message = new EmailMessageForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE); $message->sendAfterDurationInterval = 5; $message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_DAY; $this->assertEquals(5 * 24 * 60 * 60, $message->resolveNewTimeStampForDuration(0)); $message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_MINUTE; $this->assertEquals(5 * 60, $message->resolveNewTimeStampForDuration(0)); $message->sendAfterDurationInterval = 10; $this->assertEquals(10 * 60, $message->resolveNewTimeStampForDuration(0)); $message->sendAfterDurationType = TimeDurationUtil::DURATION_TYPE_HOUR; $this->assertEquals(10 * 60 * 60, $message->resolveNewTimeStampForDuration(0)); }