/** * * @param \Tip\Repository\IzbirneOpcije $rep * @param string $object * @param array $vals */ public function populatePogodba($manager, $v) { $rep = $manager->getRepository('Produkcija\\Entity\\Pogodba'); // $tipFunR = $manager->getRepository('Produkcija\Entity\TipFunkcije'); $o = $rep->findOneBySifra(trim($v[0])); $nov = false; if (!$o) { $o = new \Produkcija\Entity\Pogodba(); $o->setSifra(trim($v[0])); $nov = TRUE; } $o->setVrednostVaj($v[1]); $o->setVrednostPredstave($v[2]); $o->setVrednostVaje($v[3]); // $o->setAktivna($v[4]); $o->setOpis($v[5]); if ($v[6]) { $getref = $this->getReference($v[6]); $o->setOseba($getref); } if ($v[7]) { $getref = $this->getReference($v[7]); $o->setPopa($getref); } if ($v[8]) { $getref = $this->getReference($v[8]); $o->setTrr($getref); } $date = empty($v[9]) ? null : date_create($v[9]); // polje mora biti v php-jevi PHP-jevem datetime tipu $o->setZacetek($date); $date = empty($v[10]) ? null : date_create($v[10]); // polje mora biti v php-jevi PHP-jevem datetime tipu $o->setKonec($date); $o->setPlaciloNaVajo($v[11]); $o->setPlaniranoSteviloVaj($v[12]); $o->setZaposlenVDrJz($v[13]); $o->setSamozaposlen($v[14]); $o->setIgralec($v[15]); $o->setJeAvtorskePravice($v[16]); if ($nov) { $rep->create($o); } else { $rep->update($o); } /** * validate javi napako, ker alternacije še ni */ // $o->validate(); $referenca = 'Pogodba-' . $v[0]; //var_dump($referenca); $this->addReference($referenca, $o); }
/** * 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(); }