Esempio n. 1
0
 /**
  * Sauvegarde ou met a jour le lien roster /opersonnage/role passé.
  * @param \Commun\Model\Roster $oRoster
  * @return  \Core\Model\Roster
  */
 public function saveOrUpdateRoster(\Commun\Model\Roster $oRoster)
 {
     try {
         // mise en minuscule pour faciliter les rechecrhe et uniformisé les données
         $oRoster->setNom(strtolower($oRoster->getNom()));
         //recherche si le roster existe
         try {
             $oTabRoster = $this->selectBy(array("idRoster" => $oRoster->getIdRoster()));
         } catch (\Exception $exc) {
             throw new DatabaseException(6000, 4, $this->_getServiceLocator(), $oRoster->getArrayCopy(), $exc);
         }
         //si l'e nom existe et que c'est le meme id'identifiant existe,
         if ($oTabRoster) {
             try {
                 $oRosterTmp = $this->selectBy(array("nom" => $oRoster->getNom()));
             } catch (\Exception $exc) {
                 throw new DatabaseException(6000, 4, $this->_getServiceLocator(), $oRoster->getNom(), $exc);
             }
             //si le nom existe
             if ($oRosterTmp) {
                 // on leve un exception de contrainte unique
                 throw new DatabaseException(6000, 5, $this->_getServiceLocator(), $oRoster->getNom());
             }
             //on met a jour
             try {
                 $this->update($oRoster);
                 // on recupere les anciens personnage bank et disenchant
                 $oOldBank = $this->_getTablePersonnage()->selectBy(array('nom' => strtolower($oTabRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["bank"])));
                 $oOldDisenchant = $this->_getTablePersonnage()->selectBy(array('nom' => strtolower($oTabRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["disenchant"])));
                 // on met a jour leur nom
                 $oOldBank->setNom($oRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["bank"]);
                 $oOldDisenchant->setNom($oRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["disenchant"]);
                 // on met a jour en base
                 $this->_getTablePersonnage()->saveOrUpdatePersonnage($oOldBank);
                 $this->_getTablePersonnage()->saveOrUpdatePersonnage($oOldDisenchant);
             } catch (\Exception $exc) {
                 throw new DatabaseException(6000, 1, $this->_getServiceLocator(), $oRoster->getArrayCopy(), $exc);
             }
         }
         try {
             $oTabRoster = $this->selectBy(array("nom" => $oRoster->getNom()));
         } catch (\Exception $exc) {
             throw new DatabaseException(6000, 4, $this->_getServiceLocator(), $oRoster->getArrayCopy(), $exc);
         }
         //si le nom existe et que les id sont differents
         if ($oTabRoster && $oTabRoster->getIdRoster() != $oRoster->getIdRoster()) {
             // on leve un exception de contrainte unique
             throw new DatabaseException(6000, 5, $this->_getServiceLocator(), $oRoster->getArrayCopy());
         }
         // si n'existe pas on insert
         if (!$oTabRoster) {
             try {
                 $oRoster->setKey($this->getRosterKey($oRoster->getNom()));
                 $this->insert($oRoster);
                 $oRoster->setIdRoster($this->lastInsertValue);
                 // on cree les deux personnage lié au roster
                 $oRosterBank = new \Commun\Model\Personnages();
                 $oRosterBank->setNom($oRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["bank"]);
                 $oRosterBank->setIsTech(true);
                 $oRosterBank->setGenre(1);
                 $oRosterBank->setIdClasses(1);
                 $oRosterBank->setIdRace(1);
                 $oRosterBank->setIdFaction(1);
                 $oRosterBank->setNiveau(0);
                 $oRosterBank->setRoyaume("bank");
                 $oRosterDisenchant = new \Commun\Model\Personnages();
                 $oRosterDisenchant->setNom($oRoster->getNom() . $this->_getConfig()["roster"]["suffixe"]["disenchant"]);
                 $oRosterDisenchant->setIsTech(true);
                 $oRosterDisenchant->setGenre(1);
                 $oRosterDisenchant->setIdClasses(1);
                 $oRosterDisenchant->setIdRace(1);
                 $oRosterDisenchant->setIdFaction(1);
                 $oRosterDisenchant->setNiveau(0);
                 $oRosterDisenchant->setRoyaume("disenchant");
                 // on sauvegarde en base
                 $this->_getTablePersonnage()->saveOrUpdatePersonnage($oRosterBank);
                 $this->_getTablePersonnage()->saveOrUpdatePersonnage($oRosterDisenchant);
             } catch (\Exception $exc) {
                 $aError = array();
                 $aError[] = $oRoster->getArrayCopy();
                 if (isset($oRosterBank)) {
                     $aError[] = $oRosterBank->getArrayCopy();
                 }
                 if (isset($oRosterDisenchant)) {
                     $aError[] = $oRosterDisenchant->getArrayCopy();
                 }
                 throw new DatabaseException(6000, 2, $this->_getServiceLocator(), $aError, $exc);
             }
         }
         return $oRoster;
     } catch (\Exception $ex) {
         throw new \Commun\Exception\LogException("Erreur lors de la sauvegarde ou mise à jour du roster", 0, $this->_getServiceLocator(), $ex);
     }
 }
Esempio n. 2
0
 /**
  * Extrait les informations du personnagee des donnes de battlnet et et les transforme en objet utilisable de notre coté.
  * Manque la faction qui n'est pas disponible
  * @param type $aDataPersonnageBnet
  * @return  \Core\Model\Personnages
  * @throws Exception
  */
 public static function extraitPersonnageDepuisBnet($aDataPersonnageBnet)
 {
     if (!isset($aDataPersonnageBnet)) {
         throw new \Exception('Les datas personnages issues de bnet ne peuvent être vide.');
     }
     $oPersonnage = new \Commun\Model\Personnages();
     $oPersonnage->setNom($aDataPersonnageBnet['name']);
     $oPersonnage->setNiveau($aDataPersonnageBnet['level']);
     $oPersonnage->setIdClasses($aDataPersonnageBnet['class']);
     if (isset($aDataPersonnageBnet['faction'])) {
         $oPersonnage->setIdFaction($aDataPersonnageBnet['faction']);
     }
     $oPersonnage->setIdRace($aDataPersonnageBnet['race']);
     $oPersonnage->setGenre($aDataPersonnageBnet['gender']);
     $oPersonnage->setRoyaume($aDataPersonnageBnet['realm']);
     $oPersonnage->setminiature($aDataPersonnageBnet['thumbnail']);
     $oPersonnage->setIsTech(false);
     if (isset($aDataPersonnageBnet['items'])) {
         $oPersonnage->setIlvl($aDataPersonnageBnet['items']['averageItemLevelEquipped']);
     }
     return $oPersonnage;
 }