/**
  * Edit or build a report.
  *
  * @param Calendar $calendar
  * @param Report   $report
  *
  * @return Report $report
  */
 public function build(Calendar $calendar, Report $report = null)
 {
     if (null === $report) {
         $report = new Report();
     }
     /** @var JobCalendar $jobCalendar */
     foreach ($calendar->getJobCalendars() as $jobCalendar) {
         $month = (int) $jobCalendar->getDate()->format('m');
         $year = (int) $jobCalendar->getDate()->format('Y');
         $job = $jobCalendar->getJob();
         $jobReportYear = $report->getJobReportYear($year);
         $jobReportMonth = $jobReportYear->getMonth($month);
         $jobReportRow = $jobReportMonth->getRow($job->getCode(), $job->getTitle(), $job->getDuration());
         $jobReportRow->add();
     }
     $report->update();
     return $report;
 }
 /**
  * @param Calendar $calendar
  *
  * @return Response
  *
  * @Route("/{id}/jobs", name="app_v0_calendars_jobcalendars", methods="GET")
  */
 public function getJobCalendarsAction(Calendar $calendar)
 {
     $transformer = $this->get('app.transformer.job_calendar');
     return new Response($this->get('serializer')->serialize($transformer->entitiesToModel($calendar->getJobCalendars()->toArray()), 'json'), Response::HTTP_OK, ['content-type' => 'application/json']);
 }