Files
alliance-services/app/Library/Helpers/ImplantsHelper.php
2026-03-14 20:59:41 -05:00

110 lines
4.1 KiB
PHP

<?php
namespace App\Library\Helpers;
//Internal Library
use Log;
Use Carbon\Carbon;
use Seat\Eseye\Eseye;
use Seat\Eseye\Containers\EsiAuthentication;
use Seat\Eseye\Exceptions\RequestFailedException;
use Seat\Eseye\Configuration;
use Seat\Eseye\Cache\NullCache;
//App Library
use App\Jobs\Library\JobHelper;
use App\Library\Esi\Esi;
class ImplantsHelper {
private $charId;
private $scopeCheck;
private $esiHelper = new Esi;
private $esi = new Eseye;
private $token = new EsiToken;
private $config;
/**
* Class Constructor
*/
public function __construct($char) {
$this->$charId = $char;
$this->esiHelper = new Esi;
$this->config = config('esi');
$hasScopeImplants = $esiHelper->HaveEsiScope($this->charId, 'esi-clones.read_implants.v1');
$hasScopeLocation = $esiHelper->HaveEsiScope($this->charId, 'esi-location.read_location.v1');
$hasScopeOnline = $esiHelper->HaveEsiScope($this->charId, 'esi-location.read_online.v1');
$hasScopeShip = $esiHelper->HaveEsiScope($this->charId, 'esi-location.read_ship_type.v1');
$hasScopeMail = $esiHelper->HaveEsiScope($this->charId, 'esi-mail.send_mail.v1');
if($hasScopeImplants == false || $hasScopeLocation == false || $hasScopeOnline == false || $hasScopeShip == false || $hasScopeMail == false) {
if($hasScopeMail == true) {
//Send mail about needing scopes.
$subject = 'Implant Services - Incorrect ESI Scope';
$body = 'Please register with the following scopes.\r\n esi-clones.read_implants.v1\r\n esi-location.read_location.v1\r\n esi-location.read_online.v1\r\n esi-location.read_ship_type.v1\r\n esi-mail.send_mail.v1\r\n\r\n Sincerely,\r\n Implant Services';
SendEveMail::dispatch($body, (int)$charId, 'character', $subject, (int)$charId);
} else {
//Send mail from primary config character about scopes.
$subject = 'Implant Services - Incorrect ESI Scope';
$body = 'Please register with the following scopes.\r\n esi-clones.read_implants.v1\r\n esi-location.read_location.v1\r\n esi-location.read_online.v1\r\n esi-location.read_ship_type.v1\r\n esi-mail.send_mail.v1\r\n\r\n Sincerely,\r\n Implant Services';
SendEveMail::dispatch($body, (int)$charId, 'character', $subject, $config['primary']);
}
$this->token = $this->EsiHelper->GetRefreshToken($this->charId);
$this->esi = $this->EsiHelper->SetupEsiAuthentication($this->token);
}
}
public function ReadCharacterImplants() {
try {
$implants = $esi->invoke('get', '/characters/{character_id}/implants/', [
'character_id' => $this->charId,
]);
} catch (RequestFailedException $e) {
Log::warning('Failed to get implants for character id: ' . $this->charId);
return null;
}
return $implants;
}
public function ReadCharacterLocation() {
try {
$location = $esi->invoke('get', '/characters/{character_id}/location/', [
'character_id' => $this->charId,
]);
} catch (RequestFailedException $e) {
Log::warning('Failed to get location for character id: ' . $this->charId);
return null;
}
return $location;
}
public function ReadCharacterOnline() {
try {
$online = $esi->invoke('get', '/characters/{character_id}/online/', [
'character_id' => $this->charId,
]);
} catch (RequestFailedException $e) {
Log::warning('Failed to get online status for character id: ' . $this->charId);
return null;
}
return $online;
}
public function ReadShipType() {
try {
$ship = $esi->invoke('get', '/characters/{character_id}/ship/', [
'character_id' => $this->charId,
]);
} catch (RequestFailedException $e) {
Log::warning('Failed to get ship for character id: ' . $this->charId);
return null;
}
return $ship;
}
}