/** * @name updateProduit($pProduitAbonnement) * @param ProduitAbonnementVO * @return integer * @desc Met à jour un ProduitAbonnementVO */ private function updateProduit($pProduitAbonnement, $pLotRemplacement = array()) { $lProduitActuel = $this->selectProduit($pProduitAbonnement->getId()); //Les lots $lLotSupp = array(); foreach ($lProduitActuel->getLots() as $lLotActuel) { $lSuppLot = true; foreach ($pProduitAbonnement->getLots() as $lLotNv) { // Maj Lot if ($lLotActuel->getId() == $lLotNv->getId()) { $lDcomId = $lLotActuel->getId(); $lSuppLot = false; $lLotAbonnement = new LotAbonnementVO(); $lLotAbonnement->setId($lLotActuel->getId()); $lLotAbonnement->setIdProduitAbonnement($lProduitActuel->getId()); $lLotAbonnement->setTaille($lLotNv->getTaille()); $lLotAbonnement->setPrix($lLotNv->getPrix()); LotAbonnementManager::update($lLotAbonnement); } } // Supprimer Lot if ($lSuppLot) { array_push($lLotSupp, $lLotActuel->getId()); } } // Nouveau Lot $lLotAdd = array(); foreach ($pProduitAbonnement->getLots() as $lLotNv) { $lAjout = true; foreach ($lProduitActuel->getLots() as $lLotActuel) { if ($lLotActuel->getId() == $lLotNv->getId()) { $lAjout = false; } } if ($lAjout) { $lLotAbonnement = new LotAbonnementVO(); $lLotAbonnement->setIdProduitAbonnement($lProduitActuel->getId()); $lLotAbonnement->setTaille($lLotNv->getTaille()); $lLotAbonnement->setPrix($lLotNv->getPrix()); $lDcomId = LotAbonnementManager::insert($lLotAbonnement); $lLotAdd[$lLotNv->getId()] = $lDcomId; // Si supression d'un lot et positionnement de ce nouveau lot permet de récupérer l'ID } } // Chaque lot supprimé => La réservation est positionnée sur un autre lot foreach ($lLotSupp as $lIdLot) { if (isset($pLotRemplacement[$lIdLot])) { $lIdLotRemplacement = $pLotRemplacement[$lIdLot]; // Si le lot de remplacement est un nouveau lot on récupère le vrai id de base et non celui donné par le JS if ($lIdLotRemplacement < 0) { $lIdLotRemplacement = $lLotAdd[$lIdLotRemplacement]; } // Récupération des abonnements $lListeAbonnement = $this->getAbonnementSurLot($lIdLot); // Modification si il y a des abonnements if (!is_null($lListeAbonnement[0]->getCptAboId())) { foreach ($lListeAbonnement as $lAbonnement) { $lAncienAbonnement = CompteAbonnementManager::select($lAbonnement->getCptAboId()); $lAncienAbonnement->setIdLotAbonnement($lIdLotRemplacement); $this->updateAbonnement($lAncienAbonnement); } } } else { // Si pas de lot de remplacement suppression des abonnements du lot // Suppression des abonnements du lot $lListeAbonnement = $this->getAbonnementSurLot($lIdLot); foreach ($lListeAbonnement as $lAbonnement) { $this->deleteAbonnement($lAbonnement->getCptAboId()); } } // Suppression du lot $lDeleteLot = LotAbonnementManager::select($lIdLot); $lDeleteLot->setEtat(1); LotAbonnementManager::update($lDeleteLot); } return ProduitAbonnementManager::update($pProduitAbonnement); }