Current File : /home/karenpetzb/application/modules/backoffice/controllers/UserController.php
<?php
class Backoffice_UserController extends Modules_Backoffice_Controllers_MainController
{

	function init()
	{
		$this->view->title = "Administration";
		$this->view->currentMenu = "User";
		$this->isConnectedWithRole('isUser');
	}
	function indexAction()
	{
		$this->_forward('/list');

	}
	function newsletterAction() {
		$this->view->titlePage = "Envoyer une newsletter";
		$userNewsletter = new UserNewsletter();
		$listUser = $userNewsletter->select()->order('EMAIL ASC')->query()->fetchAll();

		$this->view->listMail = $listUser;

		$from = $this->newsletter_Mail;
		$this->view->messageFrom = $from;

		if ($this->getRequest()->isPost()) {

			$body = $this->getRequest()->getPost('mailMessage');
			$objet = $this->getRequest()->getPost('objetMessage');
			$from = $this->getRequest()->getPost('fromMessage');

			$this->view->messageBody = $body;
			$this->view->messageObjet = $objet;
			$this->view->messageFrom = $from;

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());

			$validatorEmail = new Zend_Validate();
			$validatorEmail -> addValidator(new Zend_Validate_EmailAddress());

			if ($validator->isValid($body) && $validator->isValid($objet) && $validatorEmail->isValid($from)) {
					
				if ($this->getRequest()->getPost('email') == 'All') {
					foreach ($listUser as $row) {
						$mail = new Zend_Mail();
						$mess = $body;
						//$mess = $body."<br><br> Pour vous d�sinscrire � la newsletter de ".$this->siteName.", <a href='XXXXXX/user/newsletter/nltr_quit/".$row['CODE']."' >cliquer ici</a>";
						
						
						$mail->setBodyHtml($mess);
						$mail->setFrom($from, $this->siteName);
						$mail->addTo($row['EMAIL']);
						$mail->setSubject($objet);
						try {
							$mail->send();
							$this->log("Les emails ont �t� envoy�s",'info');
							$this->view->messageSuccess = "Les emails ont �t� envoy�s";
						} catch (Zend_Exception $e) {
							$this->log($e->getMessage(),'err');
							$this->view->messageError = "Les emails n'ont pas �t� envoy�s";
						}
					}

				} else {
					$isExist = $userNewsletter->fetchRow("EMAIL = '".$this->getRequest()->getPost('email')."'");
					if ($isExist) {
						$mail = new Zend_Mail();
						$mess = $body;
						$mail->setBodyHtml($mess);
						$mail->setFrom($from, $this->siteName);
						$mail->addTo($isExist['EMAIL']);
						$mail->setSubject($objet);
						try {
							$mail->send();
							$this->view->messageSuccess = "L'email a �t� envoy�";
							$this->log("L'email � �t� envoy� : ".$isExist['EMAIL'],'info');
						} catch (Zend_Exception $e) {
							$this->log($e->getMessage(),'err');
							$this->view->messageError = "L'email n'a pas �t� envoy� : ".$isExist['EMAIL'];
						}
					}
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
				foreach ($validatorEmail->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}

		}
	}

	function searchAction()
	{
		$this->view->titlePage = "Recherche avanc�e des clients";
		$adminNamespace = $this->getSession();
		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		//Gestion des tris
		$table = 'NOM';
		$tri = 'ASC';

		if ($this->_request->getParam('col'))
		{
			$adminNamespace->triUserCol = $this->_request->getParam('col');
			($adminNamespace->triUserSens == 'ASC') ? $adminNamespace->triUserSens = 'DESC' : $adminNamespace->triUserSens = 'ASC';
		}
		if (isset($adminNamespace->triUserCol)) {
			$table = $adminNamespace->triUserCol;
			$tri = $adminNamespace->triUserSens;
		}
		
		$this->view->listSearch = array();
		if ($this->_request->isPost()) {
			$post = $this->_request->getPost();
			
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());
			if ($validator->isValid($post['searchValue'])) {
				$recherche = '%'.$post['searchValue'].'%';
	
				$this->view->titlePage .= " : ".$post['searchValue'];
				//Appel model pour listing
				$user = new User();
				$select = $user->select()
				->where('NOM LIKE ? ',$recherche)
				->orWhere('PRENOM LIKE ? ',$recherche)
				->orWhere('TEL LIKE ? ',$recherche)
				->orWhere('ADRESSE LIKE ? ',$recherche)
				->orWhere('EMAIL LIKE ? ',$recherche)
				->order($table.' '.$tri);
	
				$listusers = $user->fetchAll($select);
				$adminNamespace->searchUsers = $listusers;
	
				$this->view->listSearch = $listusers;
	
				if (count($listusers) == 0) {
					$this->view->messageError = "Aucun resultats";
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError =  $this->getErrorValidator($errorCode);
				}
			}
			
		} else {
			if (isset($adminNamespace->searchUsers) && !empty($adminNamespace->searchUsers)) {
				$this->view->listSearch = $adminNamespace->searchUsers;
			}
		}
	}

	function editAction() {
			
		$this->view->titlePage = "Modifier un client";
			
		$codeIntern = new CodeIntern();
		$this->view->listCodeIntern = $codeIntern->fetchAll();
			
		$id = (int)$this->_request->getParam('id');
		if ($id > 0) {
			$user = new User();
			$row = $user->getUserByID($id);
            
            $carteFidelite = new CarteFidelite();
            $this->view->listcommandfidelite = $carteFidelite->getCommandUserCarteFidelite($id);
            $this->view->userfidelite = $carteFidelite->getInfosByUser($id);
            
			$this->view->populateForm = $row;
			$this->getRemiseClient($row['ID'], $row['CODEINTERN']);

			$userCaddyType = new UserCaddyType();
			$this->view->caddyType = $userCaddyType->computeCaddyTypeByUser($row['ID'], true);
		}
	}

	function edituserAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());

			$validatorEmail = new Zend_Validate_EmailAddress();

			//get the form params
			$params = $this->_request->getPost();

			//Refractor the params
			$data = array (
			 		'ID' => $filter->filter($params['id']),
                    'NOM' => $filter->filter($params['lastname']), 
                    'PRENOM' => $filter->filter($params['firstname']),
                    'CIVILITE' => $filter->filter($params['civility']), 
                    'FONCTION' => $filter->filter($params['fct']), 
                    'RAISONSOCIAL' => $filter->filter($params['raisonsocial']), 
                    'ADRESSECOMPLETE' => $filter->filter($params['adressecomplete']),
                    'ADRESSE' => $filter->filter($params['adresse']), 
                    'CP' => $filter->filter($params['cp']), 
                    'VILLE' => $filter->filter($params['ville']), 
                    'PAYS' => $filter->filter($params['pays']),  
                    'DEPARTEMENT' => $filter->filter($params['departement']),  
                    'REGION' => $filter->filter($params['region']), 
                    'EMAIL' => $filter->filter($params['email']), 
                    'TEL' => $filter->filter($params['tel']), 
                    'FAX' => $filter->filter($params['fax']), 
                    'NUMCOMPTE' => $filter->filter($params['numcompte']),
                    'SIRET' => $filter->filter($params['siret']),
                    'NUMIDFISC' => $filter->filter($params['numidfisc']),
                    'CODEAPE' => $filter->filter($params['codeape']), 
                    'SECTACTIVITE' => $filter->filter($params['sectactivite']), 
                    'COMMENTAIRE' => $filter->filter($params['comm']), 
                    'CODEINTERN' => $filter->filter($params['cintern']), 
                    'MODEPAIEMENT' => $filter->filter($params['modepaiement']), 
                    'TYPE' => $filter->filter($params['typeuser']), 
                    'isCREDIT' => $filter->filter($params['iscredit']),
					'isRECEPFACTURE' => $filter->filter($params['isrecepfacture']));

			if ($validator->isValid($data['NOM']) &&
			$validator->isValid($data['PRENOM']) &&
			$validator->isValid($data['ADRESSE']) &&
			$validator->isValid($data['CP']) &&
			$validator->isValid($data['VILLE']) &&
			$validator->isValid($data['PAYS']) &&
			$validatorEmail->isValid($data['EMAIL'])
			) {
				try {

					$id = $data['ID'];

					if ( $id > 0) {
						$user = new User();
						$user->update($data, 'ID = '.$id);
						$this->log("Mise a jour de l'utilisateur : ".$id,'info');
					}
				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = "L'email existe d�j�";
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
				foreach ($validatorEmail->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}

		}
		$this->_forward('edit');
	}

	function getRemiseClient($id, $codeintern) {

		$promoUser = new PromoUser();

		$listUser = $promoUser->getRemiseByUserIDFull($id);
		if ($listUser) { $this->view->listUser = $listUser; }


		$listUserBrend = $promoUser->getRemiseByMarqueFull($id);
		if ($listUserBrend) {
			$this->view->listUserBrend = $listUserBrend;
		}


		$listCinternBrend = $promoUser->getRemiseByCodeInternMarqueFull($codeintern);
		if ($listCinternBrend) {
			$this->view->listCinternBrend = $listCinternBrend;
		}
	}
    
	function guestAction()
	{
        if ($this->FeatureProductSendDetail || $this->FeatureProductDocumentDownloadGuest) { 
    
		    $this->view->titlePage = "Gestion des invit�s";   
            
		    $userGuest = new UserGuest();
		    $select = $userGuest->select()->order('DATEINSERT desc');
			
		    $listusers = $userGuest->fetchAll($select);
			
		    $this->setPaginator($listusers, $this->_getParam('page',1), 50);
        } else {
		    $this->_forward('/list');
        }
	}

	function listAction()
	{
		$this->view->titlePage = "Gestion des clients";
		$adminNamespace = $this->getSession();
			
		//Gestion des tris
		$table = 'NOM';
		$tri = 'ASC';

		if ($this->_request->getParam('col'))
		{
			$adminNamespace->triUserCol = $this->_request->getParam('col');
			($adminNamespace->triUserSens == 'ASC') ? $adminNamespace->triUserSens = 'DESC' : $adminNamespace->triUserSens = 'ASC';
		}
		if (isset($adminNamespace->triUserCol)) {
			$table = $adminNamespace->triUserCol;
			$tri = $adminNamespace->triUserSens;
		}
			
		//Appel model pour listing
		$user = new User();
		$select = $user->select()
		->order($table.' '.$tri);
			
		$listusers = $user->fetchAll($select);
			
		$this->setPaginator($listusers, $this->_getParam('page',1), 50);
	}
	function delAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->getParam('id')) {
			$id = (int)$this->_request->getParam('id');
			if ($id > 0) {
				try {
					$user = new User();

					$user->delete('ID = '.$id);

					$this->view->messageSuccess = "L'utilisateur a ete supprime";

					$this->log("L'utilisateur a ete supprime ",'info');
				} catch (Zend_Exception $e) {

					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
				}
			}
		}
		$this->_forward('/list');

	}

	function banAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->getParam('id')) {
			$id = (int)$this->_request->getParam('id');
			if ($id > 0) {
				try {
					$user = new User();

					$data = array (
			 		'isBAN' => (int)$this->_request->getParam('ban'));

					$user->update($data, 'ID = '.$id);

					if ($data['isBAN']==0) {
						$this->view->messageSuccess = "L'utilisateur ne peut plus se connecter";
						$this->log("L'utilisateur ne peut plus se connecter : ".$id,'info');
					} else {
						$this->view->messageSuccess = "L'utilisateur peut se connecter";
						$this->log("L'utilisateur peut se connecter ".$id,'info');
					}

				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
				}
			}
		}
		$this->_forward('/list');

	}

	function codeinterneAction() {
		$this->view->titlePage = "Gestion des codes internes";
		$codeintern = new CodeIntern();
		if ($this->_request->isPost() && (int)$this->_request->getParam('id') ==0) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());


			//get the form params
			$params = $this->_request->getPost();

			$data = array (
			 		'CODE' => $filter->filter($params['code']),
			 		'LABEL' => $filter->filter($params['label'])
			);

			if ($validator->isValid($data['CODE']) && $validator->isValid($data['LABEL'])) {
					
				try {

					$codeintern->insert($data);

					$this->view->messageSuccess = "Le code interne a �t� ajout�";

				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = "Le code interne existe d�j�";

				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}

		}
		$this->view->listcodeintern = $codeintern->select()->order('CODE ASC')->query()->fetchAll();

	}
	function codeinterneeditAction()
	{
		$this->view->messageSuccess = "";
		$this->view->messageError = "";
			
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty())
			-> addValidator(new Zend_Validate_StringLength(3));

			$codeintern = new CodeIntern();

			//get the form params
			$params = $this->_request->getPost();

			$data = array (
			 		'CODE' => $filter->filter($params['code']),
			 		'LABEL' => $filter->filter($params['label']),
			 		'ID' => $filter->filter($params['id'])
			);

			if ($validator->isValid($data['CODE']) && $validator->isValid($data['LABEL'])
			) {
					
				try {
					$codeintern->update($data, 'ID = '.$data['ID']);

					$this->view->messageSuccess = "Le code interne a �t� modifi�";

				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = "Le code interne existe d�j�";

					$this->_forward('codeinterne');
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}
		}
		$this->_forward('codeinterne');
	}
	function codeinternedelAction() {

		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		if($this->_request->getParam('id')) {
			$id = (int)$this->_request->getParam('id');
			if ($id > 0) {
				try {
					$codeintern = new CodeIntern();
					$sql = 'SELECT u.NOM NOM, u.PRENOM PRENOM, u.ID IDUSER, uci.ID IDCODEINTERN, uci.CODE CODEINTERN
					FROM user_cintern uci 
					LEFT JOIN user AS u ON u.CODEINTERN = uci.ID
					WHERE u.CODEINTERN = '.$id ;
					$isExistCode = $codeintern->getAdapter()->fetchRow($sql);
					if (!$isExistCode) {
							
						$codeintern->delete('ID = '.$id);

						$this->view->messageSuccess = "Le code interne a �t� supprim�";
					} else {
						$this->view->messageError = "Le code interne est utilis� par : <b>".$isExistCode['NOM']." ".$isExistCode['PRENOM']."</b>";
					}
				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
					$this->_forward('codeinterne');
				}
			}
		}
		$this->_forward('codeinterne');
	}

	function panieraddAction() {
		$this->view->messageSuccess = "";
		$this->view->messageError = "";
			
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());

			$params = $this->getRequest()->getPost();
			$productChild = new ProductChild();

			$reference = $filter->filter($params['reference']);
			$remiseeuro = (int)$params['remiseeuro'];
			$remisepour = (int)$params['remisepour'];
			$id = (int)$params['id'];
			$isOK = true;
			if ($remiseeuro > 0 && $remisepour > 0) {
				$this->view->messageError = "La remise est soit en EURO, soit en POURCENTAGE. ";
				$isOK = false;
			}
			if ($remiseeuro == 0 && $remisepour == 0) {
				$this->view->messageError = "La remise est soit en EURO, soit en POURCENTAGE et est obligatoire. ";
				$isOK = false;
			}
			if (($validator->isValid($remiseeuro) || $validator->isValid($remisepour)) && $isOK == true && $validator->isValid($reference)) {
				$isExistChild = $productChild->fetchRow("REFERENCE = '".$reference."'");
				if ($isExistChild) {
					$userCaddyType = new UserCaddyType();
					$isExistCaddy =  $userCaddyType->fetchRow("REFERENCE = '".$reference."' AND USERID = ".$id);

					if ($isExistCaddy) {
						$data = array (
 		 						'REFERENCE' => $reference, 
								'REMISEEURO' => $remiseeuro,
						 		'REMISEPOUR' => $remisepour,
						 		'isACTIF' => 'Y' 
						 		);
						 		$userCaddyType->update($data, "REFERENCE = '".$reference."' AND USERID = ".$id);
					} else {
						$data = array (
 		 						'REFERENCE' => $reference,
								'USERID' => $id,
								'REMISEEURO' => $remiseeuro,
						 		'REMISEPOUR' => $remisepour,
						 		'isACTIF' => 'Y' 
						 		);
						 		$userCaddyType->insert($data);
					}


					$this->view->messageSuccess = "La r�f�rence : ".$data['REFERENCE']." a �t� ajout�e. ";
				} else {
					$this->view->messageError = "La r�f�rence : <b>".$reference."</b> n'existe pas. ";
				}
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError =  $this->getErrorValidator($errorCode);
				}
			}
		}
		$this->_forward('/edit');
	}

	function paniereditAction() {
		$this->view->messageSuccess = "";
		$this->view->messageError = "";
			
		if ($this->_request->isPost()) {

			//filtres pour changer les chaines
			$filter = new Zend_Filter();
			$filter	->addFilter(new Zend_Filter_StripTags())
			->addFilter(new Zend_Filter_StringTrim());

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty());

			$params = $this->getRequest()->getPost();
			$idcaddy = (int)$params['idcaddy'];
			$iduser = (int)$params['id'];
			$remiseeuro = (int)$params['remiseeuro'];
			$remisepour = (int)$params['remisepour'];

			$isOK = true;
			if ($remiseeuro > 0 && $remisepour > 0) {
				$this->view->messageError = "La remise est soit en EURO, soit en POURCENTAGE. ";
				$isOK = false;
			}
			if ($isOK == true && $idcaddy > 0) {
				$userCaddyType = new UserCaddyType();
				$data = array ('REMISEEURO' => $remiseeuro,
						 		'REMISEPOUR' => $remisepour,
						 		'isACTIF' => 'Y');
				$userCaddyType->update($data, "ID = ".$idcaddy);
				$this->view->messageSuccess = "La r�f�rence a �t� modifi�e. ";
			} else {
				foreach ($validator->getErrors() as $errorCode) {
					$this->view->messageError .=  $this->getErrorValidator($errorCode);
				}
			}
		}
		$this->_forward('/edit');
	}

	function panierdelAction() {
		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		$filter = new Zend_Filter();
		$filter	->addFilter(new Zend_Filter_StripTags())
		->addFilter(new Zend_Filter_StringTrim());

		if ($this->_request->isPost()) {
			$params = $this->getRequest()->getPost();
			$idcaddy = (int)$params['idcaddy'];
			if ($idcaddy > 0) {
				try {
					$userCaddyType = new UserCaddyType();
					$result = $userCaddyType->delete("ID = ".$idcaddy);

					$this->view->messageSuccess = "L'article du panier a �t� supprim�";

					$this->log("L'article du panier a �t� supprim�",'info');
				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
				}
			}
		}
		$this->_forward('/edit');
	}

	function panieractiveAction() {
		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		$filter = new Zend_Filter();
		$filter	->addFilter(new Zend_Filter_StripTags())
		->addFilter(new Zend_Filter_StringTrim());

		if ($this->_request->isPost()) {
			$params = $this->getRequest()->getPost();
			$idcaddy = (int)$params['idcaddy'];
			if ($idcaddy > 0) {
				try {
					$userCaddyType = new UserCaddyType();
					$data = array ( 'isACTIF' => $params['isActif'] );
					$result = $userCaddyType->update($data, "ID = ".$idcaddy);

					$this->view->messageSuccess = "L'article du panier a �t� modifi�";

					$this->log("L'article du panier a �t� modifi�",'info');

				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
				}
			}
		}
		$this->_forward('/edit');
	}

	function panieractiveallAction() {
		$this->view->messageSuccess = "";
		$this->view->messageError = "";

		$filter = new Zend_Filter();
		$filter	->addFilter(new Zend_Filter_StripTags())
		->addFilter(new Zend_Filter_StringTrim());

		if ($this->_request->isPost()) {
			$params = $this->getRequest()->getPost(); 
			$idUser = (int)$params['id'];
			if ($idUser > 0) {
				try {
					$user = new User();
					$data = array ( 'isCADDYTYPE' => $params['isActif'] );
					$result = $user->update($data, "ID = ".$idUser);

					$this->view->messageSuccess = "Les articles du panier ont �t� modifi�s";

					$this->log("Les articles du panier ont �t� modifi�s",'info');

				} catch (Zend_Exception $e) {
					$this->log($e->getMessage(),'err');
					$this->view->messageError = $e->getMessage();
				}
			}
		}
		$this->_forward('/edit');
	}
}
?>