public static function generatePage(&$tpl, &$session, &$account, &$perso) { //Valider si le # du compte à été recu if (!isset($_GET['id'])) { return fctErrorMSG('Id du compte manquant.'); } //Valider si le # de la banque a été reçu if (!isset($_GET['bid'])) { return fctErrorMSG('Id de la banque manquant.'); } //Passer l'id de la banque au template (pour le retour) $tpl->set('BANKID', $_GET['bid']); try { $compte = Member_BanqueCompte::getCompteFromId($_GET['id']); } catch (Exception $e) { return fctErrorMSG($e->getMessage()); } //Passer le compte au template $tpl->set('COMPTE', $compte); //Charger les transactions du compte $transactions = $compte->getTransactionsAuto(); if (!empty($transactions)) { $tpl->set('TRANSACTIONS', $transactions); } return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Lieu/BanqueTransactionAuto.htm', __FILE__, __LINE__); }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { //Valider si le # de compte a été recu if (!isset($_POST['compteId']) || !is_numeric($_POST['compteId'])) { return fctErrorMSG('Id du compte invalide.'); } //Valider si le # de la banque a été recu if (!isset($_POST['banqueId']) || !is_numeric($_POST['banqueId'])) { return fctErrorMSG('Id de la banque invalide.'); } $errorUrl = '?mj=Lieu_BanqueTransactionAuto&id=' . $_POST['compteId'] . '&bid=' . $_POST['banqueId']; //Valider si une transaction est passée if (!isset($_POST['tid'])) { return fctErrorMSG('Vous devez sélectionner une transaction.', $errorUrl); } //Instancier le compte try { $compte = Member_BanqueCompte::getCompteFromId($_POST['compteId']); } catch (GameException $e) { return fctErrorMSG($e->getMessage()); } //supprimer la transaction $compte->delTransactionAuto($_POST['tid']); die("<script type=\"text/javascript\">location.href='?mj=Lieu_BanqueTransactionAuto&id=" . $_POST['compteId'] . "&bid=" . $_POST['banqueId'] . "';</script>"); }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { //Valider si le # du compte à été recu if (!isset($_POST['compteId']) || !is_numeric($_POST['compteId'])) { return fctErrorMSG('Ce compte est invalide.'); } //Valider si le # de banque à été recu if (!isset($_POST['banqueId']) || !is_numeric($_POST['banqueId'])) { return fctErrorMSG('banque invalide.'); } //Valider si le # de transaction à été recu if (!isset($_POST['tid']) || !is_numeric($_POST['tid'])) { return fctErrorMSG('Transaction invalide.'); } //Instancier le compte try { $compte = Member_BanqueCompte::getCompteFromId($_POST['compteId']); } catch (GameException $e) { return fctErrorMSG($e->getMessage()); } //Rechercher la transaction $transactions = $compte->getTransactionsAuto(); foreach ($transactions as $transaction) { if ($transaction->getId() == $_POST['tid']) { $transactionFound = $transaction; } } //Vérifier si la transaction existe if (!isset($transactionFound)) { return fctErrorMSG('Cette transaction n\'existe pas. (' . $_POST['tid'] . ')'); } //Vérifier les données if (!is_numeric($_POST['value'])) { return fctErrorMSG('Le montant doit être numérique.'); } if (!isset($_POST['date_day']) || empty($_POST['date_day']) || !isset($_POST['date_month']) || empty($_POST['date_month']) || !isset($_POST['date_year']) || empty($_POST['date_year'])) { return fctErrorMSG('La date est incomplète.'); } if (!is_numeric($_POST['date_day']) || !is_numeric($_POST['date_month']) || !is_numeric($_POST['date_year'])) { return fctErrorMSG('La date est erronée.'); } if (!checkdate($_POST['date_month'], $_POST['date_day'], $_POST['date_year'] - GAMETIME_DECAL)) { return fctErrorMSG('La date est erronée.'); } //Mettre à jour les informations try { $newCompteTo = Member_BanqueCompte::getCompteFromNoCompte($_POST['compteTo']); $transactionFound->changeCompteIdTo($newCompteTo->getId()); $transactionFound->changeDescription($_POST['description']); $transactionFound->changeValue($_POST['value']); $date = mktime(0, 0, 0, $_POST['date_month'], $_POST['date_day'], $_POST['date_year'] - GAMETIME_DECAL); $transactionFound->changeDate($date); $transactionFound->setData(); } catch (GameException $e) { return fctErrorMSG($e->getMessage()); } //rediriger la page die("<script type=\"text/javascript\">location.href='?mj=Lieu_BanqueTransactionAuto&id=" . $_POST['compteId'] . "&bid=" . $_POST['banqueId'] . "';</script>"); }
public static function generatePage(&$tpl, &$session, &$account, &$mj) { //Vérifier le # du compte a été recu if (!isset($_POST['compteId'])) { return fctErrorMSG('Ce compte est invalide (aucun compte).'); } if (!isset($_POST['banqueId'])) { return fctErrorMSG('Identifiant banque manquant.'); } //Valider si une transaction à été sélectionnée if (!isset($_POST['tid'])) { return fctErrorMSG('Aucune transaction n\'a été sélectionnée.'); } //Instancier le compte try { $compte = Member_BanqueCompte::getCompteFromId($_POST['compteId']); } catch (GameException $e) { return fctErrorMSG($e->getMessage()); } //Passer le compte au template $tpl->set('COMPTE', $compte); //Passer l'id de la banque au template $tpl->set('BANQUE_ID', $_POST['banqueId']); //Rechercher la transaction $transactions = $compte->getTransactionsAuto(); foreach ($transactions as $transaction) { if ($transaction->getId() == $_POST['tid']) { $transactionFound = $transaction; } } //Vérifier si la transaction existe if (!isset($transactionFound)) { return fctErrorMSG('Cette transaction n\'existe pas.'); } //Passer les informations sur la carte au template $tpl->set('TRANSACTION', $transactionFound); //Afficher la page return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Mj/Lieu/BanqueTransactionAutoMod.htm', __FILE__, __LINE__); }
public static function save() { //Instancier le compte $compteFrom = Member_BanqueCompte::getCompteFromId($_POST['compteId']); $compteTo = Member_BanqueCompte::getCompteFromNoCompte($_POST['compteNoTo']); //Vérifier les valeurs if (!is_numeric($_POST['value'])) { throw new GameException('Le montant doit être numérique.'); } if (!isset($_POST['date_day']) || empty($_POST['date_day']) || !isset($_POST['date_month']) || empty($_POST['date_month']) || !isset($_POST['date_year']) || empty($_POST['date_year'])) { throw new GameException('La date est incomplète.'); } if (!is_numeric($_POST['date_day']) || !is_numeric($_POST['date_month']) || !is_numeric($_POST['date_year'])) { throw new GameException('La date est erronée.'); } if (!checkdate($_POST['date_month'], $_POST['date_day'], $_POST['date_year'] - GAMETIME_DECAL)) { throw new GameException('La date est erronée.'); } $date = mktime(0, 0, 0, $_POST['date_month'], $_POST['date_day'], $_POST['date_year'] - GAMETIME_DECAL); //Créer la nouvelle transaction Member_BanqueTransactionAuto::createNewTransactionAuto($compteFrom->getId(), $compteTo->getId(), $_POST['value'], $_POST['description'], $date); die("<script type=\"text/javascript\">location.href='?mj=Lieu_BanqueTransactionAuto&id=" . $_POST['compteId'] . "&bid=" . $_POST['banqueId'] . "';</script>"); }
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 //Cout en PA des actions $coutPa = 1; if ($perso->getPa() <= $coutPa) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.', $errorUrl); } //Vérifier l'état du perso if (!$perso->isAutonome()) { return fctErrorMSG('Votre n\'êtes pas en état d\'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_STR); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si la banque existe if ($arr === false) { return fctErrorMSG('Cette banque est actuellement innaccessible ou innexistante (' . $perso->getLieu()->getNomTech() . ').'); } //Instancier la banque $banque = new Member_Banque($arr); $tpl->set('BANQUE', $banque); //Passer l'objet "banque" au template //###Changer le NIP if (isset($_POST['changeNIP'])) { if (!isset($_POST['nip'])) { return fctErrorMSG('Vous devez entrer un NIP.'); } if (empty($_POST['nip'])) { return fctErrorMSG('Vous devez entrer un NIP.'); } if (!is_numeric($_POST['nip'])) { return fctErrorMSG('Le NIP doit être numérique.'); } if ($_POST['nip'] < 0) { return fctErrorMSG('Le NIP est incorrect.'); } if (!isset($_POST['compte_id'])) { fctBugReport('Le compte n\'est pas spécifié.', array(), __FILE__, __LINE__); } //Récupérer le compte try { $compteToChangeNIP = Member_BanqueCompte::getCompteFromId($_POST['compte_id']); } catch (GameException $e) { return fctErrorMSG($e->getMessage()); } //Modifier le nip $compteToChangeNIP->changeNIP($_POST['nip']); } //###Fermer un compte if (isset($_POST['close'])) { //Valider si le perso possède assez de PA if ($perso->getPa() < 1) { return fctErrorMSG('Vous n\'avez pas assez de PA pour effectuer cette action.'); } //Instancier 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', $_POST['compte_id'], PDO::PARAM_STR); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arr = $prep->fetch(); $prep->closeCursor(); $prep = NULL; //Valider si le compte existe if ($arr === false) { return fctErrorMSG('Ce compte n\'existe pas (' . $_POST['compte_id'] . ').'); } //Instancier le compte $compte = $banque->getCompte($arr['compte_compte'], $arr); //Valider if (!isset($_POST['c_check'])) { return fctErrorMSG('Vous devez cocher la case pour confirmer que vous voulez bien fermer ce compte.', '?popup=1&m=Action_Lieu_Banque'); } //Effectuer le transfert d'argent (Transférer l'argent du compte vers le perso) $perso->changeCash('+', $compte->getCash()); $perso->setCash(); //Effacer le compte $query = 'DELETE FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_id=:compteId' . ' AND compte_idperso=:persoId' . ' LIMIT 1'; $prep = $db->prepare($query); $prep->bindValue(':compteId', $_POST['compte_id'], PDO::PARAM_STR); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $prep->closeCursor(); $prep = NULL; //Retirer les PA $perso->changePa('-', $coutPa); $perso->setPa(); //Ajouter la transaction à l'historique $compte->add_bq_hist('', 'FRMT', $compte->getCash(), 0, "FERMÉ"); Member_He::add('System', $perso->getId(), 'banque', 'Vous fermez un compte en banque.'); } $tpl->set('PA', $perso->getPa()); $tpl->set('CASH', $perso->getCash()); //Trouver tous les comptes appartenant au perso $query = 'SELECT *' . ' FROM ' . DB_PREFIX . 'banque_comptes' . ' WHERE compte_banque=:banque' . ' AND compte_idperso=:persoId;'; $prep = $db->prepare($query); $prep->bindValue(':banque', $banque->getNoBanque(), PDO::PARAM_STR); $prep->bindValue(':persoId', $perso->getId(), PDO::PARAM_INT); $prep->execute($db, __FILE__, __LINE__); $arrCompte = $prep->fetchAll(); $prep->closeCursor(); $prep = NULL; //Ouvrir un nouveau compte si on le demande ou si aucun compte n'existe if (count($arrCompte) == 0 || isset($_POST['newaccount'])) { //Afficher le template d'ouverture de compte $tpl->set('BANK_ACCOUNT_NAME', $perso->getNom()); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque_compte_add.htm', __FILE__, __LINE__); } else { //Faire les opération sur le(s) compte(s) existant(s). foreach ($arrCompte as &$arr) { $BANK_ACCOUNTS[] = $banque->getCompte($arr['compte_compte'], $arr); } $tpl->set('BANK_ACCOUNTS', $BANK_ACCOUNTS); return $tpl->fetch($account->getSkinRemotePhysicalPath() . 'html/Member/Action/Lieu/Banque.htm', __FILE__, __LINE__); } }
/** Effectuer la transaction * <br> La date pour la prochaine transaction est repoussée au moins suivant. * <br> La fonction peut lever une exception de type GameException si un des comptes * <br> n'est associé à rien. */ public function effectuerTransaction() { /* Instances des comptes concernés */ $compteFrom = Member_BanqueCompte::getCompteFromId($this->compteIdFrom); $compteTo = Member_banqueCompte::getCompteFromId($this->compteIdTo); /* On effectue la transaction que si les fonds sont suffisants dans le compte emetteur */ if ($this->value <= $compteFrom->getCash() || $compteFrom->getCash() == -1) { $compteFrom->changeCash('-', $this->value); $compteTo->changeCash('+', $this->value); /* todo : gérer avec une transaction pour éviter les problèmes */ $compteFrom->setCash(); $compteTo->setCash(); /* Ajouter la transaction aux historiques */ $compteFrom->add_bq_hist($compteTo->getNoBanque() . '-' . $compteTo->getNoCompte(), 'STRF', $this->value, 0); $compteTo->add_bq_hist($compteFrom->getNoBanque() . '-' . $compteFrom->getNoCompte(), 'RTRF', 0, $this->value); } /* Repousser le prochain transfert 1 mois plus tard */ $this->date = strtotime("+1 month", $this->date); $this->setData(); }