Created
October 5, 2016 15:43
-
-
Save ermst4r/72cbdd4521e4d0172660fe3122dad5df to your computer and use it in GitHub Desktop.
Taak
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| namespace tasks; | |
| use enum\TaskTimes; | |
| use models\general\AdvertiserTask; | |
| use models\general\AdvertiserTaskQuery; | |
| use models\general\CampaignSignup; | |
| use models\general\CampaignTaskQuery; | |
| use models\general\Cap; | |
| use models\general\QuestionTask; | |
| use models\general\QuestionTaskQuery; | |
| /** | |
| * Class Task | |
| * @package tasks | |
| */ | |
| class Task { | |
| /** | |
| * @var null | |
| */ | |
| protected $campaign_id; | |
| /** | |
| * @var | |
| */ | |
| protected $person_id; | |
| /** | |
| * @var | |
| */ | |
| protected $advertiser_id; | |
| /** | |
| * @var array | |
| */ | |
| protected $params; | |
| /** | |
| * @param null $campaign_id | |
| * @param null $person_id | |
| * @param null $advertiser_id | |
| * @param array $options | |
| */ | |
| public function __construct($campaign_id = null, $person_id = null, $advertiser_id = null, $options = []) { | |
| $this->campaign_id = $campaign_id; | |
| $this->person_id = $person_id; | |
| $this->advertiser_id = $advertiser_id; | |
| $this->options = $options; | |
| } | |
| /** | |
| * | |
| * Returns a list of the available Tasks | |
| * | |
| * @return array | |
| */ | |
| public static function listTasks() { | |
| $tasks = []; | |
| $excludes = ['.', '..', 'iTask.php', 'Task.php']; | |
| $dir = __DIR__; | |
| $dh = opendir($dir); | |
| $files = []; | |
| while (false !== ($filename = readdir($dh))) { | |
| if (!in_array($filename, $excludes)) { | |
| $files[] = $filename; | |
| } | |
| } | |
| foreach ($files as $filename) { | |
| $tasks[] = basename($filename, ".php"); | |
| } | |
| return $tasks; | |
| } | |
| /** | |
| * | |
| * This method is called when a new signup is done. It enqueue's all tasks that need to be done. | |
| * | |
| * @param $campaign_id | |
| * @param $person_id | |
| */ | |
| public static function enqueueNewSignupTasks($campaign_id, $person_id) { | |
| $tasks = []; | |
| // Taken ophalen die specifiek aan deze campagne zijn gekoppeld | |
| $campaign_tasks = CampaignTaskQuery::getForExecutionTime($campaign_id, TaskTimes::NEW_SIGNUP); | |
| $tasks = array_merge($tasks, self::prepareCampaignTasks($campaign_tasks, $person_id)); | |
| // Taken ophalen die specifiek bij adverteerders horen die aan deze campagne hangen | |
| $advertiser_tasks = AdvertiserTaskQuery::getForExecutionTime($campaign_id, TaskTimes::NEW_SIGNUP); | |
| $tasks = array_merge($tasks, self::prepareAdvertiserTasks($advertiser_tasks, $campaign_id, $person_id)); | |
| self::enqueueTasks($tasks); | |
| } | |
| /** | |
| * @param Cap $cap | |
| */ | |
| public static function enqueueCapReachedTasks(Cap $cap) { | |
| $tasks = []; | |
| // Standaard taken die altijd moeten worden gedaan | |
| // Mail sturen om aan te geven dat een cap bereikt is | |
| // $task = new TestTask(); | |
| // $tasks[] = $task; | |
| $mailTask = new CapReachedMail(null, null, null, ['cap_id' => $cap->getId()]); | |
| $tasks[] = $mailTask; | |
| // Taken ophalen die specifiek bij adverteerders horen die aan deze campagne hangen | |
| $advertiser_tasks = AdvertiserTaskQuery::getForCapReachedTime($cap->getAdvertiserId()); | |
| $tasks = array_merge($tasks, self::prepareAdvertiserTasks($advertiser_tasks, null, null)); | |
| self::enqueueTasks($tasks); | |
| } | |
| /** | |
| * @param $signup | |
| */ | |
| public static function enqueueEmailConfirmedTasks(CampaignSignup $signup) { | |
| $tasks = []; | |
| $campaign_id = $signup->getCampaignId(); | |
| $person_id = $signup->getPersonId(); | |
| // Taken ophalen die specifiek aan deze campagne zijn gekoppeld | |
| $campaign_tasks = CampaignTaskQuery::getForExecutionTime($campaign_id, TaskTimes::EMAIL_CONFIRM); | |
| $tasks = array_merge($tasks, self::prepareCampaignTasks($campaign_tasks, $person_id)); | |
| // Taken ophalen die specifiek bij adverteerders horen die aan deze campagne hangen | |
| $advertiser_tasks = AdvertiserTaskQuery::getForExecutionTime($campaign_id, TaskTimes::EMAIL_CONFIRM); | |
| $tasks = array_merge($tasks, self::prepareAdvertiserTasks($advertiser_tasks, $campaign_id, $person_id)); | |
| self::enqueueTasks($tasks); | |
| } | |
| /** | |
| * @param $question_ids | |
| * @param $person_id | |
| * @param $campaign_id | |
| */ | |
| public static function enqueueQuestionsAnsweredTasks($question_ids, $person_id, $campaign_id) { | |
| $tasks = []; | |
| $question_tasks = QuestionTaskQuery::create() | |
| ->filterByQuestionId($question_ids) | |
| ->filterByActive(true) | |
| ->find(); | |
| $tasks = array_merge($tasks, self::prepareQuestionTasks($question_tasks, $campaign_id, $person_id)); | |
| self::enqueueTasks($tasks); | |
| } | |
| /** | |
| * @param $campaign_tasks | |
| * @param $person_id | |
| * @return array | |
| */ | |
| private static function prepareCampaignTasks($campaign_tasks, $person_id) { | |
| $tasks = []; | |
| foreach ($campaign_tasks as $campaign_task) { | |
| try { | |
| $task = $campaign_task->prepare($person_id); | |
| $tasks[] = $task; | |
| } catch (\Exception $e) { | |
| // TODO: kunnen hier iets doen, maar prepare logged zelf ook, en rethrowed. | |
| } | |
| } | |
| return $tasks; | |
| } | |
| /** | |
| * @param $advertiser_tasks | |
| * @param $campaign_id | |
| * @param $person_id | |
| * @return array | |
| */ | |
| private static function prepareAdvertiserTasks($advertiser_tasks, $campaign_id, $person_id) { | |
| $tasks = []; | |
| foreach ($advertiser_tasks as $advertiser_task) { | |
| try { | |
| /* @var $advertiser_task AdvertiserTask */ | |
| $task = $advertiser_task->prepare($campaign_id, $person_id); | |
| $tasks[] = $task; | |
| } catch (\Exception $e) { | |
| // TODO: kunnen hier iets doen, maar prepare logged zelf ook, en rethrowed. | |
| } | |
| } | |
| return $tasks; | |
| } | |
| /** | |
| * @param $question_tasks | |
| * @param $campaign_id | |
| * @param $person_id | |
| * @return array | |
| */ | |
| private static function prepareQuestionTasks($question_tasks, $campaign_id, $person_id) { | |
| $tasks = []; | |
| foreach ($question_tasks as $question_task) { | |
| /* @var $question_task QuestionTask */ | |
| try { | |
| $task = $question_task->prepare($campaign_id, $person_id); | |
| if ($task instanceof Task) { | |
| $tasks[] = $task; | |
| } | |
| } catch (\Exception $e) { | |
| // TODO: kunnen hier iets doen, maar prepare logged zelf ook, en rethrowed. | |
| } | |
| } | |
| return $tasks; | |
| } | |
| /** | |
| * @param $tasks | |
| */ | |
| private static function enqueueTasks($tasks) { | |
| // Alle taken enqueuen | |
| foreach ($tasks as $task) { | |
| if ($task instanceof Task) { | |
| $task->enqueue(); | |
| } | |
| } | |
| } | |
| } | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment