コード例 #1
0
ファイル: Zaposlitev.php プロジェクト: ifigenija/server
 public function validate($mode = 'update')
 {
     $this->expect($this->zacetek, "Začetek je obvezen podatek", 1000336);
     $this->expect($this->oseba, "Oseba je obvezna", 1000333);
     $this->expect(!$this->konec || $this->zacetek <= $this->konec, "Konec ne sme biti pred začetkom", 1000337);
     $this->setSifra($this->oseba->getSifra());
     /*
      * oseba ima lahko največ 1 aktivno zaposlitev 
      * intervali zaposlitev iste osebe se ne smejo prekrivati
      */
     foreach ($this->oseba->getZaposlitve() as $zap) {
         /*
          *  samega sebe ne sme primerjati
          */
         if ($this->getId() != $zap->getId()) {
             $this->expect(!($this->status == 'A' || !$zap->getStatus() == 'A'), "Oseba ima lahko največ 1 aktivno zaposlitev", 1000334);
             $this->expect($zap->getKonec() && $this->zacetek > $zap->getKonec() || $this->konec && $zap->getZacetek() > $this->konec, "Intervali zaposlitev iste osebe se ne smejo prekrivati", 1000335);
         }
     }
 }
コード例 #2
0
ファイル: TerminStoritve.php プロジェクト: ifigenija/server
 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;
     }
 }