public static function prepareMessage(License $license, DrillSchemaEvent $event, $recipients, $bcc = null) { $html = $event->getEmailTemplate(); $subject = $event->getEmailSubject(); self::replaceTemplateVariables($html, $license); self::replaceTemplateVariables($subject, $license); $message = ['subject' => $subject, 'from_email' => $event->getEmailFromEmail(), 'from_name' => $event->getEmailFromName(), 'to' => $recipients, 'html' => $html]; if ($bcc) { $message['bcc_address'] = $bcc; } return $message; }
/** * @param DrillSchemaEvent $drillSchemaEvent * @param License $license * * @return \DateTime */ private function calculateSendDate(DrillSchemaEvent $drillSchemaEvent, License $license) { $shift = $drillSchemaEvent->getDateShift(); if ('startDate' == $drillSchemaEvent->getDateField()) { $direction = '+'; $licenseDate = $license->getStartDate(); } else { // endDate, negative shift $direction = '-'; $licenseDate = $license->getEndDate(); } $sendDate = new \DateTime(); $sendDate->setTimestamp($licenseDate->getTimestamp()); $sendDate->modify($direction . $shift . ' days'); return $sendDate; }
public function testScheduler() { $drillSchemaEvent = new DrillSchemaEvent(); $drillSchemaEvent->setName('some')->setDateShift('+2')->setDateField('startDate')->setLicenseTypeCondition('EVALUATION')->setAddonKey('some.addon')->setEmailTemplate('some')->setEmailSubject('some')->setEmailFromEmail('some')->setEmailFromName('some'); $license = LicenseFactory::createLicense('SEN-111111', 'EVALUATION', 'Agile Values', 'Planning Poker', 'some.addon', 'Vitaliy Zurian', '*****@*****.**', '+49178 174 147 4', null, '+1 months'); $this->em->persist($drillSchemaEvent); $this->em->persist($license); $this->em->flush(); $scheduler = new Scheduler($this->em); // Asserting that events and schemas were created $scheduler->schedule(); $drillRegisteredSchemas = $this->em->getRepository('AppBundle:DrillRegisteredSchema')->findAll(); $drillRegisteredEvents = $this->em->getRepository('AppBundle:DrillSchemaEvent')->findAll(); $this->assertCount(1, $drillRegisteredSchemas); $this->assertCount(1, $drillRegisteredEvents); // Asserting that no consequent events and schemas were created for the same add-on $scheduler->schedule(); $drillRegisteredSchemas = $this->em->getRepository('AppBundle:DrillRegisteredSchema')->findAll(); $drillRegisteredEvents = $this->em->getRepository('AppBundle:DrillSchemaEvent')->findAll(); $this->assertCount(1, $drillRegisteredSchemas); $this->assertCount(1, $drillRegisteredEvents); }