/**
  * Exports team employee leaves in iCalendar format
  *
  * @Route("/secured/calendar/team/leaves/export", name="OpitOpitHrmLeaveBundle_calendar_team_leaves_export")
  * @Method({"POST"})
  * @Secure(roles="ROLE_USER")
  * @Template()
  */
 public function exportTeamEmployeeLeavesAction(Request $request)
 {
     $entityManager = $this->getDoctrine()->getManager();
     $securityContext = $this->container->get('security.context');
     $employee = $securityContext->getToken()->getUser()->getEmployee();
     $statusManager = $this->get('opit.manager.leave_status_manager');
     $teamsEmployees = $this->getTeamsEmployees($employee, $request->request->get('team'));
     // get all approved leave requests employees are in
     $leaveRequests = $entityManager->getRepository('OpitOpitHrmLeaveBundle:LeaveRequest')->findEmployeesLeaveRequests($teamsEmployees, $request->request->get('start'), $request->request->get('end'), Status::APPROVED);
     $iCal = new ICal\ICalendar();
     // loop through all leave requests
     foreach ($leaveRequests as $leaveRequest) {
         // loop through all leave request leaves
         $employee = $leaveRequest->getEmployee();
         $currentStatus = $statusManager->getCurrentStatusMetaData($leaveRequest);
         foreach ($leaveRequest->getLeaves() as $leave) {
             $iCalEvent = new ICal\ICalendarEvent();
             $iCalEvent->setDtStamp($currentStatus->getCreated());
             $iCalEvent->setSummary(ucwords($employee->getEmployeeName()) . ' - ' . $leave->getCategory()->getName());
             $iCalEvent->setDtStart($leave->getStartDate());
             $iCalEvent->setDtEnd($leave->getEndDate());
             $iCalEvent->addCategory($leave->getCategory()->getName());
             $iCal->addEvent($iCalEvent);
         }
     }
     $iCalContent = $iCal->render();
     $filename = Utils::sanitizeString($this->container->getParameter('application_name') . '-' . $request->request->get('title')) . '.ics';
     $response = new Response();
     $response->headers->set('Cache-Control', 'private');
     $response->headers->set('Content-type', 'text/calendar');
     $response->headers->set('Content-Disposition', 'attachment; filename="' . $filename . '";');
     $response->headers->set('Content-Transfer-Encoding', 'binary');
     $response->headers->set('Content-length', strlen(utf8_decode($iCalContent)));
     $response->sendHeaders();
     $response->setContent($iCalContent);
     return $response;
 }
Exemple #2
0
 public function testSanitizeString()
 {
     $input = "Opit-HRM - December 2014";
     $result = Utils::sanitizeString($input);
     $this->assertEquals('opit-hrm-december2014', $result, 'Utils::sanitizeString Content does not match.');
     $input2 = "Opit-HRM  Sven Henneböle - December ?! 2014";
     $result2 = Utils::sanitizeString($input2);
     $this->assertEquals('opit-hrmsvenhenneble-december2014', $result2, 'Utils::sanitizeString Content including special chars does not match.');
 }