\r
function api_get() {\r
$exploitantManager = new PdoExploitantManager();\r
+ $clientManager = new PdoClientManager();\r
$instanceManager = new PdoInstanceManager();\r
$historiqueManager = new PdoHistoriqueManager();\r
$alerteManager = new PdoAlerteManager();\r
+ $versionManager = new PdoVersionManager();\r
\r
if($_GET['action']) {\r
switch ($_GET['action']) {\r
}\r
break;\r
\r
- case 'test_sugar' :\r
+ case 'synchroniser_infos_clients' :\r
+\r
+ // LOGIN\r
+ $sugarConnector = new SugarConnector();\r
+ $sugarConnector -> login('test', 'test');\r
+\r
+ // GETTING CUSTOMERS ON SUGAR\r
$moduleName = 'Accounts';\r
$requestedInfos = array(\r
'name',\r
'phone_office',\r
'officenumber_c'\r
);\r
+ $client_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
+\r
+ foreach($client_infos->entry_list as $client_info) {\r
+\r
+ // CHECKING RESULTS\r
+ if(isset($client_info)) {\r
+ $identifiantAP = $client_info->name_value_list->officenumber_c->value;\r
+ $nom = $client_info->name_value_list->name->value;\r
+\r
+ // IF AP ID IS NOT EMPTY\r
+ if(isset($identifiantAP) && $identifiantAP != "") {\r
+\r
+ // GETTING CUSTOMER IN DB\r
+ $client = $clientManager -> getClientByIdentifiantAP($identifiantAP);\r
+\r
+ // IF CUSTOMER EXISTS, UPDATING INFORMATION\r
+ if(isset($client) && $client->getId() > 0) {\r
+ $client -> setIdentifiantAP($identifiantAP);\r
+ $client -> setNom($nom);\r
+ $clientManager -> updateClient($client);\r
+\r
+ // IF CUSTOMER DOES NOT EXIST, CREATING A NEW ONE\r
+ } else {\r
+ $client = new Client(null, $identifiantAP, $nom);\r
+ $clientManager -> createClient($client);\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ break;\r
+\r
+ case 'check_synchro_info_version' :\r
+\r
+ // LOGIN\r
$sugarConnector = new SugarConnector();\r
$sugarConnector -> login('admin', 'admin');\r
- echo $sugarConnector -> getInfosModule($moduleName, $requestedInfos);\r
+\r
+ // GETTING APPLIANCES\r
+ $moduleName = 'allo_Instances';\r
+ $requestedInfos = array(\r
+ 'id',\r
+ 'name'\r
+ );\r
+ $instances_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
+\r
+ foreach($instances_infos->entry_list as $instance_infos) {\r
+\r
+ // IF APPLIANCE EXISTS IN SUGAR\r
+ if(isset($instance_infos)) {\r
+ $refInstance = $instance_infos->name_value_list->name->value;\r
+ $refInstanceArray = explode("/",$refInstance);\r
+ $refClient = substr($refInstanceArray[1],0,-11);\r
+ $refInstall = $refInstanceArray[0]."/".substr($refClient,0,-6);\r
+\r
+ // GETTING APPLIANCE IN DB\r
+ $instance = $instanceManager -> getInstanceByReference($refInstance);\r
+\r
+ // IF APPLIANCE EXISTS ON BOTH SIDES, COMPARING INFORMATIONS\r
+ if(isset($instance) && $instance->getId() > 0) {\r
+\r
+ // GETTING CHANGELOG OF APPLIANCE\r
+ $historique = $historiqueManager -> getHistorique($instance -> getHistorique());\r
+ $versions = $historique -> getVersions();\r
+\r
+ // CHECKING OPPORTUNITY EXISTENCE FOR EACH VERSION OF CHANGELOG\r
+ foreach($versions as $version) {\r
+\r
+ // GETTING VALUE OF EACH VERSION OF CHANGELOG, AND ITS DECLARATION DATE\r
+ $versionArray = explode(';',$version);\r
+ if(isset($versionArray[1])) {\r
+ $versionId = $versionArray[0];\r
+ $declaration = $versionArray[1];\r
+ } else {\r
+ $versionId = $version;\r
+ $declaration = $historique -> getInstallation();\r
+ }\r
+ $versionValeur = $versionManager -> getVersion($versionId) -> getValeur();\r
+ $refVersion = $refInstanceArray[0].' '.$versionValeur;\r
+\r
+ // GETTING VERSION ID ON SUGAR\r
+ $moduleName = 'adul__Produits';\r
+ $requestedInfos = array(\r
+ 'id',\r
+ 'name'\r
+ );\r
+ $sqlWhereClause = "adul__produits.name = '".$refVersion."'";\r
+ $version_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ if(isset($version_infos->entry_list[0])) {\r
+ $idVersion = $version_infos->entry_list[0]->id;\r
+ }\r
+\r
+ // GETTING OPPORTUNITIES LINKED TO THE VERSION IN SUGAR\r
+ if(isset($idVersion)) {\r
+ $moduleName = 'adul__Produits';\r
+ $parameters = array(\r
+ "link_name" => "adul__prits_opportunities",\r
+ "primary_module_id" => $idVersion,\r
+ );\r
+ $requestedInfos = array(\r
+ 'id',\r
+ 'name',\r
+ 'date_opened_c'\r
+ );\r
+ $sqlWhereClause = "opportunities.name = '".$refInstall."'";\r
+ $result = json_decode($sugarConnector -> getRelationships($moduleName, $parameters, $requestedInfos, $sqlWhereClause));\r
+\r
+ // COMPARING INFORMATIONS IN ORDER TO FIND A CONCORDANCE : DATES, CHANNEL, et cetera\r
+ $testRecherche = false;\r
+ foreach($result->entry_list as $fiche_install_info) {\r
+\r
+ // IF OPPORTUNITY EXISTS IN SUGAR\r
+ if(isset($fiche_install_info->id)) {\r
+ if($fiche_install_info->name_value_list->date_opened_c->value == $declaration) {\r
+ $testRecherche = true;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+\r
+ // IF NO OPPORTUNITY IS FOUND FOR THE VERSION\r
+ if(!$testRecherche) {\r
+\r
+ // CREATING NEW WARNING, VERSION TYPE\r
+ $alerte = new Alerte(null, $declaration, "version",\r
+ "Version declaree ".$versionValeur." n'a pas de fiche d'installation sur Sugar pour cette instance.", $versionId);\r
+ $alerteManager -> createAlerte($alerte);\r
+\r
+ // GETTING APPLIANCE CHANGELOG\r
+ $historiqueManager = new PdoHistoriqueManager();\r
+ $historique = $historiqueManager -> getHistorique($instance -> getHistorique());\r
+\r
+ // ADDING WARNING TO CHANGELOG\r
+ $alertes = $historique -> getAlertes();\r
+ if((array_search("", $alertes)) !== false) {\r
+ $alertes = array($alerteManager -> getLastAlerte() -> getId());\r
+ } else {\r
+ $alertes[] = $alerteManager -> getLastAlerte() -> getId();\r
+ }\r
+ $historique -> setAlertes($alertes);\r
+ $historiqueManager -> updateHistorique($historique);\r
+ }\r
+ }\r
+ }\r
+ } else {\r
+ echo "Instance d'application existante sur Sugar introuvable sur ALLO Serveur.";\r
+ }\r
+ }\r
+ }\r
break;\r
\r
- case 'get_client' :\r
+ case 'create_fiche_installation' :\r
+\r
+ // GETTING REFERENCES\r
+ $refInstance = str_replace("\\", "", $_GET['nom']);\r
+ $instance = $instanceManager -> getInstanceByReference($refInstance);\r
+ $historique = $historiqueManager -> getHistorique($instance -> getHistorique());\r
+ $refInstanceArray = explode("/",$refInstance);\r
+ $refClient = substr($refInstanceArray[1],0,-11);\r
+ $refContrat = $refInstanceArray[0]."/".$refClient."/20".substr($refInstanceArray[1],19,-4);\r
+ $refInstall = $refInstanceArray[0]."/".substr($refClient,0,-6);\r
+ $refVersion = $refInstanceArray[0].' '.$instance -> getVersion();\r
+\r
+ /*\r
+ echo "REF INSTANCE = ".$refInstance."<br/>";\r
+ echo "REF CLIENT = ".$refClient."<br/>";\r
+ echo "REF CONTRAT = ".$refContrat."<br/>";\r
+ echo "REF INSTALL = ".$refInstall."<br/>";\r
+ echo "REF VERSION = ".$refVersion."<br/>";\r
+ */\r
+\r
// LOGIN\r
$sugarConnector = new SugarConnector();\r
$sugarConnector -> login('admin', 'admin');\r
\r
- // RECUPÉRATION DE LA FICHE D'INSTALL DE L'INSTANCE VIA SA RÉFERENCE\r
- $moduleName = 'Opportunities';\r
- $requestedInfos = array('account_id');\r
- $sqlWhereClause = "opportunities.name = '".$_GET['reference']."'";\r
- $sqlOrderByClause = "opportunities.date_opened_c DESC";\r
- $fiche_install_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause, $sqlOrderByClause));\r
+ // GETTING APPLIANCE IN SUGAR\r
+ $moduleName = 'allo_Instances';\r
+ $requestedInfos = array('name');\r
+ $sqlWhereClause = "allo_instances.name = '".$refInstance."'";\r
+ $instance_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ if(isset($instance_infos->entry_list[0])) {\r
+ $idInstance = $instance_infos->entry_list[0]->id;\r
+ }\r
\r
- // RÉCUPÉRATION DU COMPTE ASSOCIÉ VIA L'ID CLIENT DE LA FICHE D'INSTALL\r
- $moduleName = 'Accounts';\r
+ // GETTING THE MAINTENANCE CONTRACT\r
+ $moduleName = 'maint_contrat_maintenance';\r
$requestedInfos = array(\r
'name',\r
- 'billing_address_street',\r
- 'phone_office',\r
- 'officenumber_c'\r
+ 'etat_contrat_c'\r
);\r
- $sqlWhereClause = "accounts.id = '".$fiche_install_infos->entry_list[0]->name_value_list->account_id->value."'";\r
- $client_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- echo $client_infos->entry_list[0]->name_value_list->name->value;\r
+ $sqlWhereClause = "maint_contrat_maintenance.name = '".$refContrat."'";\r
+ $contrat_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ if(isset($contrat_infos->entry_list[0])) {\r
+ $idContrat = $contrat_infos->entry_list[0]->id;\r
+ }\r
+\r
+ // QUESTIONING ITS VALIDITY STATE\r
+ $etatContrat = $contrat_infos->entry_list[0]->name_value_list->etat_contrat_c->value;\r
+\r
+ // IF NOT VALID OR DOES NOT EXIST, ERROR\r
+ if(!isset($idContrat) || $etatContrat != "^encours^") {\r
+ echo "Erreur : Contrat de maintenance inexistant ou invalide pour cette instance<br/>";\r
+ } else {\r
+\r
+ // IF APPLIANCE DOES NOT EXIST, CREATING NEW ONE\r
+ if(!isset($idInstance)) {\r
+ // CRÉATION D'INSTANCE\r
+ $moduleName = 'allo_Instances';\r
+ $parameters = array(\r
+ 'name' => $refInstance\r
+ );\r
+ $instance_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
+ $idInstance = $instance_infos->id;\r
+\r
+ // LINKING IT TO MAINTENANCE CONTRACT\r
+ if(isset($idInstance) && isset($idContrat)) {\r
+ $moduleName = 'maint_contrat_maintenance';\r
+ $parameters = array(\r
+ 'link_name' => 'maint_contrat_maintenance_allo_instances_1',\r
+ 'primary_module_id' => $idContrat,\r
+ 'related_module_id' => $idInstance\r
+ );\r
+ $sugarConnector -> createRelationship($moduleName, $parameters);\r
+ }\r
+ }\r
+\r
+ // GETTING OPPORTUNITIES OF APPLIANCE\r
+ $moduleName = 'Opportunities';\r
+ $requestedInfos = array('id');\r
+ $sqlWhereClause = "opportunities.name = '".$refInstall."'";\r
+ $fiche_install_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ $idInstall = $fiche_install_infos->entry_list[0]->id;\r
+ if(isset($idInstall)) {\r
+\r
+ // GETTING MOST RECENT OPPORTUNITY\r
+ $lastFI = $fiche_install_infos->entry_list[0];\r
+ foreach($fiche_install_infos->entry_list as $fiche_install_info) {\r
+\r
+ // RESEARCH CRITERION : NO CLOSING DATE AND LAST ADDED\r
+ if(!isset($fiche_install_info->name_value_list->date_closed->value) &&\r
+ $fiche_install_info->name_value_list->date_entered->value > $lastFI->name_value_list->date_entered->value) {\r
+ $lastFI = $fiche_install_info;\r
+ }\r
+ }\r
+ $versions = $historique -> getVersions();\r
+ $lastDeclaration = $historique -> getInstallation();\r
+ $lastVersion = $instance -> getVersion();\r
+\r
+ // GETTING DATE OF THE LAST VERSION DECLARATION\r
+ foreach($versions as $version) {\r
+ $versionArray = explode(';',$version);\r
+ if(isset($versionArray[1])) {\r
+ $declaration = $versionArray[1];\r
+ if($declaration > $lastDeclaration) {\r
+ $lastDeclaration = $declaration;\r
+ $lastVersionId = $versionArray[0];\r
+ }\r
+ }\r
+ }\r
+\r
+ // LAST VERSION DECLARED\r
+ if(isset($lastVersionId)) {\r
+ $lastVersion = $versionManager -> getVersion($lastVersionId) -> getValeur();\r
+ }\r
+\r
+ // UPDATING LAST OPPORTUNITY IN SUGAR : ADDING CLOSING DATE\r
+ $idLastFi = $lastFI->id;\r
+ $moduleName = 'Opportunities';\r
+ $parameters = array(\r
+ 'id' => $idLastFi,\r
+ 'date_closed' => $lastDeclaration\r
+ );\r
+ $sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters);\r
+\r
+ // CREATING NEW OPPORTUNITY\r
+ $moduleName = 'Opportunities';\r
+ $parameters = array(\r
+ 'name' => $refInstall,\r
+ 'type_exploitation_c' => $instance->getCanal(),\r
+ 'date_opened_c' => $lastDeclaration,\r
+ 'systeme_d_exploitation_c' => $instance->getSysteme(),\r
+ 'liste_hebergement_c' => 'CLIENT',\r
+ 'description' => 'Création par ALLO'\r
+ );\r
+ $fiche_install_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
+ $idInstall = $fiche_install_infos->id;\r
+\r
+ // CHANGING VERSION REFERENCE TO LINK TO THE OPPORTUNITY\r
+ $refVersion = $refInstanceArray[0].' '.$lastVersion;\r
+\r
+ // IF NO OPPORTUNITY IS FOUND ON SUGAR FOR THIS APPLIANCE, CREATING NEW ONE\r
+ } else {\r
+ $moduleName = 'Opportunities';\r
+ $parameters = array(\r
+ 'name' => $refInstall,\r
+ 'type_exploitation_c' => $instance->getCanal(),\r
+ 'date_opened_c' => $historique->getInstallation(),\r
+ 'systeme_d_exploitation_c' => $instance->getSysteme(),\r
+ 'liste_hebergement_c' => 'CLIENT',\r
+ 'description' => 'Création par ALLO'\r
+ );\r
+ $fiche_install_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
+ $idInstall = $fiche_install_infos->id;\r
+ }\r
+\r
+ // LINKING OPPORTUNITY TO APPLIANCE\r
+ if(isset($idInstance) && isset($idInstall)) {\r
+ $moduleName = 'allo_Instances';\r
+ $parameters = array(\r
+ 'link_name' => 'allo_instances_opportunities_1',\r
+ 'primary_module_id' => $idInstance,\r
+ 'related_module_id' => $idInstall\r
+ );\r
+ $sugarConnector -> createRelationship($moduleName, $parameters);\r
+ }\r
+\r
+ // GETTING VERSION ID IN SUGAR\r
+ $moduleName = 'adul__Produits';\r
+ $requestedInfos = array('name');\r
+ $sqlWhereClause = "adul__produits.name = '".$refVersion."'";\r
+ $version_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ if(isset($version_infos->entry_list[0])) {\r
+ $idVersion = $version_infos->entry_list[0]->id;\r
+ }\r
+\r
+ // LINKING OPPORTUNITY TO VERSION\r
+ if(isset($idVersion) && isset($idInstall)) {\r
+ $moduleName = 'adul__Produits';\r
+ $parameters = array(\r
+ 'link_name' => 'adul__prits_opportunities',\r
+ 'primary_module_id' => $idVersion,\r
+ 'related_module_id' => $idInstall\r
+ );\r
+ $sugarConnector -> createRelationship($moduleName, $parameters);\r
+ }\r
+\r
+ // GETTING CUSTOMER ID\r
+ $moduleName = 'Accounts';\r
+ $requestedInfos = array(\r
+ 'id',\r
+ 'officenumber_c'\r
+ );\r
+ $sqlWhereClause = "accounts_cstm.officenumber_c = '".$refClient."'";\r
+ $client_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
+ if(isset($client_infos->entry_list[0])) {\r
+ $idClient = $client_infos->entry_list[0]->id;\r
+ }\r
+\r
+ // LINKING OPPORTUNITY TO CUSTOMER\r
+ if(isset($idClient) && isset($idInstall)) {\r
+ $moduleName = 'Accounts';\r
+ $parameters = array(\r
+ 'link_name' => 'opportunities',\r
+ 'primary_module_id' => $idClient,\r
+ 'related_module_id' => $idInstall\r
+ );\r
+ $sugarConnector -> createRelationship($moduleName, $parameters);\r
+ $moduleName = 'Opportunities';\r
+ $parameters = array(\r
+ 'link_name' => 'accounts',\r
+ 'primary_module_id' => $idInstall,\r
+ 'related_module_id' => $idClient\r
+ );\r
+ $sugarConnector -> createRelationship($moduleName, $parameters);\r
+ }\r
+ }\r
break;\r
}\r
} else { echo "Welcome sur ALLO Serveur !"; }\r