/** * Sauvegarde ou met a jour le personnage et le raid passé. * @param \Commun\Model\Personnages $oPersonnage * @param \Commun\Model\Raids $oRaids * @return \Core\Model\RaidPersonnage */ public function saveOrUpdateRaid($oPersonnage, $oRaids) { try { //recherche si le raid existe /* @var $oTab \Commun\Model\Raids */ $oTab = $this->selectBy(array("idPersonnage" => $oPersonnage->getIdPersonnage(), "idRaid" => $oRaids->getIdRaid())); $oRaidPersonnage = new \Commun\Model\RaidPersonnage(); // coder au cas ou on rajoute d'autre info dans la table // si n'existe pas on insert if (!$oTab) { $oRaidPersonnage->setIdPersonnage($oPersonnage->getIdPersonnage()); $oRaidPersonnage->setIdRaid($oRaids->getIdRaid()); $this->insert($oRaidPersonnage); return $oRaidPersonnage; } // ne fonctionne pas car mon abstractTable ne gère pas les multi clé // else { // // sinon on update // $oTab->setIdPersonnage($oPersonnage->getIdPersonnage()); // $oTab->setIdRaid($oRaids->getIdRaid()); // $this->update($oTab); // } return $oTab; } catch (Exception $exc) { throw new \Exception("Erreur lors de la sauvegarde /maj du lien raid/personnage", 0, $ex); } }
/** * Sauvegarde ou met a jour le personnage passé. * @param \Commun\Model\Personnages $oPersonnage * @param \Commun\Model\Guildes $oGuilde * @return \Core\Model\Personnages */ public function saveOrUpdatePersonnage($oPersonnage, $oGuilde = null) { try { $oPersonnage->setNom(strtolower($oPersonnage->getNom())); $oPersonnage->setRoyaume(strtolower($oPersonnage->getRoyaume())); //recherche si le personnage existe try { $oTabPersonnage = $this->selectBy(array("idPersonnage" => $oPersonnage->getIdPersonnage())); if (!$oTabPersonnage) { $oTabPersonnage = $this->selectBy(array("nom" => $oPersonnage->getNom(), "royaume" => $oPersonnage->getRoyaume(), "idFaction" => $oPersonnage->getIdFaction())); } } catch (\Exception $exc) { throw new DatabaseException(2000, 4, $this->_getServiceLocator(), $oPersonnage->getArrayCopy(), $exc, $oPersonnage->getArrayCopy()); } // si n'existe pas on insert if (!$oTabPersonnage) { try { if (!empty($oGuilde)) { $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); $oPersonnage->setIdFaction($oGuilde->getIdFaction()); } $this->insert($oPersonnage); $oPersonnage->setIdPersonnage($this->lastInsertValue); } catch (\Exception $exc) { throw new DatabaseException(2000, 2, $this->_getServiceLocator(), $oPersonnage->getArrayCopy(), $exc, $oPersonnage->getArrayCopy()); } } else { try { // sinon on update if (!empty($oGuilde)) { $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); $oPersonnage->setIdFaction($oGuilde->getIdFaction()); } $oPersonnage->setIdPersonnage($oTabPersonnage->getIdPersonnage()); $this->update($oPersonnage); } catch (\Exception $exc) { throw new DatabaseException(2000, 1, $this->_getServiceLocator(), $oPersonnage->getArrayCopy(), $exc, $oPersonnage->getArrayCopy()); } } return $oPersonnage; } catch (\Exception $ex) { throw new \Commun\Exception\LogException("Erreur lors de la sauvegarde du personnage", 0, $this->_getServiceLocator(), $ex, $oPersonnage->getArrayCopy()); } }
/** * Sauvegarde ou met a jour le personnage et le raid passé. * @param \Commun\Model\Personnages $oPersonnage * @param \Commun\Model\Raids $oRaids * @param \Commun\Model\Items $oItems * @param string $sNomBoss * @param string $sBonus * @param string $sNote * @param date $dDateLoot date du loot * @return \Core\Model\RaidPersonnage */ public function saveOrUpdateItemPersonnageRaid($oPersonnage, $oRaids, $oItems, $sNomBoss, $sBonus, $sNote, $dDateLoot) { try { $oItemPersonnageRaid = new \Commun\Model\ItemPersonnageRaid(); $oItemPersonnageRaid->setIdItem($oItems->getIdItem()); $oItemPersonnageRaid->setIdRaid($oRaids->getIdRaid()); $oItemPersonnageRaid->setIdPersonnage($oPersonnage->getIdPersonnage()); $oItemPersonnageRaid->setBonus($sBonus); $oItemPersonnageRaid->setDate($dDateLoot); $oBoss = $this->_getTableBoss()->selectBy(array('nom' => strtolower($sNomBoss))); if (!$oBoss) { throw new DatabaseException(9000, 6, $this->_getServiceLocator(), array(strtolower($sNomBoss))); } $oItemPersonnageRaid->setIdBosses($oBoss->getIdBosses()); $oItemPersonnageRaid->setNote($sNote); $this->insert($oItemPersonnageRaid); return $oItemPersonnageRaid; } catch (\Exception $ex) { throw new DatabaseException(8000, 2, $this->_getServiceLocator(), array($oPersonnage, $oRaids, $oItems, $sNomBoss, $sBonus, $sNote, $dDateLoot), $ex); } }