\r
function api_get() {\r
$managerManager = new PdoManagerManager();\r
- $customerManager = new PdoCustomerManager();\r
- $contractManager = new PdoContractManager();\r
$applianceManager = new PdoApplianceManager();\r
$changelogManager = new PdoChangelogManager();\r
$warningManager = new PdoWarningManager();\r
- $versionManager = new PdoVersionManager();\r
- $productManager = new PdoProductManager();\r
\r
if($_GET['action']) {\r
switch ($_GET['action']) {\r
break;\r
\r
case 'synchronize_customers_info' :\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
- 'billing_address_street',\r
- 'phone_office',\r
- 'officenumber_c',\r
- 'assigned_user_id'\r
- );\r
- $customer_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
-\r
- foreach($customer_infos->entry_list as $customer_info) {\r
-\r
- // CHECKING RESULTS\r
- if(isset($customer_info)) {\r
- $customerAPId = $customer_info->name_value_list->officenumber_c->value;\r
- $customerName = $customer_info->name_value_list->name->value;\r
-\r
- // GETTING LINKED AP CONTACT ON SUGAR\r
- $APContactSugarId = $customer_info->name_value_list->assigned_user_id->value;\r
- $moduleName = 'Users';\r
- $requestedInfos = array(\r
- 'email1'\r
- );\r
- $sqlWhereClause = "users.id = '".$APContactSugarId."'";\r
- $contact_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- $contactEmail = $contact_infos->entry_list[0]->name_value_list->email1->value;\r
-\r
- // IF AP ID IS NOT EMPTY\r
- if(isset($customerAPId) && $customerAPId != "") {\r
-\r
- // GETTING CUSTOMER IN DB\r
- $customer = $customerManager -> getCustomerByAPId($customerAPId);\r
-\r
- // IF CUSTOMER EXISTS, UPDATING INFORMATION\r
- if(isset($customer) && $customer->getId() > 0) {\r
- $customer -> setAPId($customerAPId);\r
- $customer -> setName($customerName);\r
- $customer -> setAPContact($contactEmail);\r
- $customerManager -> updateCustomer($customer);\r
-\r
- // IF CUSTOMER DOES NOT EXIST, CREATING A NEW ONE\r
- } else {\r
- $customer = new Customer(null, $customerAPId, $customerName, $contactEmail);\r
- $customerManager -> createCustomer($customer);\r
- }\r
- }\r
- }\r
- }\r
-\r
+ $sugarCustomer = new SugarCustomer();\r
+ $sugarCustomer -> synchronizeAll();\r
break;\r
\r
case 'synchronize_contracts_info' :\r
-\r
- // LOGIN\r
- $sugarConnector = new SugarConnector();\r
- $sugarConnector -> login('test', 'test');\r
-\r
- // GETTING MAINTENANCE CONTRACTS ON SUGAR\r
- $moduleName = 'maint_contrat_maintenance';\r
- $requestedInfos = array(\r
- 'name',\r
- 'etat_contrat_c'\r
- );\r
- $contracts_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
-\r
- foreach($contracts_infos->entry_list as $contract_infos) {\r
-\r
- // CHECKING RESULTS\r
- if(isset($contract_infos)) {\r
- $contractNumber = $contract_infos->name_value_list->name->value;\r
- $contractState = $contract_infos->name_value_list->etat_contrat_c->value;\r
-\r
- // IF CONTRACT NUMBER IS NOT EMPTY\r
- if(isset($contractNumber) && $contractNumber != "") {\r
-\r
- // GETTING CONTRACT IN DB\r
- $contract = $contractManager -> getContractByNumber($contractNumber);\r
-\r
- // IF CONTRACT EXISTS, UPDATING INFORMATION\r
- if(isset($contract) && $contract->getId() > 0) {\r
- $contract -> setState($contractState);\r
-\r
- // IF THE CONTRACT IS NOT VALID ANYMORE\r
- if($contractState === "^resilie^") {\r
-\r
- // EVERY APPLIANCE LINKED TO IT LOSES ITS MAINTENANCE\r
- $contractAppliancesId = $contract -> getAppliances();\r
- if(isset($contractAppliancesId) && count($contractAppliancesId) > 0) {\r
- foreach($contractAppliancesId as $contractApplianceId) {\r
- $contractAppliance = $applianceManager -> getAppliance($contractApplianceId);\r
- $contractAppliance -> setMaintained(false);\r
- $applianceManager -> updateAppliance($contractAppliance);\r
- }\r
- }\r
-\r
- // SAVING CHANGES\r
- $contractManager -> updateContract($contract);\r
- }\r
-\r
- // IF CONTRACT DOES NOT EXIST, CREATING A NEW ONE\r
- } else {\r
- $contract = new Contract(null, $contractNumber, $contractState);\r
- $contractManager -> createContract($contract);\r
- }\r
- }\r
- }\r
- }\r
-\r
+ $sugarContract = new SugarContract();\r
+ $sugarContract -> synchronizeAll();\r
break;\r
\r
case 'check_appliances_infos' :\r
-\r
- // LOGIN\r
- $sugarConnector = new SugarConnector();\r
- $sugarConnector -> login('admin', 'admin');\r
-\r
- // GETTING APPLIANCES\r
- $moduleName = 'allo_Instances';\r
- $requestedInfos = array(\r
- 'id',\r
- 'name'\r
- );\r
- $appliances_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
-\r
- foreach($appliances_infos->entry_list as $appliance_infos) {\r
-\r
- // IF APPLIANCE EXISTS IN SUGAR\r
- if(isset($appliance_infos)) {\r
- $applianceReference = $appliance_infos->name_value_list->name->value;\r
- $applianceReferenceArray = explode("/",$applianceReference);\r
- $customerAPId = substr($applianceReferenceArray[1],0,-11);\r
- $opportunityReference = $applianceReferenceArray[0]."/".substr($customerAPId,0,-6);\r
-\r
- // GETTING APPLIANCE IN DB\r
- $appliance = $applianceManager -> getApplianceByReference($applianceReference);\r
-\r
- // IF APPLIANCE EXISTS ON BOTH SIDES, COMPARING INFORMATIONS\r
- if(isset($appliance) && $appliance->getId() > 0) {\r
-\r
- // GETTING CHANGELOG OF APPLIANCE\r
- $changelog = $changelogManager -> getChangelog($appliance -> getChangelog());\r
- $versions = $changelog -> 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
- $versionId = $versionArray[0];\r
- $versionDeclaration = $versionArray[1];\r
- $versionValue = $versionManager -> getVersion($versionId) -> getValue();\r
- $versionReference = $applianceReferenceArray[0].' '.$versionValue;\r
-\r
- // GETTING VERSION ID ON SUGAR\r
- $moduleName = 'adul__Produits';\r
- $requestedInfos = array(\r
- 'id',\r
- 'name'\r
- );\r
- $sqlWhereClause = "adul__produits.name = '".$versionReference."'";\r
- $version_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($version_infos->entry_list[0])) {\r
- $versionSugarId = $version_infos->entry_list[0]->id;\r
- }\r
-\r
- // GETTING OPPORTUNITIES LINKED TO THE VERSION IN SUGAR\r
- if(isset($versionSugarId)) {\r
- $moduleName = 'adul__Produits';\r
- $parameters = array(\r
- "link_name" => "adul__prits_opportunities",\r
- "primary_module_id" => $versionSugarId,\r
- );\r
- $requestedInfos = array(\r
- 'id',\r
- 'name',\r
- 'date_opened_c'\r
- );\r
- $sqlWhereClause = "opportunities.name = '".$opportunityReference."'";\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
- $opportunityFoundInSugar = false;\r
- foreach($result->entry_list as $opportunity_info) {\r
-\r
- // IF OPPORTUNITY EXISTS IN SUGAR\r
- if(isset($opportunity_info->id)) {\r
- if($opportunity_info->name_value_list->date_opened_c->value == $versionDeclaration) {\r
- $opportunityFoundInSugar = true;\r
- break;\r
- }\r
- }\r
- }\r
-\r
- // IF NO OPPORTUNITY IS FOUND FOR THE VERSION\r
- if(!$opportunityFoundInSugar) {\r
-\r
- // CREATING NEW WARNING, VERSION TYPE\r
- $warningMessage = "Version declaree ".$versionValue." n'a pas de fiche d'installation sur Sugar pour cette instance applicative.";\r
- $warning = new Warning(null, $versionDeclaration, "synchro", $warningMessage, $versionId);\r
- $warningManager -> createWarning($warning);\r
-\r
- // GETTING APPLIANCE CHANGELOG\r
- $changelogManager = new PdoChangelogManager();\r
- $changelog = $changelogManager -> getChangelog($appliance -> getChangelog());\r
-\r
- // ADDING WARNING TO CHANGELOG\r
- $warnings = $changelog -> getWarnings();\r
- if((array_search("", $warnings)) !== false) {\r
- $warnings = array($warningManager -> getLastWarning() -> getId());\r
- } else {\r
- $warnings[] = $warningManager -> getLastWarning() -> getId();\r
- }\r
- $changelog -> setWarnings($warnings);\r
- $changelogManager -> updateChangelog($changelog);\r
- }\r
- }\r
- }\r
- } else {\r
- echo "Instance applicative existante sur Sugar introuvable sur ALLO Serveur.";\r
- }\r
- }\r
- }\r
+ $sugarAppliance = new SugarAppliance();\r
+ $sugarAppliance -> checkAll();\r
break;\r
\r
case 'create_opportunity' :\r
-\r
- // GETTING REFERENCES AND OBJECTS :\r
- // APPLIANCE\r
$applianceReference = str_replace("\\", "", $_GET['appliance_reference']);\r
- $appliance = $applianceManager -> getApplianceByReference($applianceReference);\r
- $applianceReferenceArray = explode("/",$applianceReference);\r
- // PRODUCT\r
- $product = $productManager -> getProduct($appliance -> getProduct());\r
- $productAcronym = $applianceReferenceArray[0];\r
- // VERSION\r
- $lastVersion = $changelogManager -> findLastVersionForId($appliance -> getChangelog());\r
- $lastVersionDeclaration = $changelogManager -> findLastVersionDeclarationForId($appliance -> getChangelog());\r
- $lastVersionReference = $productAcronym.' '.$lastVersion -> getValue();\r
- // CUSTOMER\r
- $customerAPId = substr($applianceReferenceArray[1],0,-11);\r
- // CONTRACT\r
- $contractReference = $productAcronym."/".$customerAPId."/20".substr($applianceReferenceArray[1],19,-4);\r
- $contract = $contractManager->getContractByNumber($contractReference);\r
- // OPPORTUNITY\r
- $opportunityReference = $productAcronym."/".substr($customerAPId,0,-6);\r
-\r
- // LOGIN\r
- $sugarConnector = new SugarConnector();\r
- $sugarConnector -> login('admin', 'admin');\r
-\r
- // GETTING APPLIANCE IN SUGAR\r
- $moduleName = 'allo_Instances';\r
- $requestedInfos = array('name');\r
- $sqlWhereClause = "allo_instances.name = '".$applianceReference."'";\r
- $appliance_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($appliance_infos->entry_list[0])) {\r
- $applianceSugarId = $appliance_infos->entry_list[0]->id;\r
- }\r
-\r
- // QUESTIONING ITS VALIDITY STATE\r
- $contractState = $contract->getState();\r
-\r
- // IF NOT VALID OR DOES NOT EXIST, ERROR\r
- if(!isset($contract) || ($contractState != "^encours^" && $contractState != "^signe^" && $contractState != "^signe_maj_version^")) {\r
- echo "Erreur : Contrat de maintenance inexistant ou invalide pour cette appliance<br/>";\r
- } else {\r
-\r
- // IF APPLIANCE DOES NOT EXIST, CREATING NEW ONE\r
- if(!isset($applianceSugarId)) {\r
- $moduleName = 'allo_Instances';\r
- $parameters = array(\r
- 'name' => $applianceReference\r
- );\r
- $appliance_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
- $applianceSugarId = $appliance_infos->id;\r
-\r
- // GETTING THE MAINTENANCE CONTRACT SUGAR ID\r
- $moduleName = 'maint_contrat_maintenance';\r
- $requestedInfos = array('id');\r
- $sqlWhereClause = "maint_contrat_maintenance.name = '".$contractReference."'";\r
- $contract_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($contract_infos->entry_list[0])) {\r
- $contractSugarId = $contract_infos->entry_list[0]->id;\r
- }\r
-\r
- // LINKING IT TO MAINTENANCE CONTRACT IN SUGAR\r
- if(isset($applianceSugarId) && isset($contractSugarId)) {\r
- $moduleName = 'maint_contrat_maintenance';\r
- $parameters = array(\r
- 'link_name' => 'maint_contrat_maintenance_allo_instances_1',\r
- 'primary_module_id' => $contractSugarId,\r
- 'related_module_id' => $applianceSugarId\r
- );\r
- $sugarConnector -> createRelationship($moduleName, $parameters);\r
- }\r
-\r
- // LINKING IT TO MAINTENANCE CONTRACT IN DB\r
- $contractAppliances = $contract -> getAppliances();\r
- $contractAppliances[] = $appliance -> getId();\r
- $contractManager -> updateContract($contract);\r
- }\r
-\r
- // GETTING OPPORTUNITIES OF APPLIANCE\r
- $moduleName = 'allo_Instances';\r
- $parameters = array(\r
- "link_name" => "allo_instances_opportunities_1",\r
- "primary_module_id" => $applianceSugarId,\r
- );\r
- $requestedInfos = array(\r
- 'id',\r
- 'name',\r
- 'date_closed',\r
- 'date_entered',\r
- 'liste_hebergement_c',\r
- 'type_exploitation_c'\r
- );\r
- $sqlWhereClause = "opportunities.name = '".$opportunityReference."'";\r
- $opportunity_infos = json_decode($sugarConnector -> getRelationships($moduleName, $parameters, $requestedInfos, $sqlWhereClause));\r
-\r
- $opportunitySugarId = $opportunity_infos->entry_list[0]->id;\r
- if(isset($opportunitySugarId)) {\r
-\r
- // GETTING MOST RECENT OPPORTUNITY\r
- $lastOpportunity = $opportunity_infos->entry_list[0];\r
- foreach($opportunity_infos->entry_list as $opportunity_info) {\r
-\r
- // RESEARCH CRITERION : NO CLOSING DATE AND LAST ADDED\r
- if(!isset($opportunity_info->name_value_list->date_closed->value) &&\r
- $opportunity_info->name_value_list->date_entered->value > $lastOpportunity->name_value_list->date_entered->value) {\r
- $lastOpportunity = $opportunity_info;\r
- }\r
- }\r
-\r
- // UPDATING LAST OPPORTUNITY IN SUGAR : ADDING CLOSING DATE\r
- $lastOpportunitySugarId = $lastOpportunity->id;\r
- if(isset($lastVersionDeclaration)) {\r
- $moduleName = 'Opportunities';\r
- $parameters = array(\r
- 'id' => $lastOpportunitySugarId,\r
- 'date_closed' => $lastVersionDeclaration\r
- );\r
- $sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters);\r
-\r
- // CREATING NEW OPPORTUNITY\r
- $moduleName = 'Opportunities';\r
- $parameters = array(\r
- 'name' => $lastOpportunity->name_value_list->name->value,\r
- 'type_exploitation_c' => $lastOpportunity->name_value_list->type_exploitation_c->value,\r
- 'date_opened_c' => $lastVersionDeclaration,\r
- 'systeme_d_exploitation_c' => $appliance->getOs(),\r
- 'liste_hebergement_c' => $lastOpportunity->name_value_list->liste_hebergement_c->value,\r
- 'description' => 'Création par ALLO'\r
- );\r
- $opportunity_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
- $opportunitySugarId = $opportunity_infos->id;\r
- }\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' => $opportunityReference,\r
- 'type_exploitation_c' => $appliance->getChannel(),\r
- 'date_opened_c' => $changelogManager->findFirstVersionDeclarationForId($appliance->getChangelog()),\r
- 'systeme_d_exploitation_c' => $appliance->getOs(),\r
- // TO-DO : CHANGE THIS VALUE FOR EACH MANAGEMENT TYPE\r
- 'liste_hebergement_c' => 'CLIENT',\r
- 'description' => 'Création par ALLO'\r
- );\r
- $opportunity_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
- $opportunitySugarId = $opportunity_infos->id;\r
- }\r
-\r
- // LINKING OPPORTUNITY TO APPLIANCE\r
- if(isset($applianceSugarId) && isset($opportunitySugarId)) {\r
- $moduleName = 'allo_Instances';\r
- $parameters = array(\r
- 'link_name' => 'allo_instances_opportunities_1',\r
- 'primary_module_id' => $applianceSugarId,\r
- 'related_module_id' => $opportunitySugarId\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 = '".$lastVersionReference."'";\r
- $version_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($version_infos->entry_list[0])) {\r
- $versionSugarId = $version_infos->entry_list[0]->id;\r
- }\r
-\r
- // LINKING OPPORTUNITY TO VERSION\r
- if(isset($versionSugarId) && isset($opportunitySugarId)) {\r
- $moduleName = 'adul__Produits';\r
- $parameters = array(\r
- 'link_name' => 'adul__prits_opportunities',\r
- 'primary_module_id' => $versionSugarId,\r
- 'related_module_id' => $opportunitySugarId\r
- );\r
- $sugarConnector -> createRelationship($moduleName, $parameters);\r
- }\r
-\r
- // GETTING PRODUCT CATALOG ID IN SUGAR\r
- $moduleName = 'maint_catalogue_produits';\r
- $requestedInfos = array('name');\r
- $sqlWhereClause = "maint_catalogue_produits.name = '".$product -> getName()."'";\r
- $catalog_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($catalog_infos->entry_list[0])) {\r
- $catalogSugarId = $catalog_infos->entry_list[0]->id;\r
- }\r
-\r
- // LINKING OPPORTUNITY TO PRODUCT CATALOG\r
- if(isset($catalogSugarId) && isset($opportunitySugarId)) {\r
- $moduleName = 'maint_catalogue_produits';\r
- $parameters = array(\r
- 'link_name' => 'maint_caits_opportunities',\r
- 'primary_module_id' => $catalogSugarId,\r
- 'related_module_id' => $opportunitySugarId\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 = '".$customerAPId."'";\r
- $customer_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos, $sqlWhereClause));\r
- if(isset($customer_infos->entry_list[0])) {\r
- $customerSugarId = $customer_infos->entry_list[0]->id;\r
- }\r
-\r
- // LINKING OPPORTUNITY TO CUSTOMER (FOR N-N RELATIONS, IT GOES BOTH WAYS)\r
- if(isset($customerSugarId) && isset($opportunitySugarId)) {\r
- $moduleName = 'Accounts';\r
- $parameters = array(\r
- 'link_name' => 'opportunities',\r
- 'primary_module_id' => $customerSugarId,\r
- 'related_module_id' => $opportunitySugarId\r
- );\r
- $sugarConnector -> createRelationship($moduleName, $parameters);\r
- $moduleName = 'Opportunities';\r
- $parameters = array(\r
- 'link_name' => 'accounts',\r
- 'primary_module_id' => $opportunitySugarId,\r
- 'related_module_id' => $opportunitySugarId\r
- );\r
- $sugarConnector -> createRelationship($moduleName, $parameters);\r
- }\r
-\r
- // TO-DO : LINK OPPORTUNITY TO MAINTENANCE CONTRACT\r
- }\r
+ $sugarAppliance = new SugarAppliance();\r
+ $sugarAppliance -> createOpportunity($applianceReference, $_GET['version_id'], $_GET['version_declaration']);\r
break;\r
}\r
- } else { echo "C'est plutôt vide par ici."; }\r
+ }\r
}\r