/** * Extrait les membre des donnes de battlnet et et les transforme en objet utilisable de notre coté. * @param type $aDataGuildeBnet * @param \Core\Model\Guildes $oGuilde * @param array $aOptionFiltre lvlMin| * @return array de \Core\Model\Personnages * @throws Exception */ public static function extraitMembreDepuisBnetGuilde($aDataGuildeBnet, \Commun\Model\Guildes $oGuilde, array $aOptionFiltre) { if (!isset($aDataGuildeBnet)) { throw new Exception("Les datas pour l'extraction de membres issues de bnet ne peuvent être vide."); } $aPersonnage = array(); $lvlMin = 0; if (isset($aOptionFiltre)) { if (isset($aOptionFiltre['lvlMin'])) { $lvlMin = $aOptionFiltre['lvlMin']; } } if (isset($aDataGuildeBnet['members'])) { foreach ($aDataGuildeBnet['members'] as $aCharacter) { if ($aCharacter['character']['level'] >= $lvlMin) { // $oPersonnage = new \Commun\Model\Personnages(); // $oPersonnage->setNom($aCharacter['character']['name']); // $oPersonnage->setNiveau($aCharacter['character']['level']); // $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); // $oPersonnage->setIdClasses($aCharacter['character']['class']); // //$oPersonnage->setIdFaction($aCharacter['character']['faction']); // $oPersonnage->setIdFaction($oGuilde->getIdFaction()); // $oPersonnage->setIdRace($aCharacter['character']['race']); // $oPersonnage->setGenre($aCharacter['character']['gender']); // $oPersonnage->setRoyaume($aCharacter['character']['realm']); // $oPersonnage->setminiature($aCharacter['character']['thumbnail']); // $aPersonnage[] = $oPersonnage; $oPersonnage = \Core\Util\ParserWow::extraitPersonnageDepuisBnet($aCharacter['character']); $oPersonnage->setIdGuildes($oGuilde->getIdGuildes()); $oPersonnage->setIdFaction($oGuilde->getIdFaction()); $aPersonnage[] = $oPersonnage; } } return $aPersonnage; } }
/** * Sauvegarde ou met a jour la guilde passée. * @param \Commun\Model\Guildes $oGuilde * @return \Commun\Model\Guildes */ public function saveOrUpdateGuilde($oGuilde) { $oGuilde->setNom(strtolower($oGuilde->getNom())); try { $oTabGuilde = $this->selectBy(array("idGuildes" => $oGuilde->getIdGuildes())); if (!$oTabGuilde) { $oTabGuilde = $this->selectBy(array("nom" => $oGuilde->getNom(), "serveur" => $oGuilde->getServeur(), "idFaction" => $oGuilde->getIdFaction())); } } catch (\Exception $exc) { throw new DatabaseException(1000, 4, $this->_getServiceLocator(), $oGuilde->getArrayCopy(), $exc); } // si n'existe pas on insert if (!$oTabGuilde) { try { $this->insert($oGuilde); $oGuilde->setIdGuildes($this->lastInsertValue); } catch (\Exception $exc) { throw new DatabaseException(1000, 2, $this->_getServiceLocator(), $oGuilde->getArrayCopy(), $exc); } } else { try { // sinon on update $oGuilde->setIdGuildes($oTabGuilde->getIdGuildes()); $this->update($oGuilde); } catch (\Exception $exc) { throw new DatabaseException(1000, 1, $this->_getServiceLocator(), $oGuilde->getArrayCopy(), $exc); } } return $oGuilde; }
/** * 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()); } }