/**
  * @param AnalyticsExport $export
  * @param array           $attachments
  */
 protected function emailAnalytic(AnalyticsExport $export, array $attachments)
 {
     /** @var EmailService $mailer */
     $mailer = $this->getContainer()->get('transformcore.phe.analytics.email');
     $subject = 'Analytic rollup for ' . $export->getStartDate()->format('d-m-Y') . ' to ' . $export->getEndDate()->format('d-m-Y');
     $body = $subject . PHP_EOL . ' Extracted ' . (new \DateTime())->format(\DateTime::ISO8601);
     $mailer->sendEmail($subject, $body, $attachments);
 }
 public function testGetSetActualDropoutCompletionAverage()
 {
     $expected = 10.395;
     $this->assertEmpty($this->instance->getActualDropoutCompletionAverage());
     $this->assertTrue(is_float($this->instance->getActualDropoutCompletionAverage()));
     $this->assertInstanceOf(AnalyticsExport::class, $this->instance->setActualDropoutCompletionAverage($expected));
     $this->assertEquals($expected, $this->instance->getActualDropoutCompletionAverage());
     $this->assertFalse(is_int($this->instance->getActualDropoutCompletionAverage()));
 }
 /**
  * @param AnalyticsExport $export
  * @return string
  */
 protected function generateFileNameAndPath(AnalyticsExport $export)
 {
     $prefix = 'daily_';
     if ($export->getEndDate()->diff($export->getStartDate())->days > 0) {
         $prefix = 'weekly_';
     }
     return $this->exportPath . DIRECTORY_SEPARATOR . $prefix . 'rollup_' . $export->getStartDate()->format('d_m_Y') . '_to_' . $export->getEndDate()->format('d_m_Y') . '_analytics.csv';
 }
 /**
  * @param AnalyticsExport $exportEntity
  * @param array $dataSet
  * @return AnalyticsExport
  */
 protected function populateExportSet(AnalyticsExport $exportEntity, array $dataSet)
 {
     $dropoutTotals = $this->extractDropoutTotals($dataSet);
     $exportEntity->setStarts($dataSet['starts'])->setCompletions($dataSet['completions'])->setGenderStartsMale($dataSet['gender_starts_male'])->setGenderStartsFemale($dataSet['gender_starts_female'])->setGenderCompletionsMale($dataSet['gender_completions_male'])->setGenderCompletionsFemale($dataSet['gender_completions_female'])->setProvidedEmailAddress($dataSet['provided_email_address'])->setProvidedPostCodes($dataSet['provided_post_codes'])->setWeightedDropoutCompletionAverage($this->calculateWeightedAverage($dropoutTotals))->setActualDropoutCompletionAverage($this->calculateActualAverage($dropoutTotals));
     return $exportEntity;
 }