Esempio n. 1
0
 /**
  * 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";
 }