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
'name',\r
'billing_address_street',\r
'phone_office',\r
- 'officenumber_c'\r
+ 'officenumber_c',\r
+ 'assigned_user_id'\r
);\r
$customer_infos = json_decode($sugarConnector -> getInfosModule($moduleName, $requestedInfos));\r
\r
\r
// CHECKING RESULTS\r
if(isset($customer_info)) {\r
- $cusomerAPId = $customer_info->name_value_list->officenumber_c->value;\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($cusomerAPId) && $cusomerAPId != "") {\r
+ if(isset($customerAPId) && $customerAPId != "") {\r
\r
// GETTING CUSTOMER IN DB\r
- $customer = $customerManager -> getCustomerByAPId($cusomerAPId);\r
+ $customer = $customerManager -> getCustomerByAPId($customerAPId);\r
\r
// IF CUSTOMER EXISTS, UPDATING INFORMATION\r
if(isset($customer) && $customer->getId() > 0) {\r
- $customer -> setAPId($cusomerAPId);\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, $cusomerAPId, $customerName);\r
+ $customer = new Customer(null, $customerAPId, $customerName, $contactEmail);\r
$customerManager -> createCustomer($customer);\r
}\r
}\r
\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
+ break;\r
+\r
case 'check_appliances_infos' :\r
\r
// LOGIN\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
$applianceSugarId = $appliance_infos->entry_list[0]->id;\r
}\r
\r
- // GETTING THE MAINTENANCE CONTRACT\r
- $moduleName = 'maint_contrat_maintenance';\r
- $requestedInfos = array(\r
- 'name',\r
- 'etat_contrat_c'\r
- );\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
// QUESTIONING ITS VALIDITY STATE\r
- $contractState = $contract_infos->entry_list[0]->name_value_list->etat_contrat_c->value;\r
+ $contractState = $contract->getState();\r
\r
// IF NOT VALID OR DOES NOT EXIST, ERROR\r
- if(!isset($contractSugarId) || $contractState != "^encours^") {\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
$appliance_infos = json_decode($sugarConnector -> updateOrCreateEntryModule($moduleName, $parameters));\r
$applianceSugarId = $appliance_infos->id;\r
\r
- // LINKING IT TO MAINTENANCE CONTRACT\r
- if(isset($applianceSugarId)) {\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
);\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
$parameters = array(\r
'name' => $opportunityReference,\r
'type_exploitation_c' => $appliance->getChannel(),\r
- // TO-DO : GET THE INSTALLATION DATE FROM CHANGELOG\r
- /*'date_opened_c' => $changelog->getInstallation(),*/\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