public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //BUT: Démarrer un template propre à cette page $coutPa = 1; //Vérifier l'état du perso if (!$perso->isAutonome()) { die('00|Votre n\'êtes pas en état d\'effectuer cette action.'); } //Vérifier les PA du perso if ($perso->getPa() <= $coutPa) { die('01|Vous n\'avez pas assez de PA pour effectuer cette action.'); } //Rechercher la banque $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque' . ' WHERE banque_lieu=:nomTech' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':nomTech', $perso->getLieu()->getNomTech(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la banque existe if ($arr === false) { die('02|Cette banque n\'existe pas (' . $perso->getLieu()->getNomTech() . ').'); } //Intancier le compte bancaire $banque = new Member_Banque($arr); //Rechercher le compte $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_id=:compteId' . ' AND compte_idperso=:persoId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compteId', $_POST['id'], PDO::PARAM_INT); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider le compte if ($arr === false) { die('03|Ce compte n\'existe pas (' . $_POST['id'] . ').'); } //Instancier le compte $compte = $banque->getCompte($arr['compte_compte'], $arr); //Valider si le montant est possible $montant = str_replace(',', '.', $_POST['montant']); if ($montant <= 0 || $montant > $perso->getCash()) { die('04|Vous ne pouvez pas déposer plus que vous avez ou un montant vide.'); } //Effectuer le transfert d'argent $perso->changeCash('-', $montant); $perso->setCash(); $compte->changeCash('+', $montant); $compte->setCash(); //Retirer les PA $perso->changePa('-', $coutPa); $perso->setPa(); //Ajouter la transaction à l'historique $compte->add_bq_hist('', 'DPOT', 0, $montant); $compteCash = $compte->getCash() == -1 ? 'illimité' : $compte->getCash(); //Confirmer les modifications avec les informations sur les changements die($_POST['id'] . '|OK|' . $compteCash . '|' . $perso->getCash() . '|' . $perso->getPa()); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //BUT: Démarrer un template propre à cette page $coutPa = 1; //Vérifier l'état du perso if (!$perso->isAutonome()) { die('00|Votre n\'êtes pas en état d\'effectuer cette action.'); } //Vérifier les PA du perso if ($perso->getPa() <= $coutPa) { die('01|Vous n\'avez pas assez de PA pour effectuer cette action.'); } if (!isset($_POST['compte']) || !isset($_POST['id'])) { return fctErrorMSG('Veuillez passer par le formulaire.'); } $occ = preg_match('/([0-9]{4})-([0-9]{4})-([0-9]{4})-([0-9]{4})/', $_POST['compte']); if ($occ == 0) { return fctErrorMSG('Le # de compte doit être au format XXXX-XXXX-XXXX-XXXX.', $errorUrl); } //Instancier la banque $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque' . ' WHERE banque_lieu=:nomTech' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':nomTech', $perso->getLieu()->getNomTech(), PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; if ($arr === false) { die('02|Cette banque n\'existe pas (' . $perso->getLieu()->getNomTech() . ').'); } $banque = new Member_Banque($arr); //Rechercher le compte $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_id=:compteId' . ' AND compte_idperso=:persoId;' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compteId', $_POST['id'], PDO::PARAM_INT); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte existe if ($arr === false) { die('03|Ce compte n\'existe pas (' . $_POST['id'] . ').'); } //Instancier le compte $compte = $banque->getCompte($arr['compte_compte'], $arr); //Rechercher le compte distant (celui vers lequel faire le transfert) $cptno = explode('-', $_POST['compte']); $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_banque=:banque' . ' AND compte_compte=:compte' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':banque', $cptno[0], PDO::PARAM_INT); $prep->bindValue(':compte', $cptno[1] . '-' . $cptno[2] . '-' . $cptno[3], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte a été trouvé if ($arr === false) { die('03|Ce compte n\'existe pas (' . $_POST['compte'] . ').'); } //Instancier le compte distant (celui vers lequel faire le transfert) $compte2 = $banque->getCompte($arr['compte_compte'], $arr); //Valider si le montant est possible $_POST['montant'] = str_replace(',', '.', $_POST['montant']); if ($_POST['montant'] <= 0 || $_POST['montant'] > $compte->getCash() && $compte->getCash() != -1) { die('04|Vous ne pouvez pas retirer plus que vous avez ou un montant vide.'); } //Effectuer le transfert d'argent $compte->changeCash('-', $_POST['montant']); $compte->setCash(); $compte2->changeCash('+', $_POST['montant']); $compte2->setCash(); //Retirer les PA $perso->changePa('-', $coutPa); $perso->setPa(); //Ajouter la transaction à l'historique $compte->add_bq_hist($compte2->getNoBanque() . '-' . $compte2->getNoCompte(), 'STRF', $_POST['montant'], 0); $compte2->add_bq_hist($compte->getNoBanque() . '-' . $compte->getNoCompte(), 'RTRF', 0, $_POST['montant']); $compteCash = $compte->getCash() == -1 ? 'illimité' : $compte->getCash(); //Confirmer les modifications avec les informations sur les changements die($_POST['id'] . '|OK|' . $compteCash . '|' . $perso->getCash() . '|' . $perso->getPa()); }
public static function generatePage(&$tpl, &$session, &$account, &$perso) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante //BUT: Démarrer un template propre à cette page $errorUrl = '?popup=1&m=Action_Lieu_BanqueCompteAdd'; $coutPa = 1; if ($perso->getPa() <= $coutPa) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } if (empty($_POST['nom'])) { return fctErrorMSG('Vous devez associer un nom avec le compte.', $errorUrl); } if (empty($_POST['nip'])) { return fctErrorMSG('Vous devez associer un nip avec le compte.', $errorUrl); } if (!is_numeric($_POST['nip'])) { return fctErrorMSG('Le nip doit être numérique.', $errorUrl); } if ($_POST['nip'] < 0) { return fctErrorMSG('Le nip est incorrect.', $errorUrl); } //Rechercher la banque $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque' . ' WHERE banque_lieu=:nomTech;'; $prep = $db->prepare($query); $prep->bindValue(':nomTech', $perso->getLieu()->getNomTech(), PDO::PARAM_STR); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la banque existe if ($arr === false) { return fctErrorMSG('Cette banque n\'existe pas (' . $perso->getLieu()->getNomTech() . ').'); } //Instancier la banque $banque = new Member_Banque($arr); //Vérifier si la personne à assez d'argent sur elle pour ouvrir un compte if ($perso->getCash() < $banque->getFraisOuverture()) { return fctErrorMSG('Vous n\'avez pas assez d\'argent pour effectuer cette action.', $errorUrl); } //Effectuer le paiement ( Cash + PA) $perso->changeCash('-', $banque->getFraisOuverture()); $perso->setCash(); $perso->changePa('-', $coutPa); $perso->setPa(); //Créer le compte $compte_no = Member_BanqueCompte::generateAccountNo(); $query = 'INSERT INTO `' . DB_PREFIX . 'banque_comptes`' . ' (`compte_idperso` , `compte_nom` , `compte_banque` , `compte_compte` , `compte_cash`, `compte_nip`)' . ' VALUES' . ' (:persoId, :nom, :banque, :compte, 0, :nip);'; $prep = $db->prepare($query); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->bindValue(':banque', $banque->getNoBanque(), PDO::PARAM_STR); $prep->bindValue(':compte', $compte_no, PDO::PARAM_STR); $prep->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR); $prep->bindValue(':nip', $_POST['nip'], PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; $compteId = $db->lastInsertId(); //Rechercher le compte afin d'y faire des opérations. $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_id=:compteId' . ' AND compte_idperso=:persoId' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compteId', $compteId, PDO::PARAM_INT); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->executePlus($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte existe if ($arr === false) { return fctErrorMSG('Le compte que vous venez de créer n\'existe pas. Contacter un MJ.', $errorUrl); } //Instancier le compte $compte = $banque->getCompte($arr['compte_compte'], $arr); //Ajouter l'ouverture à l'historique $compte->add_bq_hist('', 'OVRT', 0, 0); //Rediriger la page $tpl->set('PAGE', 'Action_Lieu_Banque'); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/action_redirect.htm', __FILE__, __LINE__); }
public function majCompte($compte, $nip) { $dbMgr = DbManager::getInstance(); //Instancier le gestionnaire $db = $dbMgr->getConn('game'); //Demander la connexion existante if (empty($compte)) { //MAJ numero de compte et nip -> vider les informations. $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte="",' . ' inv_nobanque="",' . ' inv_nip=""' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; return true; } //Valider le découpage du numéro $occ = preg_match('/([0-9]{4})-([0-9]{4})-([0-9]{4})-([0-9]{4})/', $compte); if ($occ == 0) { throw new Exception('Le # de compte doit être au format XXXX-XXXX-XXXX-XXXX.'); return false; } $compte_exp = explode("-", $compte); $nobanque = $compte_exp[0]; $nocompte = $compte_exp[1] . '-' . $compte_exp[2] . '-' . $compte_exp[3]; //recup des info sur le compte du téléphone et sur le contenu de la partie compte du téléphone $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' LEFT JOIN ' . DB_PREFIX . 'banque ON (banque_no=compte_banque)' . ' WHERE compte_compte=:compte' . ' AND compte_banque=:banque' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->execute($db, __FILE__, __LINE__); $arrCompteTel = $prep->fetch(); $prep->closeCursor(); $prep = NULL; $compteTel = new Member_BanqueCompte($arrCompteTel); $banque = new Member_Banque($arrCompteTel); if ($banque->getSupportTelephone() != 1) { throw new Exception('Ce compte n\'est pas celui d\'une agence téléphonique.'); return false; } if (empty($nip) && $this->getNip() != NULL) { if ($compteTel->getNip() != $this->getNip()) { throw new Exception('Le nip précédemment sauvegardé ne correspond pas.'); return false; } $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte=:compte,' . ' inv_nobanque=:banque' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } else { if (!is_numeric($nip)) { throw new Exception('Ce NIP n\'est pas numérique.'); return false; } if ($compteTel->getNip() != $nip) { throw new Exception('Le nip ne correspond pas.'); return false; } //MAJ numero de compte et nip $query = 'UPDATE ' . DB_PREFIX . 'item_inv' . ' SET inv_nocompte=:compte,' . ' inv_nobanque=:banque,' . ' inv_nip=:nip' . ' WHERE inv_id=:id' . ' LIMIT 1;'; $prep = $db->prepare($query); $prep->bindValue(':compte', $nocompte, PDO::PARAM_STR); $prep->bindValue(':banque', $nobanque, PDO::PARAM_STR); $prep->bindValue(':nip', $nip, PDO::PARAM_INT); $prep->bindValue(':id', $this->getInvId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; } return true; }