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);
	}
    
    
}
?>