Exemple #1
0
 /**
  * Test Utils::testArrayValueRecursive
  */
 public function testArrayValueRecursive()
 {
     $input = array('a' => array('findme' => 'Test a', 'other' => 'Test', 'sub' => array('findme' => 'Test b')));
     $result = Utils::arrayValueRecursive('findme', $input);
     $this->assertCount(2, $result, 'Utils::arrayValueRecursive: Count does not match.');
     $this->assertEquals(array('Test a', 'Test b'), $result, 'Utils::arrayValueRecursive: Arrays do not match.');
 }
Exemple #2
0
 /**
  * To save per diem
  *
  * @Route("/travel/admin/save/perdiem", name="OpitOpitHrmTravelBundle_admin_save_perdiem")
  * @Secure(roles="ROLE_SYSTEM_ADMIN")
  * @Template()
  */
 public function savePerDiemAction()
 {
     $request = $this->getRequest();
     $data = $request->request->all();
     $em = $this->getDoctrine()->getManager();
     $result['response'] = 'success';
     $status = null;
     //If it was a post
     if ($request->isMethod('POST')) {
         $perDiemList = $em->getRepository('OpitOpitHrmTravelBundle:TEPerDiem')->findAll();
         $ids = Utils::arrayValueRecursive('id', $data);
         // Remove per diems
         foreach ($perDiemList as $pd) {
             if (!in_array($pd->getId(), $ids)) {
                 // delete
                 $perDiem = $this->getPerDiem($pd->getId(), false);
                 $em->remove($perDiem);
                 $em->flush();
             }
         }
         if (!empty($data)) {
             // Save per diems
             foreach ($data['perdiem'] as $d) {
                 // save
                 $perDiem = $this->getPerDiem($d['id'], false);
                 $result = $this->setPerDiem($perDiem, $d);
                 if (500 === $result['status']) {
                     $status = $result['status'];
                     break;
                 }
             }
         }
     }
     return new JsonResponse(array('code' => $status, $result));
 }
Exemple #3
0
 /**
  * Method to create single leave request (own or single employee selected)
  *
  * @param \Opit\OpitHrm\LeaveBundle\Entity\LeaveRequest $leaveRequest
  * @param \Doctrine\ORM\EntityManagerInterface $entityManager
  * @param type $data
  * @param type $leftToAvail
  * @return string|null
  */
 protected function createSingleLR(LeaveRequest $leaveRequest, EntityManagerInterface $entityManager, $data, $leftToAvail, $employee, $isOwn, $children)
 {
     $leaveRequestService = $this->get('opit.model.leave_request');
     $securityContext = $this->container->get('security.context');
     $leaveRequest->setEmployee($employee);
     $totalLeaveDaysCount = 0;
     $pastLeaveCount = 0;
     foreach ($leaveRequest->getLeaves() as $leave) {
         $countLeaveDays = $leaveRequestService->countLeaveDays($leave->getStartDate(), $leave->getEndDate());
         // Validate leave category
         if (null === $leave->getCategory()) {
             return 'Category can not be empty.';
         }
         // Check if leave is not to be substracted from entitlement
         $excludedCategoryIds = Utils::arrayValueRecursive('id', $entityManager->getRepository('OpitOpitHrmLeaveBundle:LeaveCategory')->findNotCountedAsLeaveIds());
         if (!in_array($leave->getCategory()->getId(), $excludedCategoryIds)) {
             $totalLeaveDaysCount += $countLeaveDays;
         }
         if ($totalLeaveDaysCount > $leftToAvail) {
             return 'Employee has no more days left to avail.';
         } else {
             if ($leave->getStartDate() < new \DateTime()) {
                 $pastLeaveCount++;
             }
             $leave->setNumberOfDays($countLeaveDays);
             $entityManager->persist($leave);
             $leaveRequestService->removeChildNodes($leaveRequest, $children);
         }
     }
     $entityManager->persist($leaveRequest);
     $status = $data['approvedStatus'];
     // Check if user is setting LR for himself
     if ($securityContext->getToken()->getUser()->getEmployee()->getId() === $employee->getId() && $isOwn) {
         // If LR has leaves only in the past set status to approved else set
         // status to created
         $status = $pastLeaveCount === count($leaveRequest->getLeaves()) ? $data['approvedStatus'] : $data['createdStatus'];
     }
     $this->setLRStatusSendNotificationEmail($leaveRequest, $leaveRequest->getEmployee(), $status, $leaveRequestService);
     return null;
 }
 /**
  * To save leave setting
  *
  * @Route("/secured/admin/save/leavesetting", name="OpitOpitHrmLeaveBundle_admin_save_leave_setting")
  * @Secure(roles="ROLE_SYSTEM_ADMIN")
  * @Method({"POST"})
  * @Template()
  */
 public function saveLeaveSettingAction()
 {
     $request = $this->getRequest();
     $data = $request->request->all();
     $em = $this->getDoctrine()->getManager();
     $result['response'] = 'success';
     $status = null;
     //If it was a post
     if ($request->isMethod('POST')) {
         $leaveSettingList = $em->getRepository('OpitOpitHrmLeaveBundle:LeaveSetting')->findAll();
         $ids = Utils::arrayValueRecursive('id', $data);
         // Remove leave settings
         foreach ($leaveSettingList as $hs) {
             if (!in_array($hs->getId(), $ids)) {
                 // delete
                 $leaveSetting = $this->getLeaveSetting($hs->getId(), false);
                 $em->remove($leaveSetting);
                 $em->flush();
             }
         }
         if (!empty($data)) {
             // Save leave settings
             foreach ($data['leaveSetting'] as $d) {
                 // save
                 $leaveSetting = $this->getLeaveSetting($d['id'], false);
                 $result = $this->setLeaveSettingData($leaveSetting, $d);
                 if (500 === $result['status']) {
                     $status = $result['status'];
                     break;
                 }
             }
         }
     }
     return new JsonResponse(array('code' => $status, $result));
 }