/** * 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.'); }
/** * 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)); }
/** * 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)); }