﻿
<?php
$classDir = dirname(__FILE__) . '/../' ;

require_once $classDir . 'Framework/Controller.php' ;
require_once $classDir .'entities/DeviseModel.php' ;
require_once $classDir .'entities/ZoneModel.php' ;
require_once $classDir .'entities/ClientModel.php' ;
require_once $classDir .'entities/AbonneModel.php' ;
require_once $classDir .'entities/Model.php' ;
require_once $classDir . 'Framework/userBundle/Controllers/UserController'  ;
class CustomAppController extends UserController 
{
	private $viewLocation = dirname(__FILE__) . '../../vues/' ;
	protected $pageLink = 'index.php?' ;
	public function __construct()
	{
		
	
		
		
		//*********************************** déclaration du chemin du repertoire des vues
		$this->viewLocation = 'vues/' ;
		
	}
	
	
	public function xAction()
	{
	
		
	}
	
	public function getCurrencyInfoAction($donnees)
	{
		(isset($_GET["api_key"]))&&(isset($_GET["password"]))&&(isset($_GET["email"]))&&(isset($_GET["currency_code_from"]))&&(isset($_GET["currency_code_to"])))
		
		$abonne = new AbonneModel() ;
		$devise = new DeviseModel() ;
		$requete = $abonne->getSome(array('api_key'=>$donnees['api_key'],'password'=>$donnees['password'],'email'=>$donnees['email']),array(),null , '') ;
		if($reponse = $requete->fetch())
		{
			if($reponse['etat_abonne']=='valide')
			{
				$requeteDeviseFrom = $devise->getSome(array('code_devise'=>$donnees['currency_code_from']),array(),null , '') ;
				if($reponseDeviseFrom = $requeteDeviseFrom->fetch())
				{
					$requeteDeviseTo = $devise->getSome(array('code_devise'=>$donnees['currency_code_from']),array(),null , '') ;
					if($reponseDeviseTo = $requeteDeviseTo->fetch())
					{
						$tauxAcheteur = $reponseDeviseFrom['taux_acheteur'] / $reponseDeviseTo['taux_acheteur'] ;
						$tauxVendeur
						echo '
						<currency>
							<codeDevise>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'</codeDevise>
							<codeDeviseDest>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</codeDeviseDest>
							
							<designation>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</designation>
							<tauxAcheteur>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</tauxAcheteur>
							<tauxVendeur>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</tauxVendeur>
							<tauxMoyen>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</tauxMoyen>
							<heureDerniereVaration>' . 
							$reponseDeviseFrom['code_devise']
							. 
							'
							</heureDerniereVaration>
						<currency>
						
						'  ;
					}
					else
					{
						
					}
				}
				else
				{
					
					
				}
			}
			else
			{
				
			}
				
		}
		else
		{
			echo 'athentification failed'  ;
		}
		$requete = $abonne->getSome(array('api_key'=>$donnees['api_key'],'password'=>$donnees['password'],'email'=>$donnees['email']),array(),null , '') ;
	}
	
	
	
//*************************************************devise*********************	
	public function seeAllDevisesAction()
	{
	
		$mydevise = new DeviseModel() ;
		$data = array('listeDevises'=>$mydevise->getAll()) ;
		
		$page = $this->viewLocation . 'seeAlldevisesView.php' ;
		$this->render($page,$data) ;
	
		
		
	}
	
	public function insertDeviseAction()
	{
	
		/* $mydevise = new DeviseModel() ;
		$data = array('listedevises'=>$mydevise->getAll()) ;
		 */
		
		$page = $this->viewLocation . 'insertDeviseView.php' ;
		$this->render($page,array()) ;
	
		
		
	}
	
	public function errorInsertDeviseAction(array $donnees)
	{
		$page = $this->viewLocation . 'errorInsertDeviseView.php' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	

		
	}
	public function errorModifDeviseAction(array $donnees)
	{
		$page = $this->viewLocation . 'errorModifDeviseView.php' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	

		
	}
	
	public function exeInsertDeviseAction(array $donnees)
	{
	
		$mydevise = new DeviseModel() ;
		$verif = $mydevise->getSome(array('designation'=>$donnees['designation']),array(),'',1);
		$verif2 = $mydevise->getSome(array('initiales'=>$donnees['initiales']),array(),'',1);
		if($verif->fetch())
		//mysql_num_rows($verif)>0
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			//$this->redirect('index.php?operation=errorInsertOnedevise&quantite_credit='. $donnees['quantite_credit'] . '&prix_unit_ht='  . $donnees['prix_unit_ht'] . '&prix_unit_ttc=' . $donnees['prix_unit_ttc'] . '&delai=' . $donnees['delai']) ;
			$page = $this->viewLocation . 'errorInsertDeviseView.php' ;
			$donnees['errorLabel'] = 'ce nom est dejà utilisé pour une autre devise' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	
		}
		elseif($verif2->fetch())
		//mysql_num_rows($verif2)>0
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			//$this->redirect('index.php?operation=errorInsertOnedevise&quantite_credit='. $donnees['quantite_credit'] . '&prix_unit_ht='  . $donnees['prix_unit_ht'] . '&prix_unit_ttc=' . $donnees['prix_unit_ttc'] . '&delai=' . $donnees['delai']) ;
			$page = $this->viewLocation . 'errorInsertDeviseView.php' ;
			$donnees['errorLabel'] = 'ces initiales sont dejà utilisés pour une autre devise' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	
		}
		else
		{
			$mydevise->bdInsert($donnees) ;
				$this->redirect('index.php?operation=seeAllDevises') ;
		}
		
		 
		
	}
	
	
	public function modifDeviseAction($idDevise)
	{
		$mydevise = new DeviseModel() ;
		//$mydevise->bdHydrate($iddevise) ;
		$requete = $mydevise->getSome(array('id_devise'=>$idDevise),array(),'',1);
		if($donnees = $requete->fetch())
		//mysql_num_rows($requete)>0
		
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$page = $this->viewLocation . 'devises/modifDeviseView.php' ;
			$this->render($page,array('devise'=>$donnees)) ;
		}
		else
		{
			
				//$this->redirect('index.php?operation=seeAlldevises') ;
				$page = $this->viewLocation . 'finishModifDeviseView.php' ;
			$this->render($page,array('devise'=>$donnees)) ;
		}
		
	}
	
	
	
	public function exeModifDeviseAction(array $donnees)
	{
	
		$mydevise = new DeviseModel() ;
		$verif = $mydevise->getSome(array('designation'=>$donnees['designation']),array(),'',1);
		$verif2 = $mydevise->getSome(array('initiales'=>$donnees['initiales']),array(),'',1);
		if($verif->fetch())
		//mysql_num_rows($verif)>0
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			//$this->redirect('index.php?operation=errorInsertOnedevise&quantite_credit='. $donnees['quantite_credit'] . '&prix_unit_ht='  . $donnees['prix_unit_ht'] . '&prix_unit_ttc=' . $donnees['prix_unit_ttc'] . '&delai=' . $donnees['delai']) ;
			$page = $this->viewLocation . 'errorModifDeviseView.php' ;
			$donnees['errorLabel'] = 'ce nom est dejà utilisé pour une autre devise' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	
		}
		elseif($verif2->fetch())
		//mysql_num_rows($verif2)>0
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			//$this->redirect('index.php?operation=errorInsertOnedevise&quantite_credit='. $donnees['quantite_credit'] . '&prix_unit_ht='  . $donnees['prix_unit_ht'] . '&prix_unit_ttc=' . $donnees['prix_unit_ttc'] . '&delai=' . $donnees['delai']) ;
			$page = $this->viewLocation . 'errorModifDeviseView.php' ;
			$donnees['errorLabel'] = 'ces initiales sont dejà utilisées pour une autre devise' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	
		}
		else
		{
			$mydevise->bdUpdate($donnees,array('id_devise'=>$donnees['id_devise'])) ;
				$this->redirect('index.php?operation=seeAlldevises') ;
				
		}
		
	}
	public function deleteDeviseAction($idDevise)
	{
		$mydevise = new DeviseModel() ;
		//$mydevise->bdHydrate($iddevise) ;
		$requete = $mydevise->getSome(array('id_devise'=>$idDevise),array(),'',1);
		if($donnees = $requete->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$mydevise->bdDelete(array('id_devise'=>$donnees['id_devise'])) ;

			$page = $this->viewLocation . 'deleteOnedeviseView.php' ;
			$this->render($page,array('devise'=>$donnees)) ;
		}
		else
		{
			
				$this->redirect('index.php?operation=seeAlldevises') ;
				
		}
		
	}
	
	
	//*************************************************type_sms*********************	
	public function seeAllZoneAction()
	{
	
		$myzone = new ZoneModel() ;
		$data = array('listeZone'=>$myzone->getAll()) ;
		
		$page = $this->viewLocation . 'seeAllZoneView.php' ;
		$this->render($page,$data) ;
	
		
		
	}
	
	public function insertOneZoneAction()
	{
	
		/* $mydevise = new DeviseModel() ;
		$data = array('listedevises'=>$mydevise->getAll()) ;
		 */
		
		$page = $this->viewLocation . 'insertOneZoneView.php' ;
		$this->render($page,array()) ;
	
		
		
	}
	
	public function errorInsertOneZoneAction(array $donnees)
	{
		$page = $this->viewLocation . 'errorInsertOnedeviseView.php' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	

		
	}
	public function errorModifOneZoneAction(array $donnees)
	{
		$page = $this->viewLocation . 'errorModifOneZoneView.php' ;
		$this->render($page,array('donnees'=>$donnees)) ;
	

		
	}
	
	public function exeInsertOneZoneAction(array $donnees)
	{
	
		$myzone = new ZoneModel() ;
		$verif = $myzone->getSome(array('intitule_sms'=>$donnees['intitule_sms']),array(),'',1);
		if($verif->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$this->redirect('index.php?operation=errorInsertOneZone&intitule_sms='. $donnees['intitule_sms'] ) ;
		
		}
		else
		{
			$myzone->bdInsert($donnees) ;
				$this->redirect('index.php?operation=seeAllZone') ;
		}
			
		
	}
	
	
	public function modifOneZoneAction($idType)
	{
		$myzone = new ZoneModel() ;
		//$mydevise->bdHydrate($iddevise) ;
		$requete = $myzone->getSome(array('id_type_sms'=>$idType),array(),'',1);
		if($donnees = $requete->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$page = $this->viewLocation . 'modifOneZoneView.php' ;
			$this->render($page,array('zone'=>$donnees)) ;
		}
		else
		{
			
				//$this->redirect('index.php?operation=seeAlldevises') ;
				$page = $this->viewLocation . 'finishModifOneZoneView.php' ;
			$this->render($page,array('zone'=>$donnees)) ;
		}
		
	}
	
	public function exeModifOneZoneAction(array $donnees)
	{
	
		$myzone = new ZoneModel() ;
		$verif = $myzone->getSome(array('intitule_sms'=>$donnees['intitule_sms']),array(),'',1);
		if($verif->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$this->redirect('index.php?operation=errorModifOneZone&intitule_sms='. $donnees['intitule_sms'] ) ;
		
		}
		else
		{
			$myzone->bdUpdate($donnees,array('id_type_sms'=>$donnees['id_type_sms'])) ;
				//$this->redirect('index.php?operation=seeAlldevises') ;
				$page = $this->viewLocation . 'finishModifOneZoneView.php' ;
			$this->render($page,array('zone'=>$donnees)) ;
		}
		
	
	
		
		
	}
	public function deleteOneZoneAction($idType)
	{
		$myzone = new ZoneModel() ;
		$verif = $myzone->getSome(array('id_type_sms'=>$idType),array(),'',1);
		if($donnees = $verif->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			$myzone->bdDelete(array('id_type_sms'=>$donnees['id_type_sms'])) ;

			$page = $this->viewLocation . 'deleteOneZoneView.php' ;
			$this->render($page,array('devise'=>$donnees)) ;
		}
		else
		{
			
				$this->redirect('index.php?operation=seeAllZone') ;
				
		}
		
	}
	
	//**********************************clients*********************
	public function seeAllCustomersAction()
	{
	$myclient = new ClientModel() ;
		//$data = array('listeClients'=>$myclient->getAll()) ;
		$data = array('listeClients'=>$myclient->getBestCustomers(0),'label'=>"Tous les clients et leurs commandes") ;
		
		$page = $this->viewLocation . 'seeAllClientsView.php' ;
		$this->render($page,$data) ;
	
		
	}
	public function seeBestCustomersAction()
	{
		$myclient = new ClientModel() ;
		$data = array('listeClients'=>$myclient->getBestCustomers(10),'label'=>"Tous les clients et leurs commandes") ;
		
		$page = $this->viewLocation . 'seeAllClientsView.php' ;
		$this->render($page,$data) ;
	
	}
	//***********************************statistiques***********************************************
	public function seeMostSolddevisesAction()
	{
		$mydevise = new DeviseModel() ;
		$data = array('listeValdevises'=>$mydevise->getMostSolddevises(0),'listeQuantdevises'=>$mydevise->getMostSoldQuantdevises(0)) ;
		
		
		$page = $this->viewLocation . 'seeMostSolddevisesView.php' ;
		$this->render($page,$data) ;
	}
	
		//***********************************authentification  et securité***********************************************
	public function hasAdminLevel()
	{
	
		if((isset($_SESSION['']))&&($_SESSION['level']=="admin"))
		{
			return true ;
		}
		return false ;
	}
	public function getUserLevel()
	{
	/*
	if($this->isAuthentified()) // une fonction qui regardera toujourzs dans la base de données si l utilisateur actuel (reference par un code) existe reellement dans la base de données .
	
	{// le instructions ci-dessous ne seront verifiées que si la condition est respectée.
	
	}
	
	*/
	
		if(isset($_SESSION['level']))
		{
			return $_SESSION['level'] ;
		}
		
		return "visitor";
	}
	
	public function getUserLevelNumber()
	{
	
		if(isset($_SESSION['levelNumber']))
		{
			return $_SESSION['levelNumber'] ;
		}
		
		return 0 ;
	}
	public function gotoLoginAction()
	{
	
		$this->redirect($this->pageLink . 'operation=login') ;
	}
	
	public function loginAction()
	{
	
		$this->render($this->viewLocation . 'loginView.php',array("case"=>"new")) ;
	}
	public function errorLoginAction()
	{
	
		$this->render($this->viewLocation . 'errorLoginView.php',array("case"=>"new")) ;
	}
	public function exeLoginAction($donnees)
	{
		$mymember = new AdminModel() ;
		$verif = $mymember->getSome(array('user_name'=>$donnees['user_name'],'password'=>$donnees['password']),array(),'',1);
		if($reponse = $verif->fetch())
		{
			// à annuler le prix du devise doit etre different selon le type de sms restructurer les relations entre ces devisebles
			
			$_SESSION['userName']  = $donnees['user_name'];
			$_SESSION['email']  = $reponse['email'];
			$_SESSION['level']  = $reponse['role'];
			$_SESSION['levelNumber']  = $reponse['role_level_number'];
			$this->redirect($this->pageLink . 'operation=seeAlldevises') ;
		
		}
		else
		{
			
				//$this->redirect('login.php?operation=errorLogin') ;
				$this->redirect('index.php') ;
			
		}
	}
	
}


?>