/** * Remove all organisationunitGroups * * @return Organisationunit */ public function removeAllOrganisationunitGroups() { foreach ($this->organisationunitGroup as $organisationunitGroupKey => $organisationunitGroup) { $this->organisationunitGroup->removeElement($organisationunitGroup); } return $this; }
/** * Remove organisationunitGroup * * @param OrganisationunitGroup $organisationunitGroup */ public function removeOrganisationunitGroup(OrganisationunitGroup $organisationunitGroup) { $this->organisationunitGroup->removeElement($organisationunitGroup); }
/** * Loads metadata into the database * * @param ObjectManager $manager */ public function load(ObjectManager $manager) { $stopwatch = new Stopwatch(); $stopwatch->start('dummyOrganisationGroupGeneration'); $this->addDummyOrganisationunitGroups(); $this->addDummyOrganisationunitGroupsets(); $organiastionunits = $manager->getRepository('HrisOrganisationunitBundle:Organisationunit')->findAll(); // Populate dummy organisationunitGroupset foreach ($this->organisationunitGroupsets as $organisationunitGroupsetKey => $humanResourceOrganisationunitGroupset) { $organisationunitGroupset = new OrganisationunitGroupset(); $organisationunitGroupset->setCode($humanResourceOrganisationunitGroupset['code']); $organisationunitGroupset->setName($humanResourceOrganisationunitGroupset['name']); $organisationunitGroupset->setDescription($humanResourceOrganisationunitGroupset['description']); $organisationunitGroupsetReference = strtolower(str_replace(' ', '', $humanResourceOrganisationunitGroupset['code'])) . '-organisationunitgroupset'; $this->addReference($organisationunitGroupsetReference, $organisationunitGroupset); $manager->persist($organisationunitGroupset); } // Populate dummy organisationunitGroups foreach ($this->organisationunitGroups as $organisationunitGroupKey => $humanResourceOrganisationunitGroup) { $organisationunitGroup = new OrganisationunitGroup(); $organisationunitGroup->setCode($humanResourceOrganisationunitGroup['code']); $organisationunitGroup->setName($humanResourceOrganisationunitGroup['name']); $organisationunitGroup->setDescription($humanResourceOrganisationunitGroup['description']); $organisationunitGroupsetByReference = $manager->merge($this->getReference(strtolower(str_replace(' ', '', $humanResourceOrganisationunitGroup['groupset'])) . '-organisationunitgroupset')); $organisationunitGroup->setOrganisationunitGroupset($organisationunitGroupsetByReference); $organisationunitGroupReference = strtolower(str_replace(' ', '', $humanResourceOrganisationunitGroup['code'])) . '-organisationunitgroup'; $this->addReference($organisationunitGroupReference, $organisationunitGroup); $manager->persist($organisationunitGroup); } /* * Add organisation unit members to ownership and type groupsets */ if (!empty($organiastionunits)) { foreach ($organiastionunits as $organiastionunitKey => $organisationunit) { /* * Assign type of facility based on their names */ // Appending dispensaries to dispensary group if (preg_match('/dispensary/i', $organisationunit->getLongname())) { $organisationunitGroupCode = 'hospitals'; $organisationunitGroupByReference = $manager->merge($this->getReference(strtolower(str_replace(' ', '', $organisationunitGroupCode)) . '-organisationunitgroup')); $organisationunitGroupByReference->addOrganisationunit($organisationunit); } // Appending hospitals to dispensary group if (preg_match('/hospital/i', $organisationunit->getLongname())) { $organisationunitGroupCode = 'dispensaries'; $organisationunitGroupByReference = $manager->merge($this->getReference(strtolower(str_replace(' ', '', $organisationunitGroupCode)) . '-organisationunitgroup')); $organisationunitGroupByReference->addOrganisationunit($organisationunit); } // Appending healthcentres to dispensary group if (preg_match('/health centre/i', $organisationunit->getLongname())) { $organisationunitGroupCode = 'healthcentres'; $organisationunitGroupByReference = $manager->merge($this->getReference(strtolower(str_replace(' ', '', $organisationunitGroupCode)) . '-organisationunitgroup')); $organisationunitGroupByReference->addOrganisationunit($organisationunit); } /* * Assign ownership randomly by chance. */ $ownershipOrganisationunitGroup = array(4 => array('code' => 'private', 'name' => 'Private Facilities', 'groupset' => 'ownership', 'search' => 'private', 'description' => 'Private Facilities'), 5 => array('code' => 'public', 'name' => 'Public Facilities', 'groupset' => 'ownership', 'search' => 'private', 'description' => 'Private Facilities'), 6 => array('code' => 'faithbased', 'name' => 'Faith Based Facilities', 'groupset' => 'ownership', 'search' => 'fbo', 'description' => 'Faith Based Facilities'), 7 => array('code' => 'army', 'name' => 'Army Facilities', 'groupset' => 'ownership', 'search' => 'fbo', 'description' => 'Faith Based Facilities')); $randomOwnershipKey = array_rand($ownershipOrganisationunitGroup, 1); $organisationunitGroupCode = $ownershipOrganisationunitGroup[$randomOwnershipKey]['code']; $organisationunitGroupByReference = $manager->merge($this->getReference(strtolower(str_replace(' ', '', $organisationunitGroupCode)) . '-organisationunitgroup')); $organisationunitGroupByReference->addOrganisationunit($organisationunit); $manager->persist($organisationunit); } } $manager->flush(); /* * Check Clock for time spent */ $dummyOrganisationGroupGenerationTime = $stopwatch->stop('dummyOrganisationGroupGeneration'); $duration = $dummyOrganisationGroupGenerationTime->getDuration() / 1000; unset($stopwatch); if ($duration < 60) { $durationMessage = round($duration, 2) . ' seconds'; } elseif ($duration >= 60 && $duration < 3600) { $durationMessage = round($duration / 60, 2) . ' minutes'; } elseif ($duration >= 3600 && $duration < 216000) { $durationMessage = round($duration / 3600, 2) . ' hours'; } else { $durationMessage = round($duration / 86400, 2) . ' hours'; } //echo "Dummy Organisationunit Group generation complete in ". $durationMessage .".\n\n"; }