item lookup
This commit is contained in:
@@ -16,6 +16,7 @@ use Seat\Eseye\Eseye;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Structures\StructureHelper;
|
||||
use App\Library\Lookups\NewLookupHelper;
|
||||
|
||||
//App Models
|
||||
use App\Models\Esi\EsiToken;
|
||||
@@ -34,22 +35,85 @@ class MoonLedgerController extends Controller
|
||||
public function displaySelection() {
|
||||
//Declare variables
|
||||
$structures = array();
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new NewLookupHelper;
|
||||
|
||||
//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');
|
||||
} 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');
|
||||
}
|
||||
}
|
||||
|
||||
//Get the refresh token if scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshToken(auth()->user()->getId());
|
||||
//Setup the esi container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->LookupCharacter(auth()->user()->getId(), null);
|
||||
|
||||
//Try to get the mining observers for the corporation from esi
|
||||
try {
|
||||
$response = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred for some reason redirect back to the dashboard with an error message
|
||||
return redirect('/dashboard')->with('error', 'Failed to get mining structures.');
|
||||
}
|
||||
|
||||
foreach($response as $resp) {
|
||||
//Try to get the structure information from esi
|
||||
try {
|
||||
$structureInfo = $esi->invoke('get', '/universe/structures/{structure_id}/', [
|
||||
'structure_id' => $resp->observer_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred, then do nothing
|
||||
}
|
||||
|
||||
//Setup the temporary array structure
|
||||
$tempStructure = [
|
||||
$resp->observer_id => $sturcutreInfo->name,
|
||||
];
|
||||
|
||||
//Push the data onto the permanent array
|
||||
array_push($structures, $tempStructure);
|
||||
}
|
||||
|
||||
return view('moons.ledger.displayselect')->with('structures', $structures);
|
||||
}
|
||||
|
||||
public function displayLedger(Request $request) {
|
||||
//Validate the request
|
||||
$this->validate($request, [
|
||||
'id' => 'required',
|
||||
]);
|
||||
|
||||
//Declare variables
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new NewLookupHelper;
|
||||
|
||||
//Create the authentication container for ESI, and check for the correct scopes
|
||||
$config = config('esi');
|
||||
//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');
|
||||
}
|
||||
|
||||
$refreshToken = $esiHelper->GetRefreshToken(auth()->user()->getId());
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->LookupCharacter(auth()->user()->getId(), null);
|
||||
|
||||
//Try to get the mining ledger for the corporation observer
|
||||
try {
|
||||
$ledger = $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.');
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,78 @@ class NewLookupHelper {
|
||||
$this->esi = new Eseye();
|
||||
}
|
||||
|
||||
public function ItemIdToName($itemId) {
|
||||
//Check if the item is stored in our own database first
|
||||
$item = $this->LookupItem($itemId);
|
||||
|
||||
if($item != null) {
|
||||
return $item->name;
|
||||
} else {
|
||||
try {
|
||||
$response = $this->esi->('get', '/universe/types/{type_id}/', [
|
||||
'type_id' => $itemId,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Failed to get item information from /universe/types/{type_id}/ in NewLookupHelper.');
|
||||
return null;
|
||||
}
|
||||
|
||||
if(isset($response->description)) {
|
||||
$this->StoreItem($response);
|
||||
|
||||
return $response->name;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function LookupItem($itemId) {
|
||||
$item = Item::where([
|
||||
'type_id' => $itemId,
|
||||
])->first();
|
||||
|
||||
return $item;
|
||||
}
|
||||
|
||||
private function StoreItem($item) {
|
||||
$newItem = new Item;
|
||||
if(isset($item->capacity)) {
|
||||
$newItem->capacity = $item->capacity;
|
||||
}
|
||||
$newItem->description = $item->description;
|
||||
if(isset($item->graphic_id)) {
|
||||
$newItem->graphic_id = $item->graphic_id;
|
||||
}
|
||||
$newItem->group_id = $item->group_id;
|
||||
if(isset($item->icon_id)) {
|
||||
$newItem->icon_id = $item->icon_id;
|
||||
}
|
||||
if(isset($item->market_group_id) {
|
||||
$newItem->market_group_id = $item->market_group_id;
|
||||
}
|
||||
if(isset($item->mass)) {
|
||||
$newItem->mass = $item->mass;
|
||||
}
|
||||
$newItem->name = $item->name;
|
||||
if(isset($item->packaged_volume)) {
|
||||
$newItem->packaged_volume = $item->packaged_volume;
|
||||
}
|
||||
if(isset($item->portion_size)) {
|
||||
$newItem->portion_size = $item->portion_size;
|
||||
}
|
||||
$newItem->published = $item->published;
|
||||
if(isset($item->radius)) {
|
||||
$newItem->radius = $item->radius;
|
||||
}
|
||||
$newItem->type_id = $item->type_id;
|
||||
if(isset($item->volume)) {
|
||||
$newItem->volume = $item->volume;
|
||||
}
|
||||
$newItem-save();
|
||||
}
|
||||
|
||||
|
||||
public function SystemNameToId($system) {
|
||||
//Check if the solar system is stored in our own database first
|
||||
$solarSystem = $this->LookupSolarSystem($system);
|
||||
|
||||
40
app/Models/Lookups/Item.php
Normal file
40
app/Models/Lookups/Item.php
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Lookups;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Item extends Model
|
||||
{
|
||||
/**
|
||||
* Table Name
|
||||
*/
|
||||
public $table = 'item_lookup';
|
||||
|
||||
/**
|
||||
* Timestamps
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $fillable = [
|
||||
'capacity',
|
||||
'description',
|
||||
'graphic_id',
|
||||
'group_id',
|
||||
'icon_id',
|
||||
'market_group_id',
|
||||
'mass',
|
||||
'name',
|
||||
'packaged_volume',
|
||||
'portion_size',
|
||||
'published',
|
||||
'radius',
|
||||
'type_id',
|
||||
'volume',
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateItemLookupTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if(!Schema::hasTable('item_lookup')) {
|
||||
Schema::create('item_lookup', function (Blueprint $table) {
|
||||
$table->double('capacity', 20, 2)->nullable();
|
||||
$table->string('description');
|
||||
$table->unsignedBigInteger('graphic_id')->nullable();
|
||||
$table->unsignedBigInteger('group_id');
|
||||
$table->unsignedBigInteger('icon_id')->nullable();
|
||||
$table->unsignedBigInteger('market_group_id')->nullable();
|
||||
$table->double('mass', 20, 2)->nullable();
|
||||
$table->string('name');
|
||||
$table->double('packaged_volume', 20, 2)->nullable();
|
||||
$table->unsignedBigInteger('portion_size')->nullable();
|
||||
$table->boolean('published');
|
||||
$table->double('radius', 20, 2)->nullable();
|
||||
$table->unsignedBigInteger('type_id')->unique();
|
||||
$table->double('volume', 20, 2)->nullable();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('item_lookup');
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,19 @@
|
||||
@extends('layouts.b4')
|
||||
@section('content')
|
||||
|
||||
<div class="container">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h2>Select the Structure To View the Ledger For</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['action' => 'Moons\MoonLedgerController@displayLedger', 'method' => 'POST']) !!}
|
||||
<div class="form-group">
|
||||
{{ Form::label('structure', 'Structure') }}
|
||||
{{ Form::select('structure', $structures, ['class' => 'form-control']) }}
|
||||
</div>
|
||||
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -122,6 +122,12 @@ Route::group(['middleware' => ['auth']], function(){
|
||||
Route::get('/moons/admin/journal', 'Moons\MoonsAdminController@showJournalEntries');
|
||||
Route::post('/moons/admin/display', 'Moons\MoonsAdminController@storeMoonRemoval');
|
||||
|
||||
/**
|
||||
* Moon Ledger Controller display pages
|
||||
*/
|
||||
//Route::post('/moons/ledger/display/', 'Moons\MoonLedgerController@displayLedger');
|
||||
//Route::get('/moons/ledger/display/select', 'Moons\MoonLedgerController@displaySelection');
|
||||
|
||||
/**
|
||||
* Scopes Controller display pages
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user