2016-04-30 10:19:51 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace manager\module;
|
|
|
|
use \manager\sessionManager;
|
|
|
|
use \manager\Database;
|
|
|
|
use \manager\ManagerError;
|
|
|
|
use \manager\ModuleRequest;
|
|
|
|
use \manager\Repo;
|
|
|
|
|
|
|
|
class input{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TRAITE LES DONNÉES D'UN FORMULAIRE DE TYPE TÉLÉPHONIQUE
|
|
|
|
*
|
2016-04-30 14:13:37 +00:00
|
|
|
* @subject<Array> Tableau contenant les données du sujet
|
|
|
|
* @contacts<Array> Tableau contenant les données des contacts
|
|
|
|
* @mini<Array> Tableau contenant les données des mini fiches relation
|
|
|
|
* @fiches<Array> Tableau contenant les données des fiches relation
|
2016-04-30 10:19:51 +00:00
|
|
|
*
|
|
|
|
* @return subject_id<int> Retourne l'id sujet de l'enquête
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public static function phone($params){
|
|
|
|
extract($params);
|
|
|
|
|
2016-04-30 14:13:37 +00:00
|
|
|
|
2016-04-30 10:19:51 +00:00
|
|
|
/* [1] On crée le sujet de l'enquête
|
|
|
|
=========================================================*/
|
|
|
|
/* (1) On rédige la requête */
|
|
|
|
$create_subject_request = new ModuleRequest('subject/create', array(
|
|
|
|
'username' => $subject['username'],
|
|
|
|
'firstname' => $subject['firstname'],
|
|
|
|
'lastname' => $subject['lastname'],
|
|
|
|
'number' => $subject['number']
|
|
|
|
));
|
|
|
|
|
|
|
|
/* (2) On exécute la requête (création) */
|
|
|
|
$create_subject_response = $create_subject_request->dispatch();
|
|
|
|
|
|
|
|
/* (3) Gestion de l'erreur, si erreur de création */
|
|
|
|
if( $create_subject_response->error != ManagerError::Success )
|
|
|
|
return array( 'ModuleError' => $create_subject_response->error );
|
|
|
|
|
|
|
|
/* (4) On récupère l'id du sujet */
|
|
|
|
$subject_id = $create_subject_response->get('id_subject');
|
|
|
|
|
|
|
|
|
2016-05-09 09:01:43 +00:00
|
|
|
|
|
|
|
/* [2] On extrait les contacts des 2 top 10 (sans duplication)
|
|
|
|
=========================================================*/
|
|
|
|
$closest = array();
|
|
|
|
|
|
|
|
foreach($fiches as $i=>$fiche){
|
|
|
|
/* (1) Si le contact n'est pas déja enregistré, on l'enregistre */
|
|
|
|
if( !array_key_exists($fiche['contact'], $closest) )
|
|
|
|
$closest[ $fiche['contact'] ] = array();
|
|
|
|
|
|
|
|
/* (2) Si c'est un lien par CALL, on l'ajoute */
|
|
|
|
if( $i < 10 )
|
|
|
|
array_push( $closest[ $fiche['contact'] ], 'CALL' );
|
|
|
|
/* (3) Si c'est un lien par SMS, on l'ajoute */
|
|
|
|
else
|
|
|
|
array_push( $closest[ $fiche['contact'] ], 'SMS' );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* [3] On crée les contacts les plus proches
|
2016-05-02 08:29:11 +00:00
|
|
|
=========================================================*/
|
2016-05-09 09:01:43 +00:00
|
|
|
$closest_id = array();
|
|
|
|
// Pour chacun des top 10*2 plus proches
|
|
|
|
foreach($closest as $contact=>$relations){
|
|
|
|
|
|
|
|
/* (1) On rédige la requête de création de sujet*/
|
|
|
|
$create_contact_request = new ModuleRequest('subject/create', array(
|
|
|
|
'username' => $contacts[$contact]['username'],
|
|
|
|
'firstname' => $contacts[$contact]['firstname'],
|
|
|
|
'lastname' => $contacts[$contact]['lastname'],
|
|
|
|
'number' => $contacts[$contact]['number']
|
|
|
|
));
|
|
|
|
|
|
|
|
/* (2) On exécute la requête (création) */
|
|
|
|
$create_contact_response = $create_contact_request->dispatch();
|
|
|
|
|
|
|
|
/* (3) Gestion de l'erreur, si erreur de création */
|
|
|
|
if( $create_contact_response->error != ManagerError::Success )
|
|
|
|
return array( 'ModuleError' => $create_contact_response->error );
|
|
|
|
|
|
|
|
/* (4) On récupère l'id du sujet */
|
|
|
|
$closest_id[$contact] = $create_contact_response->get('id_subject');
|
|
|
|
|
|
|
|
|
2016-05-09 09:46:12 +00:00
|
|
|
|
2016-05-09 09:01:43 +00:00
|
|
|
/* [4] On crée les relations avec le sujet de l'enquête
|
|
|
|
=========================================================*/
|
2016-05-09 09:46:12 +00:00
|
|
|
/* (1) Relation de type _CALL_ */
|
|
|
|
if( in_array('CALL', $relations) ){
|
|
|
|
$call_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_CALL_' ));
|
|
|
|
|
|
|
|
$call_rel_response = $call_rel_request->answer();
|
|
|
|
|
|
|
|
// Si erreur de création de relation
|
|
|
|
if( $call_rel_response === false )
|
|
|
|
return array( 'ModuleError' => ManagerError::ModuleError );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* (2) Relation de type _SMS_ */
|
|
|
|
if( in_array('SMS', $relations) ){
|
2016-05-09 12:12:02 +00:00
|
|
|
$sms_rel_request = new Repo('subject/link', array( $subject_id, $closest_id[$contact], '_SMS_' ));
|
2016-05-09 09:46:12 +00:00
|
|
|
|
2016-05-09 12:12:02 +00:00
|
|
|
$sms_rel_response = $sms_rel_request->answer();
|
2016-05-09 09:46:12 +00:00
|
|
|
|
|
|
|
// Si erreur de création de relation
|
2016-05-09 12:12:02 +00:00
|
|
|
if( $sms_rel_response === false )
|
2016-05-09 09:46:12 +00:00
|
|
|
return array( 'ModuleError' => ManagerError::ModuleError );
|
2016-05-09 09:01:43 +00:00
|
|
|
|
2016-05-09 09:46:12 +00:00
|
|
|
}
|
2016-05-09 12:12:02 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* [5] Ajout des relations de la matrice
|
|
|
|
=========================================================*/
|
|
|
|
// Pour chacun des top 10*2 plus proches
|
|
|
|
foreach($closest as $A=>$rels){
|
|
|
|
|
|
|
|
// Pour chaque relation avec le contact actuel (s'il y en a)
|
|
|
|
if( isset($matrice[$A]) && is_array($matrice[$A]) ){
|
|
|
|
foreach($matrice[$A] as $B){
|
2016-05-09 13:29:56 +00:00
|
|
|
$relation_request = new Repo('subject/link', array( $closest_id[$A], $closest_id[$B], '' ));
|
2016-05-09 12:12:02 +00:00
|
|
|
|
|
|
|
$relation_response = $relation_request->answer();
|
|
|
|
|
|
|
|
// Si erreur de création de relation
|
|
|
|
if( $relation_response === false )
|
|
|
|
return array( 'ModuleError' => ManagerError::ModuleError );
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-05-09 09:01:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2016-05-02 08:29:11 +00:00
|
|
|
// TODO : Here !!
|
|
|
|
|
2016-04-30 10:19:51 +00:00
|
|
|
|
|
|
|
|
2016-05-09 09:46:12 +00:00
|
|
|
/* [n] Gestion du retour
|
2016-04-30 10:19:51 +00:00
|
|
|
=========================================================*/
|
|
|
|
return array(
|
|
|
|
'ModuleError' => ManagerError::Success,
|
2016-05-09 09:01:43 +00:00
|
|
|
'subject_id' => $subject_id,
|
|
|
|
'contacts' => $closest,
|
|
|
|
'created' => $closest_id
|
2016-04-30 10:19:51 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
?>
|