Пример #1
0
 /**
  * Kreiranje nove pogodbe Alternaciji
  *
  * Procedura deluje podobno kot 2 REST ukaza, vendar v 1 flushu:
  *  POST /rest/pogodba      vrednostPredstave=0,...
  *  PUT  /rest/alternacija   pogodba= idPogodbe
  *
  * @param string $alternacijaId
  * @return pogodba id (ali celi objekt od pogodbe)  ali ?false  , če ne uspe $$
  * @throws \Max\Exception\UnauthException
  */
 public function novaPogodba($alternacijaId)
 {
     // preverjanje avtorizacije
     $this->expectPermission("Pogodba-write");
     $this->expectPermission("Alternacija-write");
     $em = $this->serviceLocator->get("\\Doctrine\\ORM\\EntityManager");
     $tr = $this->getServiceLocator()->get('translator');
     $alternacija = $em->getRepository("Produkcija\\Entity\\Alternacija")->findOneById($alternacijaId);
     if (!$alternacija) {
         throw new \Max\Exception\UnauthException($tr->translate('Ni alternacije'), 1000921);
     }
     if ($alternacija->getPogodba()) {
         throw new \Max\Exception\UnauthException($tr->translate('Alternacija že ima pogodbo'), 1000922);
     }
     $pogodba = new \Produkcija\Entity\Pogodba();
     // vse vrednosti na 0
     //        $pogodba->setVrednostDo(0);
     //        $pogodba->setVrednostDo(0);
     $pogodba->setVrednostVaj(0);
     $pogodba->setVrednostVaje(0);
     $pogodba->setPlaniranoSteviloVaj(0);
     $pogodba->setVrednostPredstave(0);
     //        $pogodba->setVrednostUre(0);
     $pogodba->setVrednostDoPremiere(0);
     $pogodba->setPlaciloNaVajo(FALSE);
     $pogodba->setJeAvtorskePravice(FALSE);
     $pogodba->setOseba($alternacija->getOseba());
     $pogodbaR = $em->getRepository("Produkcija\\Entity\\Pogodba")->setServiceLocator($this->getServiceLocator());
     $pogodbaR->create($pogodba);
     //da kreira tudi šifro
     // create vključuje tudi persist
     $alternacija->setPogodba($pogodba);
     $pogodba->preracunaj();
     $pogodba->validate();
     $alternacija->preracunaj();
     $alternacija->validate();
     // sedaj, ko imamo entiteti ponovimo preverjanje avtorizacije zaradi morebitnega assert preverjanja!
     $this->expectPermission("Pogodba-write", $pogodba);
     $this->expectPermission("Alternacija-write", $alternacija);
     $em->flush();
     return $pogodba->getId();
 }