Пример #1
0
 /**
  * Preverim če ima oseba veljavno zaposlitev,
  * potem jo samodejno povežem z zaposlitvijo
  * @param entity $alternacija
  */
 public function preveriZaposlitev(Alternacija $alternacija)
 {
     if (!$alternacija->getZaposlitev()) {
         $zr = $this->getEntityManager()->getRepository('Produkcija\\Entity\\Zaposlitev');
         $zap = $zr->findOneBy(['oseba' => $alternacija->getOseba()->getId(), 'status' => 'A']);
         if ($zap) {
             /*
              * $$ ali ni morda hrošč in mora biti get konec > datetime?
              */
             if ($zap->getKonec() === null || $zap->getKonec() < new DateTime()) {
                 $alternacija->setZaposlen(true);
                 $alternacija->setZaposlitev($zap);
                 return;
             }
         }
         $alternacija->setZaposlen(false);
     }
 }
Пример #2
0
 /**
  *
  * @param \Tip\Repository\IzbirneOpcije $rep
  * @param string $object
  * @param array $vals
  */
 public function populateAlternacija($manager, $v)
 {
     $rep = $manager->getRepository('Produkcija\\Entity\\Alternacija');
     //        $tipFunR = $manager->getRepository('Produkcija\Entity\TipFunkcije');
     $o = $rep->findOneBySifra(trim($v[0]));
     $nov = false;
     if (!$o) {
         $o = new Alternacija();
         $o->setSifra(trim($v[0]));
         $nov = true;
     }
     $o->setZaposlen($v[1]);
     $getref = $this->getReference($v[2]);
     $o->setFunkcija($getref);
     if ($v[3]) {
         // $$ še ni implementirano
         $getref = $this->getReference($v[3]);
         $o->setSodelovanje($getref);
     }
     $getref = $this->getReference($v[4]);
     $o->setOseba($getref);
     if ($v[5]) {
         $getref = $this->getReference($v[5]);
         $o->setKoprodukcija($getref);
     }
     $o->setSort($v[6]);
     $o->setImaPogodbo($v[7]);
     $o->setPomembna($v[8]);
     if ($v[9]) {
         $getref = $this->getReference($v[9]);
         $o->setPogodba($getref);
     }
     if ($v[10]) {
         $getref = $this->getReference($v[10]);
         $o->setZaposlitev($getref);
     }
     $date = empty($v[11]) ? null : date_create($v[11]);
     $o->setZacetek($date);
     $date = empty($v[12]) ? null : date_create($v[12]);
     //        var_dump($date);
     $o->setKonec($date);
     $o->setPrivzeti($v[13]);
     if ($nov) {
         $rep->create($o);
     } else {
         $rep->update($o);
     }
     $referenca = 'Alternacija-' . $v[0];
     //        var_dump($referenca);
     $this->addReference($referenca, $o);
 }
Пример #3
0
 public function validate($mode = 'update')
 {
     $this->expect(!$this->ura, "Ure so že vnešene, spreminjanje terminov storitev ni mogoče", 1001088);
     $i = 0;
     if ($this->alternacija) {
         $i++;
     }
     if ($this->dezurni) {
         $i++;
     }
     if ($this->gost) {
         $i++;
     }
     if ($this->zasedenost) {
         $i++;
     }
     if ($this->virtZasedenost) {
         $i++;
     }
     if ($this->sodelujoc) {
         $i++;
     }
     $this->expect($i === 1, "Napačno število referenc ({$i}) v terminu storitve. Dovoljen natanko eden od alternacija/dezurni/gost/sodelujoč/zasedenost/virt.zasedenost", 1001080);
     $this->expect($this->planiranZacetek, "Planiran začetek  mora obstajati", 1001084);
     $this->expect($this->planiranKonec, "Planiran konec mora obstajati", 1001085);
     $this->expect($this->planiranZacetek < $this->planiranKonec, "Planiran konec mora biti za planiranim začetkom", 1001087);
     if ($this->alternacija) {
         /**
          * preveri, če je alternacija od uprizoritve dogodka
          */
         $this->expect(method_exists($this->dogodek->getPodrobno(), "getUprizoritev") && $this->dogodek->getPodrobno()->getUprizoritev(), "Dogodek nima uprizoritve, termin storitve ima alternacijo", 1001089);
         $aId = $this->alternacija->getId();
         $this->expect($this->dogodek->getPodrobno()->getUprizoritev()->getFunkcije()->exists(function ($key, $f) use(&$aId) {
             return $f->getAlternacije()->exists(function ($k, $a) use(&$aId) {
                 return $a->getId() === $aId;
                 // vrne true, če alternacija obstaja v uprizoritvi
             });
         }), "Alternacija (" . $this->alternacija->getSifra() . ") ne pripada uprizoritvi dogodka", 1001090);
         $this->oseba = $this->alternacija->getOseba();
     }
     if ($this->gost) {
         $this->expect($this->dogodek->getRazred() === \Koledar\Entity\Dogodek::VAJA, "Gost je dovoljen le na vaji", 1001091);
     }
     if ($this->dezurni) {
         $this->expect($this->dogodek->getRazred() === \Koledar\Entity\Dogodek::PREDSTAVA, "Dežurni je dovoljen le na predstavi", 1001092);
     }
     if ($this->alternacija || $this->gost || $this->dezurni || $this->sodelujoc) {
         /*
          * izračunamo delti glede na čase v dogodku
          */
         $this->expect($this->dogodek, "Dogodek pri takem tipu termina storitve mora biti prisoten", 1001081);
         $this->expect($this->dogodek->getZacetek(), "Začetek dogodka mora obstajati", 1001082);
         $this->expect($this->dogodek->getKonec(), "Konec dogodka mora obstajati", 1001083);
         /*
          * če ts poddogodka, mora interval  biti v celoti intervalu ts iste osebe v gostovanju
          */
         $oseba = $this->oseba;
         $planiranZacetek = $this->planiranZacetek;
         $planiranKonec = $this->planiranKonec;
         if ($this->dogodek->getNadrejenoGostovanje()) {
             $this->expect($this->dogodek->getNadrejenoGostovanje()->getDogodek()->getTerminiStoritve()->exists(function ($key, $f) use(&$oseba, &$planiranZacetek, &$planiranKonec) {
                 /*
                  *  obstaja TS iste osebe z intervalom, ki je večji ali enak od int. tega TS
                  */
                 return $f->getOseba() === $oseba && $f->getPlaniranZacetek() <= $planiranZacetek && $f->getPlaniranKonec() >= $planiranKonec;
             }), "Termin storitve poddogodka (" . $this->oseba->getPolnoIme() . ") mora imeti vsaj en termin storitve gostovanja, ki ustreza intervalu", 1001094);
         }
         /*
          * izračunamo delti, ki sta v minutah
          */
         $this->deltaPlaniranZacetek = (int) (($this->planiranZacetek->getTimestamp() - $this->dogodek->getZacetek()->getTimestamp()) / 60);
         $this->deltaPlaniranKonec = (int) (($this->planiranKonec->getTimestamp() - $this->dogodek->getKonec()->getTimestamp()) / 60);
     } else {
         $this->dogodek = null;
     }
 }