Current File : /home/karenpetzb/application/models/CarteFidelite.php |
<?php
class CarteFidelite extends Zend_Db_Table
{
protected $_name = 'carte_fidelite';
protected $_primary = 'ID';
public function getAnnoncesByShow($isShow) {
return $this->select()->where('isSHOW = '.$isShow)->order('isSHOW ASC')->order('POINTFIDELITE ASC')->query()->fetchAll();
}
public function isAnnonceAvailableForUser($iduser, $idFidelite) {
$infoUser = $this->getInfosByUser($iduser);
$sql = "select count(*) TOTAL from carte_fidelite cf
where cf.POINTFIDELITE <= ".$infoUser['POINTFIDELITETOTAL']."
and cf.isSHOW = 1
and cf.ID = ".$idFidelite."
order by cf.POINTFIDELITE asc";
$result = $this->getAdapter()->fetchRow($sql);
if (isset($result) && $result['TOTAL'] > 0) {return true;}
return false;
}
public function getAnnoncesByAvailability($iduser) {
$infoUser = $this->getInfosByUser($iduser);
$sql = "select cf.* from carte_fidelite cf
where cf.POINTFIDELITE <= ".$infoUser['POINTFIDELITETOTAL']."
and cf.isSHOW = 1
order by cf.POINTFIDELITE asc";
return $this->getAdapter()->fetchAll($sql);
}
public function getAnnoncesByAvailabilityWithoutCurrent($iduser) {
$infoUser = $this->getInfosByUser($iduser);
$sql = "select cf.* from carte_fidelite cf
where cf.POINTFIDELITE > ".$infoUser['POINTFIDELITETOTAL']."
and cf.isSHOW = 1
order by cf.POINTFIDELITE asc";
return $this->getAdapter()->fetchAll($sql);
}
public function getInfosByUser($userID) {
$sql = "SELECT IFNULL(sum(cf.NBPOINT), 0) POINTFIDELITETOTAL, count(1) NBPRODUCTTOTAL
FROM command_fidelite as cf
LEFT JOIN command as c on c.id = cf.idcommand
WHERE c.iduser = ".$userID;
$sqlProd = "SELECT IFNULL(sum(cp.POINTFIDELITE), 0) POINTFIDELITETOTAL, IFNULL(sum(cp.POINTFIDELITESUM), 0) POINTFIDELITESUMTOTAL
FROM command as c
LEFT JOIN command_product as cp on c.id = cp.idcommand
WHERE cp.POINTFIDELITE > 0
and c.iduser = ".$userID;
$resultUser = $this->getAdapter()->fetchRow($sql);
$resultProd = $this->getAdapter()->fetchRow($sqlProd);
$result = array();
if ($this->isSumOfProducts()) {
$result['POINTFIDELITETOTAL'] = $resultProd['POINTFIDELITESUMTOTAL'] - $resultUser['POINTFIDELITETOTAL'];
} else {
$result['POINTFIDELITETOTAL'] = $resultProd['POINTFIDELITETOTAL'] - $resultUser['POINTFIDELITETOTAL'];
}
if ($result['POINTFIDELITETOTAL'] < 0) {
$result['POINTFIDELITETOTAL'] = 0;
}
$result['NBPRODUCTTOTAL'] = $resultUser['NBPRODUCTTOTAL'];
return $result;
}
public function getCommandUserCarteFidelite($id) {
$sql = "SELECT c.*
FROM command c
INNER JOIN command_product AS cp ON cp.IDCOMMAND = c.ID
INNER JOIN command_fidelite AS cf ON cf.IDCOMMAND = c.ID
WHERE c.IDUSER = ".$id."
GROUP BY c.id
ORDER BY c.DATESTART desc";
return $this->getAdapter()->fetchAll($sql);
}
private function isSumOfProducts() {
$registry = Zend_Registry::getInstance();
$setting = $registry->get('setting');
return $setting->carte_fidelite_sum_product_enabled;
}
public function getInfosEnableById($idFidelite) {
$sql = "SELECT * FROM carte_fidelite WHERE id = ".$idFidelite." AND isSHOW = 1";
return $this->getAdapter()->fetchRow($sql);
}
}
?>