corp rental moons

This commit is contained in:
2020-04-26 01:26:11 -05:00
parent 6a26f4bc6e
commit 59c0de75c4
6 changed files with 119 additions and 115 deletions

View File

@@ -17,8 +17,6 @@ use App\Library\Lookups\LookupHelper;
//App Models
use App\Models\Esi\EsiToken;
use App\Models\Esi\EsiScope;
use App\Models\Structure\Structure;
use App\Models\Structure\Service;
use App\Models\Lookups\ItemLookup;
use App\Models\MoonRent\MoonRental;
use App\Models\Moon\Moon;
@@ -31,10 +29,6 @@ class MoonLedgerController extends Controller
$this->middleware('permission:corp.lead');
}
public function displayRentalMoon() {
}
public function displayMoonLedger() {
//Declare variables
$structures = array();
@@ -135,35 +129,41 @@ class MoonLedgerController extends Controller
->with('structures', $structures);
}
public function displaySelection() {
public function displayRentalMoonLedger() {
//Declare variables
$structures = array();
$miningLedgers = array();
$tempMiningLedger = array();
$tempMining = array();
$esiHelper = new Esi;
$lookup = new LookupHelper;
$response = null;
$structureInfo = null;
//Get the configuration for the main site
$config = config('esi');
//Check for the esi scope
if(!$esiHelper->HaveEsiScope(auth()->user()->getId(), 'esi-industry.read_corporation_mining.v1')) {
return redirect('/dashboard')->with('error', 'Need to add scopes for esi-industry.read_corporation_mining.v1');
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp.');
} else {
if(!$esiHelper->HaveEsiScope(auth()->user()->getId(), 'esi-universe.read_structures.v1')) {
return redirect('/dashboard')->with('error', 'Need to add scope for esi-universe.read_structures.v1');
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp.');
}
}
//Get the refresh token if scope checks have passed
$refreshToken = $esiHelper->GetRefreshToken(auth()->user()->getId());
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
//Setup the esi container
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
//Get the character data from the lookup table if possible or esi
$character = $lookup->GetCharacterInfo(auth()->user()->getId());
$character = $lookup->GetCharacterInfo($config['primary']);
//Try to get the mining observers for the corporation from esi
try {
$response = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
$responses = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
'corporation_id' => $character->corporation_id,
]);
} catch(RequestFailedException $e) {
@@ -171,88 +171,64 @@ class MoonLedgerController extends Controller
return redirect('/dashboard')->with('error', 'Failed to get mining structures.');
}
foreach($response as $resp) {
//For each mining observer, let's build the array of data to show on the page
foreach($responses as $response) {
//Try to get the structure information from esi
try {
$structureInfo = $esi->invoke('get', '/universe/structures/{structure_id}/', [
'structure_id' => $resp->observer_id,
'structure_id' => $response->observer_id,
]);
} catch(RequestFailedException $e) {
//If an exception has occurred, then do nothing
}
$structures[$resp->observer_id] = $structureInfo->name;
//We don't really care about the key, but it is better than just 0 through whatever number
$structures[$response->observer_id] = $structureInfo->name;
}
return view('moons.ledger.displayselect')->with('structures', $structures);
}
//For each of the structures we want to address it by it's key value pair.
//This will allow us to do some interesting things in the display.
foreach($structures as $key => $value) {
try {
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
'corporation_id' => $character->corporation_id,
'observer_id' => $key,
]);
} catch(RequestFailedException $e) {
$ledgers = null;
}
public function displayLedger(Request $request) {
//Declare variables
$esiHelper = new Esi;
$lookup = new LookupHelper;
$tempMining = array();
$mining = array();
$temp = array();
$ledgerEntries = array();
if($ledgers != null) {
foreach($ledgers as $ledger) {
//Declare a variable that will need to be cleared each time the foreach processes
$tempArray = array();
//Check for the esi scope
if(!$esiHelper->HaveEsiScope(auth()->user()->getId(), 'esi-industry.read_corporation_mining.v1')) {
//If the scope check fails, return with a redirect and error message
return redirect('/dashboar')->with('error', 'Could not find the scope for esi-industry.read_corporation_mining.v1');
}
//Get the character information from the character id
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
//Get the corp ticker
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
//Get the ore name from the type id
$ore = $lookup->ItemIdToName($ledger->type_id);
$refreshToken = $esiHelper->GetRefreshToken(auth()->user()->getId());
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
//Get the character data from the lookup table if possible or esi
$character = $lookup->GetCharacterInfo(auth()->user()->getId());
//Try to get the mining ledger for the corporation observer
try {
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
'corporation_id' => $character->corporation_id,
'observer_id' => $request->structure,
]);
} catch(RequestFailedException $e) {
return redirect('/dashboard')->with('error', 'Failed to get the mining ledger.');
}
//Cycle through each ledger entry and create a new array
foreach($ledgers as $ledger) {
//Get the character information from the character id
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
//Get the corp ticker
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
//Get the ore name from the type id
$ore = $lookup->ItemIdToName($ledger->type_id);
//Push the data onto the mining arary
array_push($tempMining, [
'character' => $charInfo->name,
'corpTicker' => $corpInfo->ticker,
'ore' => $ore,
'quantity' => $ledger->quantity,
'updated' => $ledger->last_updated,
]);
}
//Sort through the array and reverse it so the last day is shown first
$tempMining = array_reverse($tempMining, true);
//Create the current time based on the current time and then subtract 30 days
$sortTime = Carbon::now()->subDays(30);
//Sort through the array and discard anything that is further than 30 days out.
foreach($tempMining as $entry) {
//Create the current time stamp from the current legder before sorting
$current = Carbon::createFromFormat('Y-m-d', $entry['updated']);
if($current->greaterThanOrEqualTo($sortTime)) {
array_push($mining, $entry);
//We only want to push the mining ledger entry into the array if it matches
//the date within 30 days
$sortTime = Carbon::now()->subDays(30);
$current = Carbon::createFromFormat('Y-m-d', $ledger->last_updated);
if($current->greaterThanOrEqualTo($sortTime)) {
array_push($miningLedgers, [
'structure' => $value,
'character' => $charInfo->name,
'corpTicker' => $corpInfo->ticker,
'ore' => $ore,
'quantity' => $ledger->quantity,
'updated' => $ledger->last_updated,
]);
}
}
}
}
//Return the view with the data
return view('moons.ledger.displayledger')->with('mining', $mining);
return view('moons.ledger.corpmoons')->with('miningLedgers', $miningLedgers)
->with('structures', $structures);
}
}