Ejemplo n.º 1
0
 public function updateContact(Contact $contact)
 {
     $isdk = $this->getIsdk();
     try {
         $remote = $this->loadContact($contact->getId());
         if (is_string($remote)) {
             $contact->setErrorMessage($remote);
             $contact->setIsFailed();
         } else {
             if ($remote->uniqueHash() == $contact->uniqueHash()) {
                 $contact->setIsSkipped();
             } else {
                 $response = $isdk->updateCon($contact->getId(), $contact->getData());
                 if (is_string($response)) {
                     $messsage = 'Add failed. Error:' . $response;
                     $contact->setErrorMessage($messsage);
                     $contact->setIsFailed();
                 } else {
                     $contact->setId($response);
                     $contact->setIsUpdated();
                     $remoteTags = $remote->getTags();
                     $tags = $contact->getTags();
                     $diff = array_diff($tags, $remoteTags);
                     foreach ($diff as $d) {
                         $response1 = $isdk->grpAssign($contact->getId(), $d);
                         if (is_string($response1)) {
                             $messsage1 = 'Add Tag failed. Error:' . $response1;
                             $isdk->updateCon($contact->getId(), $remote->getData());
                             $contact->setErrorMessage($messsage1);
                             $contact->setIsFailed();
                             break;
                         }
                     }
                     $diffRemote = array_diff($remoteTags, $tags);
                     foreach ($diffRemote as $dr) {
                         $response2 = $isdk->grpRemove($contact->getId(), $dr);
                         if (is_string($response2)) {
                             $messsage1 = 'Delete Tag failed. Error:' . $response2;
                             $isdk->updateCon($contact->getId(), $remote->getData());
                             $contact->setErrorMessage($messsage2);
                             $contact->setIsFailed();
                             break;
                         }
                     }
                 }
             }
         }
     } catch (Exception $e) {
         $contact->setErrorMessage($e->getMessage());
         $contact->setIsFailed();
     }
     return $contact;
 }