Esempio n. 1
0
 public function validate($mode = 'update')
 {
     $this->expect($this->getEnotaPrograma(), 'Ni enote programa za to koprodukcijo', 1000410);
     $this->validateNumberGE0($this->kpe, "Koeficient programske enote", 1000417);
     $this->validateProcGE0LE100($this->odstotekFinanciranja, "Odstotek financiranja", 1000412);
     $this->validateEuroGE0($this->delez, "Delež", 1000416);
     $delez = \Max\Functions::procRoundS($this->delez);
     //$$ kontrole za vsoto procentov
     // za isto enoto programa je lahko le 1 delitev z isto produkcijsko hišo
     if (!$this->getEnotaPrograma()->getKoprodukcije()->isEmpty()) {
         $id = $this->getId();
         $obstaja = $this->getEnotaPrograma()->getKoprodukcije()->exists(function ($key, $kopr) use(&$id) {
             return $kopr->getKoproducent() == $this->getKoproducent() && $kopr->getId() !== $id;
             //vrne true, če obstaja drug koprodukcija z istim koproducentom
         });
         $this->expect(!$obstaja, "Koprodukcija z istim koproducentom že obstaja v enoti programa", 1000411);
         /**
          *  preveri število matičnih koprodukcij?
          */
         $maticniCollection = $this->getEnotaPrograma()->getKoprodukcije()->filter(function ($kopr) {
             return $kopr->getMaticniKop();
             //vrne vse zapise matičnih koproducentov
         });
         $stMaticnihKoproducentov = $maticniCollection->count();
         $this->expect($stMaticnihKoproducentov == 1, "Dovoljen natanko 1 matični koproducent, jih je pa " . $stMaticnihKoproducentov, 1000414);
     }
     /**
      * pri premieri mora biti vsota kpe vseh koproducentov <= maksimalnemu koeficientu iz tabele
      */
     $sumkpe = 0;
     //init
     /**
      * $$ if program premiera 
      *  pri drugih ne bi smel biti problem, ker so KPE-ji =0  $$?
      */
     foreach ($this->getEnotaPrograma()->getKoprodukcije() as $numObject => $kopr) {
         $sumkpe += $kopr->getKpe();
     }
     $sumkpe = \Max\Functions::numberRoundS($sumkpe);
     $maxvsifaktor = $this->getEnotaPrograma()->getTipProgramskeEnote() ? $this->getEnotaPrograma()->getTipProgramskeEnote()->getMaxVsi() : 0;
     $maxvsifaktor = \Max\Functions::numberRoundS($maxvsifaktor);
     $this->expect($sumkpe <= $maxvsifaktor, "Vsota kpe vseh koproducentov (" . $sumkpe . ") ne sme biti večji kot maks. koeficient (" . $maxvsifaktor . ")", 1000415);
 }