function create(Etablissement $etablissement, Contrat $contrat) { $passage = new Passage(); $passage->setEtablissement($etablissement); foreach ($contrat->getPrestations() as $prestationContrat) { $prestation = clone $prestationContrat; $prestation->setNbPassages(0); $passage->addPrestation($prestation); } $previousPassage = null; foreach ($contrat->getPassagesEtablissementNode($etablissement)->getPassagesSorted(true) as $p) { if ($p->getId() != $passage->getId() && count($p->getTechniciens())) { $previousPassage = $p; break; } } if ($previousPassage) { foreach ($previousPassage->getTechniciens() as $tech) { $passage->addTechnicien($tech); } } elseif ($contrat->getTechnicien()) { $passage->addTechnicien($contrat->getTechnicien()); } foreach ($contrat->getProduits() as $produitContrat) { $produit = clone $produitContrat; $produit->setNbUtilisePassage(0); $passage->addProduit($produit); } $passage->setContrat($contrat); return $passage; }