From ba10024ecb81f3f72d0b325d15f605756ffd19f7 Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Mon, 24 Jan 2011 09:23:26 +0000 Subject: [PATCH] --- .../DAO/class.common.dao.entreprise.php | 7 + .../DAO/class.common.dao.utilisateur.php | 6 +- inc/commons/class.common.core.php | 6 +- inc/commons/class.common.droits.php | 2 +- inc/commons/class.common.filtre.php | 3 + inc/commons/class.common.url.php | 6 +- inc/prepend.php | 12 +- inc/ws/Controlleur/class.ws.ajax.php | 152 +++++++++++++++++- inc/ws/Controlleur/class.ws.url.php | 114 +++++++++++-- inc/ws/DAO/class.ws.dao.demande.php | 49 +++++- inc/ws/Metier/class.ws.demande.php | 2 + 11 files changed, 330 insertions(+), 29 deletions(-) diff --git a/inc/commons/DAO/class.common.dao.entreprise.php b/inc/commons/DAO/class.common.dao.entreprise.php index 9066a3d23..531967f8f 100644 --- a/inc/commons/DAO/class.common.dao.entreprise.php +++ b/inc/commons/DAO/class.common.dao.entreprise.php @@ -163,6 +163,13 @@ class commonDAOEntreprise extends commonDAO { return $entreprise; } + public function setWSAdmin($entreprise_id, $admin_id) + { + $c = $this->con->openCursor('entreprises'); + $c->ws_admin = $admin_id; + $c->update('WHERE entreprise_id=\'' . $this->con->escape($entreprise_id) . '\''); + } + public function supprime($entreprise_id) { $this->con->execute('DELETE FROM utilisateurs WHERE entreprise=\'' . $this->con->escape($entreprise_id) . '\''); diff --git a/inc/commons/DAO/class.common.dao.utilisateur.php b/inc/commons/DAO/class.common.dao.utilisateur.php index 5f478087d..c1f269a87 100644 --- a/inc/commons/DAO/class.common.dao.utilisateur.php +++ b/inc/commons/DAO/class.common.dao.utilisateur.php @@ -125,6 +125,11 @@ class commonDAOUtilisateur extends commonDAO { return null; } + public function selectWSRevendeursFacturables(){ + $r=$this->con->select('SELECT * FROM utilisateurs_entreprise WHERE ws_grade BETWEEN 3 AND 4 AND utilisateur_id IN(SELECT facturable_id FROM ws_users_tree) ORDER BY rs'); + return $this->factory($r); + } + protected function getNextId() { $r = $this->con->select('SELECT MAX(utilisateur_id) AS utilisateur_id FROM utilisateurs'); @@ -151,7 +156,6 @@ class commonDAOUtilisateur extends commonDAO { $limit = is_null($limit)?'':$this->con->limit($limit[0], $limit[1]); $sql = 'SELECT * FROM ' . $table . ' WHERE (' . $where . ') ORDER BY ' . $orderby . ' ' . $sens . ' ' . $limit; - fb($sql); return $sql; } diff --git a/inc/commons/class.common.core.php b/inc/commons/class.common.core.php index bf66bf323..540350139 100644 --- a/inc/commons/class.common.core.php +++ b/inc/commons/class.common.core.php @@ -416,6 +416,7 @@ class commonCore extends cubeCore { $db->demandes->status('integer', 0, false); $db->demandes->revendeur('integer', 0, false); $db->demandes->utilisateur('integer', 0, false); + $db->demandes->administrateur('integer', 0, false); // Clés $db->demandes->primary('pk_demandes', 'demande_id'); @@ -512,10 +513,11 @@ class commonCore extends cubeCore { . 'LEFT JOIN books b ON t.theme_id=b.theme ' . 'GROUP BY t.theme_id'); - $this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom, c.entreprise AS entreprise ' + $this->views->createView('demandes_vue', 'SELECT d.*, CONCAT(c.rs,\' (\',c.prenom,\' \',c.nom,\')\') AS utilisateur_nom, CONCAT(r.rs,\' (\',r.prenom,\' \',r.nom,\')\') AS revendeur_nom, c.entreprise AS entreprise, a.prenom AS administrateur_nom ' . 'FROM demandes d ' . 'LEFT JOIN utilisateurs_entreprise r ON d.revendeur=r.utilisateur_id ' - . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id'); + . 'LEFT JOIN utilisateurs_entreprise c ON d.utilisateur=c.utilisateur_id ' + . 'LEFT JOIN utilisateurs a ON d.administrateur=a.utilisateur_id'); // cubeDb::mysqlConvert($this->con); touch($cache); } diff --git a/inc/commons/class.common.droits.php b/inc/commons/class.common.droits.php index 4a81a4eac..81840ac27 100644 --- a/inc/commons/class.common.droits.php +++ b/inc/commons/class.common.droits.php @@ -38,7 +38,7 @@ class commonDroits { if (MODE == 'extranet') { $droits = array('projets' => 1, 'factures' => 1, 'devis' => 1, 'clients' => 1, 'timereport' => 1, 'fichiers' => 0); } elseif (MODE == 'ws') { - $droits = array('clients' => 3, 'fichiers' => 0, 'publications' => 3); + $droits = array('clients' => 3, 'fichiers' => 0, 'publications' => 3,'devis'=>3); } if (MODE == 'extranet') { return (isset($droits[$page]) && $droits[$page] <= $core->user->grade); diff --git a/inc/commons/class.common.filtre.php b/inc/commons/class.common.filtre.php index c177a74fc..2b368a341 100644 --- a/inc/commons/class.common.filtre.php +++ b/inc/commons/class.common.filtre.php @@ -55,6 +55,9 @@ class commonFiltre { $this->values[$i] = $i; } $this->all = __('Toutes'); + } elseif ($this->varname == 'demande_moi') { + $this->values = array(__('Moi') => 'moi', __('Autres') => 'autres'); + $this->all = __('Toutes'); } } diff --git a/inc/commons/class.common.url.php b/inc/commons/class.common.url.php index 1f3168cfc..d4330f27c 100644 --- a/inc/commons/class.common.url.php +++ b/inc/commons/class.common.url.php @@ -190,14 +190,14 @@ class commonUrl { } elseif ($args[1] == 'wsuser') { $dao = new commonDAOUtilisateur($core->con); $dao->setSearch($q, true); - $clients = $dao->getListe('utilisateur_id','ASC', null, ' AND ws_grade>0', $core->user); + $clients = $dao->getListe('utilisateur_id', 'ASC', null, ' AND ws_grade>0', $core->user); foreach($clients as $client) { $suggestions[] = $client->utilisateur_id . ' - ' . $client->rs . ' (' . $client->prenom . ' ' . $client->nom . ')'; } } elseif ($args[1] == 'wsadmin') { $dao = new commonDAOUtilisateur($core->con); $dao->setSearch($q, true); - $clients = $dao->getListe('utilisateur_id', 'ASC', null, 'AND ws_grade>2', $core->user); + $clients = $dao->getListe('utilisateur_id', 'ASC', null, 'AND ws_grade>2', $core->user); foreach($clients as $client) { $suggestions[] = $client->utilisateur_id . ' - ' . $client->rs . ' (' . $client->prenom . ' ' . $client->nom . ')'; } @@ -258,6 +258,8 @@ class commonUrl { $res .= extranetUrl::listeClients($r->dashboard_id, self::getDashboardSettings($r->settings)); } elseif ($r->rubrique == 'timereport') { $res .= extranetUrl::listeTimereport($r->dashboard_id, self::getDashboardSettings($r->settings)); + } elseif ($r->rubrique == 'demandes') { + $res .= wsUrl::listeDemandes($r->dashboard_id, self::getDashboardSettings($r->settings)); } $res .= ''; $res .= commonPage::bf(); diff --git a/inc/prepend.php b/inc/prepend.php index e5b976500..59c217b0f 100644 --- a/inc/prepend.php +++ b/inc/prepend.php @@ -8,22 +8,22 @@ require_once(dirname(__FILE__) . '/commons/_common.php'); if ($ws) { define('GA', 'UA-4339912-5'); - define('TITLE', 'Fuidbook Workshop'); + define('TITLE', 'Fuidbook Workshop DEV'); - define('FROM_EMAIL', 'contact@fluidbook.com'); + define('FROM_EMAIL', 'tech@fluidbook.com'); define('FROM_NAME', 'Fluidbook Workshop'); - define('EMAIL_SUBJECT', 'Fluidbook Workshop'); + define('EMAIL_SUBJECT', 'Fluidbook Workshop DEV'); define('TEAM_EMAIL', 'team@fluidbook.com'); define('TEAM_NAME', __("L'équipe Fluidbook")); define('RAPPEL', __('Rappel des identifiants de connexion au Fluidbook Workshop')); define('ASK_IDENT', __('Vous avez demandé la récupération de votre mot de passe sur le Fluidbook Workshop')); } elseif ($extranet) { define('GA', 'UA-4339912-4'); - define('TITLE', 'Extranet Cubedesigners'); + define('TITLE', 'Extranet Cubedesigners DEV'); define('FROM_EMAIL', 'contact@cubedesigners.com'); - define('FROM_NAME', 'Extranet Cubedesigners'); - define('EMAIL_SUBJECT', 'Extranet Cubedesigners'); + define('FROM_NAME', 'Extranet Cubedesigners DEV'); + define('EMAIL_SUBJECT', 'Extranet Cubedesigners DEV'); define('TEAM_EMAIL', 'team@cubedesigners.com'); define('TEAM_NAME', __("L'équipe Cubedesigners")); define('RAPPEL', __('Rappel des identifiants de connexion à l\'extranet Cubedesigners')); diff --git a/inc/ws/Controlleur/class.ws.ajax.php b/inc/ws/Controlleur/class.ws.ajax.php index 94e99f19a..dc9bf7548 100644 --- a/inc/ws/Controlleur/class.ws.ajax.php +++ b/inc/ws/Controlleur/class.ws.ajax.php @@ -224,7 +224,7 @@ class wsAjax extends cubeAjax { $daoUtilisateur = new commonDAOUtilisateur($core->con); $utilisateur = $daoUtilisateur->selectByEmail($_POST['email']); if ($utilisateur != null) { - $utilisateur_id = $this->utilisateur_id; + $utilisateur_id = $utilisateur->utilisateur_id; } else { // Création de l'entreprise $daoEntreprise = new commonDAOEntreprise($core->con); @@ -273,10 +273,48 @@ class wsAjax extends cubeAjax { $datas['utilisateur'] = $utilisateur_id; $datas['revendeur'] = 0; $datas['status'] = 0; + $datas['administrateur'] = 0; $daoDemande = new wsDAODemande($core->con); $daoDemande->sauve($datas); + $fields = array('prenom' => 'Prenom', + 'nom' => 'Nom', + 'email' => 'E-mail', + 'telephone' => 'Telephone', + 'rs' => 'Société', + 'site' => 'Site web', + 'adresse' => 'Adresse', + 'code_postal' => 'Code postal', + 'ville' => 'Ville', + 'pays' => 'Pays', + 'produits' => 'Type', + 'lang' => 'Langue du visiteur', + 'nombre_liens' => 'Liens', + 'nombre_pages' => 'Pages', + 'nombre_langues' => 'Langues', + 'detail' => 'Commentaires'); + $mail = new cubeMail(); + $mail->charset = 'UTF-8'; + $mail->from = $_POST['prenom'] . ' ' . $_POST['nom']; + $mail->to = FROM_EMAIL; + $mail->subject = '[' . EMAIL_SUBJECT . '] Demande de devis'; + $body = 'Une demande de devis a été envoyée avec les informations suivantes :' . "\r\n\r\n"; + foreach($fields as $f => $d) { + if ($_POST[$f] != '') { + if ($f == 'pays') { + $body .= ' * ' . $d . ' : ' . cubeCountry::getCountry($_POST[$f], 'fr') . "\r\n"; + } else { + $body .= ' * ' . $d . ' : ' . $_POST[$f] . "\r\n"; + } + } + } + $body .= "\r\n"; + $body .= 'Veuillez-vous rendre sur le Fluidbook Workshop (http://' . $_SERVER['HTTP_HOST'] . ' pour prendre en charge la demande ou la confier à un revendeur' . "\r\n"; + $mail->body = $body; + $mail->send(); + $x->addAlert(__("Votre demande de devis a bien été envoyée. Merci pour l'intérêt que vous portez à Fluidbook.")); + $core->refreshWSUsersTree(); } public static function valideDemandeDevis(&$x) @@ -286,11 +324,10 @@ class wsAjax extends cubeAjax { foreach($d as $k => $v) { $_POST[$k] = trim($v); } - if(isset($_POST['pages'])){ - - $_POST['nombre_pages']=$_POST['pages']; - $_POST['nombre_liens']=$_POST['liens']; - $_POST['nombre_langues']=$_POST['langues']; + if (isset($_POST['pages'])) { + $_POST['nombre_pages'] = $_POST['pages']; + $_POST['nombre_liens'] = $_POST['liens']; + $_POST['nombre_langues'] = $_POST['langues']; } file_put_contents(ROOT . '/cache/demandeDevis.txt', print_r($_POST, true)); // Validation des champs de formulaires @@ -352,6 +389,109 @@ class wsAjax extends cubeAjax { $x->addContent('listeDemandes', wsUrl::listeDemandes()); } } + + public static function formDemande($args, &$x) + { + if (!isset($args[2])) { + $args[2] = null; + } + commonAjax::form('saveDemande', __("Edition d'une demande"), wsUrl::formDemande($args[1], $args[2])); + } + + public static function saveDemande($args, &$x) + { + global $core; + $dao = new wsDAODemande($core->con); + $demande = $dao->setRevendeur($_POST['demande_id'], $_POST['revendeur']); + + if ($_POST['revendeur'] != $core->user->utilisateur_id) { + $daoUtilisateur = new commonDAOUtilisateur($core->con); + $r = $daoUtilisateur->selectById($_POST['revendeur']); + + self::sendDemandeToRevendeur($demande, $r); + } + + $x->addContent('listeDemandes' , wsUrl::listeDemandes()); + $x->addClosePopup(); + } + + public static function sendDemandeToRevendeur($demande, $revendeur) + { + global $core; + + $dao = new commonDAOUtilisateur($core->con); + $utilisateur = $dao->selectById($demande->utilisateur, 'utilisateurs_entreprise'); + + $mail = new cubeMail(); + $mail->from = FROM_NAME . '<' . FROM_EMAIL . '>'; + $mail->to = 'tech@fluidbook.com'; + $mail->subject = '[' . EMAIL_SUBJECT . '] ' . __('Demande de devis'); + + $body = "\r\n---- " . __('Demande') . ' ----' . "\r\n"; + $fields = array('type' => __('Type'), + 'pages' => __('Pages'), + 'liens' => __('Liens'), + 'langues' => __('Langues'), + 'details' => __('Commentaires')); + foreach($fields as $p => $t) { + if ($demande->$p != '') { + $body .= ' * ' . $t . ' : ' . $demande->$p . "\r\n"; + } + } + + $body .= "\r\n" . '---- ' . __('Coordonnées') . ' ----' . "\r\n"; + $fields = array('prenom' => __('Prenom'), + 'nom' => __('Nom'), + 'rs' => __('Entreprise'), + 'adresse' => __('Adresse'), + 'code_postal' => __('Code postal'), + 'ville' => __('Ville'), + 'pays' => 'Pays'); + foreach($fields as $p => $t) { + if ($utilisateur->$p != '') { + if ($p == 'pays') { + $body .= ' * ' . $t . ' : ' . cubeCountry::getCountry($utilisateur->$p, $revendeur->lang) . "\r\n"; + } else { + $body .= ' * ' . $t . ' : ' . $utilisateur->$p . "\r\n"; + } + } + } + + $body .= "\r\n"; + $body .= __('Afin de nous confirmer que vous prenez en compte cette demande, veuillez cliquer sur le lien ci-dessous') . " : \r\n"; + $body .= 'http://' . $_SERVER['HTTP_HOST'] . '/accepteDemande/' . $demande->demande_id . '/' . $revendeur->utilisateur_id . "\r\n"; + $body .= "\r\n"; + $body .= __("Si dans un délai de deux jour ouvrés, vous n'avez pas accepter cette demande, nous nous réservons le droit de le prendre en charge.") . "\r\n"; + + $mail->body = $body; + // $mail->to = $r->email; + // $mail->bcc='tech@fluidbook.com'; + $mail->send(); + } + + public static function reponseDemande($args, &$x) + { + global $core; + $dao = new wsDAODemande($core->con); + $demande = $dao->selectById($demande_id); + + if ($demande->revendeur != $revendeur_id) { + commonDroits::error(); + } + + $demande_id = $args[1]; + $revendeur_id = $args[2]; + $reponse = $args[3]; + + if ($reponse == '0') { + $dao->reinitDemande($demande_id); + } else { + $dao->accepteDemande($demande_id); + } + + $x->addAlert(__('Votre choix a bien été prise en compte.')); + $x->addRedirection(SITE_PATH); + } } ?> \ No newline at end of file diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 04db5a669..69bed5ab6 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -482,10 +482,7 @@ html{height:100%}' . "\n"; $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; $filtres = array(); - if (wsDroits::admin(false)) { - $filtres[] = new commonFiltre(__('Ayant un projet'), 'status_client_projet', $settings['filtres']); - $filtres[] = new commonFiltre(__('Ayant des impayés'), 'impaye', $settings['filtres']); - } + $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); $res .= commonPage::tMain(); $res .= commonPage::bh(); @@ -690,7 +687,8 @@ html{height:100%}' . "\n"; $shortcuts = array(); $filtres = array(); - $filtres[] = new commonFiltre(__('Status'), 'status_demande', $settings['filtres']); + $filtres[] = new commonFiltre(__('Statut'), 'status_demande', $settings['filtres']); + $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $settings['filtres']); $res = commonPage::barre($filtres, 'filtreDemandes', 'demandes', $shortcuts); $res .= commonPage::tMain(); @@ -722,8 +720,9 @@ html{height:100%}' . "\n"; $res .= '' . commonUrl::orderby(__('Type') , 'type', $settings, 'sort' . $change) . ''; $res .= '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . ''; $res .= '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . ''; + $res .= '' . commonUrl::orderby(__('Editée par'), 'administrateur_nom', $settings, 'sort' . $change) . ''; $res .= '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . ''; - $res .= ''; + $res .= ''; $i = 0; foreach($liste as $id => $demande) { $odd = cubeMath::isOdd($i)?' class="odd"':''; @@ -732,11 +731,16 @@ html{height:100%}' . "\n"; $res .= '' . date(__('d/m/Y H:i'), $demande->date) . ''; $res .= '' . $core->demandes_type[$demande->type] . ''; $res .= '' . $demande->utilisateur_nom . ''; - $revendeur = $demande->revendeur == 0?__('Non défini'):$demande->revendeur_nom; + $revendeur = $demande->revendeur == 0?'-':$demande->revendeur_nom; $res .= '' . $revendeur . ''; + $administrateur = $demande->administrateur == 0?'-':$demande->administrateur_nom; + $res .= '' . $administrateur . ''; $res .= '' . $core->demandes_status[$demande->status] . ''; - $res .= 'Je me charge du devis'; - $res .= 'Je confie devis'; + if ($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) { + $res .= '' . cubeMedia::image(IMG . '/edit.png') . ''; + } else { + $res .= ''; + } $res .= ''; $i++; } @@ -750,6 +754,98 @@ html{height:100%}' . "\n"; $res .= ''; return $res; } + + public static function formDemande($demande_id = 'new') + { + global $core; + commonDroits::min(5); + $dao = new wsDAODemande($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->administrateur != 0 && $demande->administrateur != $core->user->utilisateur_id) { + $res = '

' . __("Cette demande est actuellement en cours d'édition par un autre administrateur") . '

'; + return $res; + } + if ($demande->status == 2) { + $res = '

' . __("Cette demande a été confiée à un revendeur qui s'est chargé de la traiter") . '

'; + return $res; + } + $dao->setAdministrateur($demande_id, $core->user->utilisateur_id); + + $liste = $daoUtilisateur->selectWSRevendeursFacturables(); + $revendeurs = array(); + + foreach($liste as $revendeur) { + $revendeurs[' > ' . $revendeur->rs . '(' . $revendeur->prenom . ' ' . $revendeur->nom . ')'] = $revendeur->utilisateur_id; + } + + $actions = array('Je me charge de cette demande' => $core->user->utilisateur_id); + $actions[' '] = array(); + $actions['Je confie la demande à :'] = $revendeurs; + + $res = '' . __('Numéro de demande') . '' . form::hidden('demande_id', $demande->demande_id) . '' . $demande->demande_id . ''; + $res .= '' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . ''; + $res .= '' . __('Emetteur de la demande') . '' . $demande->utilisateur_nom . ''; + $res .= '' . __('Nombre de pages') . '' . $demande->pages . ''; + $res .= '' . __('Nombre de liens') . '' . $demande->liens . ''; + $res .= '' . __('Nombre de langues') . '' . $demande->langues . ''; + $res .= '' . __('Détails') . '' . $demande->details . ''; + $res .= '' . __('Action') . '' . form::combo('revendeur', $actions) . ''; + $res .= ''; + + return $res; + } + + public static function accepteDemande($args) + { + global $core; + + commonDroits::min(3); + + $res = commonPage::barre(); + $res .= commonPage::tMain(null, false); + + $res .= commonPage::bh(); + + $demande_id = $args[1]; + $revendeur_id = $args[2]; + + $dao = new wsDAODemande($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->revendeur != $revendeur_id) { + commonDroits::error(); + exit; + } + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; + $res .= '

'; + $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé au dessous de la description.'); + $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; + $res .= '

'; + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger('Accepter la demande', '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer('Décliner la demande', '', false)) . '' . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '
'; + + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } } ?> \ No newline at end of file diff --git a/inc/ws/DAO/class.ws.dao.demande.php b/inc/ws/DAO/class.ws.dao.demande.php index b8ff05f00..816a08598 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -3,7 +3,7 @@ class wsDAODemande extends commonDAO { protected function singleton($r) { $demande = new wsDemande(); - $demande->demande_id=$r->demande_id; + $demande->demande_id = $r->demande_id; $demande->type = $r->type; $demande->pages = $r->pages; $demande->liens = $r->liens; @@ -13,10 +13,12 @@ class wsDAODemande extends commonDAO { $demande->utilisateur = $r->utilisateur; $demande->status = $r->status; $demande->revendeur = $r->revendeur; + $demande->administrateur = $r->administrateur; $demande->utilisateur_nom = $r->utilisateur_nom; $demande->revendeur_nom = $r->revendeur_nom; - $demande->entreprise=$r->entreprise; + $demande->entreprise = $r->entreprise; + $demande->administrateur_nom = $r->administrateur_nom; return $demande; } @@ -67,6 +69,7 @@ class wsDAODemande extends commonDAO { $c->details = $data['details']; $c->utilisateur = $data['utilisateur']; $c->revendeur = $data['revendeur']; + $c->administrateur = $data['administrateur']; $c->status = $data['status']; if ($data['demande_id'] == 'new' || $data['demande_id'] == '') { @@ -81,6 +84,36 @@ class wsDAODemande extends commonDAO { return $this->selectById($demande_id); } + public function setAdministrateur($demande_id, $administrateur) + { + $c = $this->con->openCursor('demandes'); + $c->administrateur = $administrateur; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + } + + public function reinitDemande($demande_id) + { + $c = $this->con->openCursor('demandes'); + $c->administrateur = 0; + $c->revendeur = 0; + $c->status = 0; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + } + + public function setRevendeur($demande_id, $revendeur) + { + // Mets à jour l'entreprise + $c = $this->con->openCursor('demandes'); + $c->revendeur = $revendeur; + $c->status = 1; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + + $demande = $this->selectById($demande_id); + // Mets également à jour l'entreprise afin d'associer client et revendeur + $daoEntreprise = new commonDAOEntreprise($this->con); + $daoEntreprise->setWSAdmin($demande->entreprise, revendeur); + } + public function count() { $r = $this->con->select('SELECT COUNT(*) AS nb FROM demandes WHERE ' . $this->makeWhereFromFiltres()); @@ -89,11 +122,23 @@ class wsDAODemande extends commonDAO { protected function makeWhereFromFiltres() { + global $core; if (!is_null($this->filtres)) { $w = array('1=1'); if (commonFiltre::test('status_demande', $this->filtres)) { $w[] = 'status IN(' . implode(',', array_keys($this->filtres['status_demande'])) . ')'; } + if (commonFiltre::test('demande_moi', $this->filtres)) { + $keys = array_keys($this->filtres['status_demande']); + + foreach($keys as $k) { + if ($k == 'moi') { + $w[] = 'revendeur=' . $core->user->utilisateur_id; + } elseif ($k == 'autres') { + $w[] = 'revendeur!=' . $core->user->utilisateur_id; + } + } + } return implode(' AND ', $w); } else { return '1=1'; diff --git a/inc/ws/Metier/class.ws.demande.php b/inc/ws/Metier/class.ws.demande.php index 73f17ed12..a04f7d04f 100644 --- a/inc/ws/Metier/class.ws.demande.php +++ b/inc/ws/Metier/class.ws.demande.php @@ -12,10 +12,12 @@ class wsDemande extends cubeMetier { protected $revendeur; protected $utilisateur; + protected $administrateur; protected $utilisateur_nom; protected $revendeur_nom; protected $entreprise; + protected $administrateur_nom; } ?> \ No newline at end of file -- 2.39.5