Example #1
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;
 }
Example #2
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);
     }
 }
 /**
  * Action pour la création.
  *
  * @return array
  */
 public function createAction()
 {
     $oForm = new \Commun\Form\PersonnagesForm($this->getServiceLocator());
     $oRequest = $this->getRequest();
     $oFiltre = new \Commun\Filter\PersonnagesFilter();
     $oForm->setInputFilter($oFiltre->getInputFilter());
     if ($oRequest->isPost()) {
         $oEntite = new \Commun\Model\Personnages();
         $oForm->setData($oRequest->getPost());
         if ($oForm->isValid()) {
             try {
                 $oEntite->exchangeArray($oForm->getData());
                 $this->getTablePersonnage()->insert($oEntite);
                 $msg = $this->_getServTranslator()->translate("Le personnage a été créé avec succès.");
                 $this->_getLogService()->log(LogService::INFO, $msg, LogService::USER, $oRequest->getPost());
                 $this->flashMessenger()->addMessage($msg, 'success');
                 return $this->redirect()->toRoute('backend-personnages-list');
             } catch (\Exception $exc) {
                 $msg = $this->_getServTranslator()->translate("Une erreur est survenue lors de la création du personnage.");
                 $this->_getLogService()->log(LogService::ERR, $exc->getMessage(), LogService::USER, $oRequest->getPost());
                 $this->flashMessenger()->addMessage($msg, 'error');
             }
         }
     }
     // Pour optimiser le rendu
     $oViewModel = new ViewModel();
     $oViewModel->setTemplate('backend/personnages/create');
     return $oViewModel->setVariables(array('form' => $oForm));
 }