/** * Run the Update * * @return mixed|void */ public function call() { $pheal = $this->setScope('char')->getPheal(); foreach ($this->api_info->characters as $character) { $result = $pheal->ContactList(['characterID' => $character->characterID]); // Contact Lists can change just like many other // types of information. So, we have to delete // the current list and recreate it with the // new data we sourced from the API. ContactListModel::where('characterID', $character->characterID)->delete(); foreach ($result->contactList as $contact) { ContactListModel::create(['characterID' => $character->characterID, 'contactID' => $contact->contactID, 'contactName' => $contact->contactName, 'standing' => $contact->standing, 'contactTypeID' => $contact->contactTypeID, 'labelMask' => $contact->labelMask, 'inWatchlist' => $contact->inWatchlist]); } // Next up, the Contact List Labels ContactListLabel::where('characterID', $character->characterID)->delete(); foreach ($result->contactLabels as $label) { ContactListLabel::create(['characterID' => $character->characterID, 'labelID' => $label->labelID, 'name' => $label->name]); } // Characters also expose Corp / Alliance contacts // information. As these can also change we will // update them as needed ContactListCorporate::where('characterID', $character->characterID)->delete(); foreach ($result->corporateContactList as $contact) { ContactListCorporate::create(['characterID' => $character->characterID, 'corporationID' => $character->corporationID, 'contactID' => $contact->contactID, 'contactName' => $contact->contactName, 'standing' => $contact->standing, 'contactTypeID' => $contact->contactTypeID, 'labelMask' => $contact->labelMask]); } // Corporation Contacts also have Labels. ContactListCorporateLabel::where('characterID', $character->characterID)->delete(); foreach ($result->corporateContactLabels as $label) { ContactListCorporateLabel::create(['characterID' => $character->characterID, 'corporationID' => $character->corporationID, 'labelID' => $label->labelID, 'name' => $label->name]); } // Next up, Alliance Contacts. Exactly the same applies // to these as the above personal / corporate contacts ContactListAlliance::where('characterID', $character->characterID)->delete(); foreach ($result->allianceContactList as $contact) { ContactListAlliance::create(['characterID' => $character->characterID, 'contactID' => $contact->contactID, 'contactName' => $contact->contactName, 'standing' => $contact->standing, 'contactTypeID' => $contact->contactTypeID, 'labelMask' => $contact->labelMask]); } // And now, the labels for the Alliance Contact List ContactListAllianceLabel::where('characterID', $character->characterID)->delete(); foreach ($result->allianceContactLabels as $label) { ContactListAllianceLabel::create(['characterID' => $character->characterID, 'labelID' => $label->labelID, 'name' => $label->name]); } } // Foreach Character return; }
/** * Get a characters contact list labels * * @param $character_id * * @return mixed */ public function getCharacterContactLabels($character_id) { return ContactListLabel::where('characterID', $character_id)->get(); }