/** * {@inheritDoc} */ public function doLoad(ObjectManager $manager) { // Test for required leaveRequestss references first if (!$this->hasReference('admin') || !$this->hasReference('user') || !$this->hasReference('generalManager')) { throw new \RuntimeException('Mass leave request fixtures require user fixtures.'); } $service = $this->container->get('opit.model.leave_request'); $admin = $this->getReference('admin'); // Create Datetimes. $startDate = new \DateTime(date('Y-12-24')); $endDate = new \DateTime(date('Y-01-01')); $endDate->modify('+1 year'); // Notice: The service is based on LeaveDatesFixtures, ensure current year's public holidays are present. $days = $service->countLeaveDays($startDate, $endDate); // Create leave $leave = new Leave(); $leave->setDescription('Christmas vacation'); $leave->setStartDate($startDate); $leave->setEndDate($endDate); $leave->setNumberOfDays($days); $leave->setCategory($this->getReference('leave-category-full-day')); // Create leave request group. $leaveRequestGroup = new LeaveRequestGroup(); $manager->persist($leaveRequestGroup); // Create First LeaveRequest. $leaveRequest1 = new LeaveRequest(); $leaveRequest1->setEmployee($admin->getEmployee()); $leaveRequest1->setCreatedUser($this->getReference('generalManager')); $leaveRequest1->setGeneralManager($this->getReference('generalManager')); $leaveRequest1->setIsMassLeaveRequest(false); $leaveRequest1->setLeaveRequestGroup($leaveRequestGroup); $leaveRequest1->addLeaf($leave); // Create mass leave request, persist first. $massLeaveRequest = clone $leaveRequest1; $massLeaveRequest->setEmployee($this->getReference('generalManager')->getEmployee()); $massLeaveRequest->setCreatedUser($this->getReference('generalManager')); $massLeaveRequest->setIsMassLeaveRequest(true); $massLeaveRequest->setLeaveRequestGroup($leaveRequestGroup); $massLeaveRequest->addLeaf(clone $leave); $manager->persist($massLeaveRequest); // Add leave request states $leaveRequest1Status = new StatesLeaveRequests($this->getReference('approved')); $leaveRequest1Status->setCreated(new \DateTime()); $leaveRequest1Status->setCreatedUser($this->getReference('generalManager')); $leaveRequest1->addState($leaveRequest1Status); $manager->persist($leaveRequest1); // Create Second leave request. $leaveRequest2 = clone $leaveRequest1; $leaveRequest2->setEmployee($this->getReference('user')->getEmployee()); $leaveRequest2->setCreatedUser($this->getReference('generalManager')); $leaveRequest2->setIsMassLeaveRequest(false); $leaveRequest2->setLeaveRequestGroup($leaveRequestGroup); $leaveRequest2->addLeaf(clone $leave); $leaveRequest2->addState(clone $leaveRequest1Status); $manager->persist($leaveRequest2); $manager->flush(); }
/** * Create new instance of leave * * @param \Opit\OpitHrm\LeaveBundle\Entity\Leave $leave * @param \Opit\OpitHrm\LeaveBundle\Entity\LeaveRequest $leaveRequest * @param \Opit\OpitHrm\LeaveBundle\Entity\LeaveCategory $leaveCategory * @param integer $leaveLength * @return \Opit\OpitHrm\LeaveBundle\Entity\Leave */ public function createLeaveInstance(Leave $leave, LeaveRequest $leaveRequest, LeaveCategory $leaveCategory, $leaveLength, $startDate, $endDate) { $l = new Leave(); $l->setDescription($leave->getDescription()); $l->setStartDate($startDate); $l->setEndDate($endDate); $l->setLeaveRequest($leaveRequest); $l->setNumberOfDays($leaveLength); $l->setCategory($leaveCategory); return $l; }
/** * {@inheritDoc} */ public function doLoad(ObjectManager $manager) { // Test for required user/status references first if (!$this->hasReference('admin') || !$this->hasReference('created')) { throw new \RuntimeException('Leave request fixtures require user/status bundle fixtures.'); } $service = $this->container->get('opit.model.leave_request'); // First leave request $admin = $this->getReference('admin'); $leaveRequest1 = new LeaveRequest(); $leaveRequest1->setEmployee($admin->getEmployee()); $leaveRequest1->setGeneralManager($this->getReference('generalManager')); $leaveRequest1->setCreatedUser($admin); // Add Leaves $startDate = new \DateTime(date('Y-01-01')); $startDate->modify('next monday'); $endDate = clone $startDate; $endDate->add(new \DateInterval('P4D')); // Notice: The service is based on LeaveDatesFixtures, ensure current year's public holidays are present. $days = $service->countLeaveDays($startDate, $endDate); $leave1 = new Leave(); $leave1->setDescription('Winter vacation'); $leave1->setStartDate($startDate); $leave1->setEndDate($endDate); $leave1->setNumberOfDays($days); $leave1->setCategory($this->getReference('leave-category-full-day')); $leaveRequest1->addLeaf($leave1); // Fake the state times $createdDateTime = new \DateTime(); $createdDateTime->modify('last year dec last weekday'); $createdDateTime->setTime('09', '45', '00'); $forApprovalDateTime = clone $createdDateTime; $forApprovalDateTime->add(new \DateInterval('PT1H')); $approvedDateTime = clone $forApprovalDateTime; $approvedDateTime->modify('next weekday 16:13:00'); // Add leave request states $leaveRequest1Status = new StatesLeaveRequests($this->getReference('created')); $leaveRequest1Status->setCreated($createdDateTime); $leaveRequest1Status->setCreatedUser($admin); $leaveRequest1->addState($leaveRequest1Status); $leaveRequest2Status = new StatesLeaveRequests($this->getReference('forApproval')); $leaveRequest2Status->setCreated($forApprovalDateTime); $leaveRequest2Status->setCreatedUser($admin); $leaveRequest1->addState($leaveRequest2Status); $leaveRequest3Status = new StatesLeaveRequests($this->getReference('approved')); $leaveRequest3Status->setCreated($approvedDateTime); $leaveRequest3Status->setCreatedUser($this->getReference('generalManager')); $leaveRequest1->addState($leaveRequest3Status); $manager->persist($leaveRequest1); // Second leave request $user = $this->getReference('user'); $leaveRequest2 = new LeaveRequest(); $leaveRequest2->setEmployee($user->getEmployee()); $leaveRequest2->setGeneralManager($this->getReference('generalManager')); $leaveRequest2->setCreatedUser($user); // Add Leaves $startDate = new \DateTime(); $startDate->modify('next month monday'); $endDate = clone $startDate; $endDate->add(new \DateInterval('P4D')); $days = $service->countLeaveDays($startDate, $endDate); $leave2 = new Leave(); $leave2->setDescription('Family event'); $leave2->setStartDate($startDate); $leave2->setEndDate($endDate); $leave2->setNumberOfDays($days); $leave2->setCategory($this->getReference('leave-category-full-day')); $leaveRequest2->addLeaf($leave2); // Fake the state times $createdDateTime = new \DateTime(); $forApprovalDateTime = clone $createdDateTime; $forApprovalDateTime->add(new \DateInterval('PT15M')); // Add leave request states $leaveRequest4Status = new StatesLeaveRequests($this->getReference('created')); $leaveRequest4Status->setCreated($createdDateTime); $leaveRequest4Status->setCreatedUser($user); $leaveRequest2->addState($leaveRequest4Status); $leaveRequest5Status = new StatesLeaveRequests($this->getReference('forApproval')); $leaveRequest5Status->setCreated($forApprovalDateTime); $leaveRequest5Status->setCreatedUser($user); $leaveRequest2->addState($leaveRequest5Status); $manager->persist($leaveRequest2); // Third leave request, same user $leaveRequest3 = new LeaveRequest(); $leaveRequest3->setEmployee($user->getEmployee()); $leaveRequest3->setGeneralManager($this->getReference('generalManager')); $leaveRequest3->setCreatedUser($user); $startDate = new \DateTime(); $startDate->modify('last week monday'); $endDate = clone $startDate; $endDate->add(new \DateInterval('P2D')); $days = $service->countLeaveDays($startDate, $endDate); $leave3 = new Leave(); $leave3->setDescription('Cold'); $leave3->setStartDate($startDate); $leave3->setEndDate($endDate); $leave3->setNumberOfDays($days); $leave3->setCategory($this->getReference('leave-category-sick-leave')); $leaveRequest3->addLeaf($leave3); // Fake the state times $createdDateTime = clone $endDate; $createdDateTime->modify('next weekday'); // Add leave request states $leaveRequest6Status = new StatesLeaveRequests($this->getReference('created')); $leaveRequest6Status->setCreated($createdDateTime); $leaveRequest6Status->setCreatedUser($user); $leaveRequest3->addState($leaveRequest6Status); $manager->persist($leaveRequest3); $manager->flush(); }