From 89a691af529151a154998a4ed19a0e79dbdd3bd2 Mon Sep 17 00:00:00 2001 From: drkthunder02 Date: Thu, 26 Sep 2019 01:45:12 -0500 Subject: [PATCH] next commit --- .env.example | 17 +- app/Http/Controllers/Hauling/Hauling.php | 50 ++ app/Http/Middleware/RequirePermission.php | 26 + app/Http/Middleware/RequireRole.php | 41 ++ app/Library/Esi/Esi.php | 178 +++++ app/Library/Hauling/HaulingHelper.php | 50 ++ app/Library/Lookups/LookupHelper.php | 697 ++++++++++++++++++ app/Models/Admin/AllowedLogin.php | 16 +- app/Models/Esi/EsiScope.php | 24 +- app/Models/Esi/EsiToken.php | 28 +- app/Models/Lookups/AllianceLookup.php | 32 + app/Models/Lookups/CharacterLookup.php | 35 + app/Models/Lookups/CorporationLookup.php | 37 + app/Models/Lookups/SolarSystem.php | 24 + app/Models/Lookups/SolarSystemDistance.php | 27 + .../2014_10_12_000000_create_users_table.php | 120 ++- ...2019_09_26_050854_create_lookup_tables.php | 79 ++ ..._26_051702_create_solar_systems_table.php} | 15 +- database/seeds/SolarSystemSeeder.php | 46 ++ .../views/hauling/display/form.blade.php | 0 .../views/hauling/display/quotes.blade.php | 0 .../views/hauling/display/results.blade.php | 0 22 files changed, 1505 insertions(+), 37 deletions(-) create mode 100644 app/Http/Controllers/Hauling/Hauling.php create mode 100644 app/Http/Middleware/RequirePermission.php create mode 100644 app/Http/Middleware/RequireRole.php create mode 100644 app/Library/Esi/Esi.php create mode 100644 app/Library/Hauling/HaulingHelper.php create mode 100644 app/Library/Lookups/LookupHelper.php create mode 100644 app/Models/Lookups/AllianceLookup.php create mode 100644 app/Models/Lookups/CharacterLookup.php create mode 100644 app/Models/Lookups/CorporationLookup.php create mode 100644 app/Models/Lookups/SolarSystem.php create mode 100644 app/Models/Lookups/SolarSystemDistance.php create mode 100644 database/migrations/2019_09_26_050854_create_lookup_tables.php rename database/migrations/{2014_10_12_100000_create_password_resets_table.php => 2019_09_26_051702_create_solar_systems_table.php} (51%) create mode 100644 database/seeds/SolarSystemSeeder.php create mode 100644 resources/views/hauling/display/form.blade.php create mode 100644 resources/views/hauling/display/quotes.blade.php create mode 100644 resources/views/hauling/display/results.blade.php diff --git a/.env.example b/.env.example index 604b401..cd249c6 100644 --- a/.env.example +++ b/.env.example @@ -30,15 +30,8 @@ MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +EVEONLINE_CLIENT=null +EVEONLINE_CLIENT_SECRET=null +EVEONLINE_REDIRECT=null +EVEONLINE_USER_AGENT='United Hauling Services' +EVEONLINE_PRIMARY_CHAR=null diff --git a/app/Http/Controllers/Hauling/Hauling.php b/app/Http/Controllers/Hauling/Hauling.php new file mode 100644 index 0000000..2ac803a --- /dev/null +++ b/app/Http/Controllers/Hauling/Hauling.php @@ -0,0 +1,50 @@ +middleware('auth'); + $this->middleware('role:Guest'); + } + + /** + * Controller function to display form + */ + public function displayForm() { + return view('hauling.display.form'); + } + + /** + * Controller function to display form results + */ + public function displayFormResults(Request $request) { + $this->validate($request, [ + 'name1' => 'required', + 'name2' => 'required', + ]); + + $hHelper = new HaulingHelper; + + $jumps = $hHelper->JumpsBetweenSystems($request->name1, $request->name2); + + return view('hauling.display.results')->with('jumps', $jumps); + } + + /** + * Controller function to display quotes for pricing tables + */ + public function displayQuotes() { + return view('hauling.display.quotes'); + } +} diff --git a/app/Http/Middleware/RequirePermission.php b/app/Http/Middleware/RequirePermission.php new file mode 100644 index 0000000..4ebdcb1 --- /dev/null +++ b/app/Http/Middleware/RequirePermission.php @@ -0,0 +1,26 @@ + auth()->user()->character_id, 'permission'=> $permission])->get(['permission']); + + abort_unless(auth()->check() && isset($perms[0]->permission), 403, "You don't have the correct permission to be in this area."); + + return $next($request); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/RequireRole.php b/app/Http/Middleware/RequireRole.php new file mode 100644 index 0000000..1ae017b --- /dev/null +++ b/app/Http/Middleware/RequireRole.php @@ -0,0 +1,41 @@ + 0, + 'Guest' => 1, + 'User' => 2, + 'Admin' => 3, + 'SuperUser' => 4, + ]; + + $check = UserRole::where('character_id', auth()->user()->character_id)->get(['role']); + + if(!isset($check[0]->role)) { + abort(403, "You don't any roles. You don't belong here."); + } + + if($ranking[$check[0]->role] < $ranking[$role]) { + abort(403, "You don't have the correct role to be in this area."); + } + + return $next($request); + } +} \ No newline at end of file diff --git a/app/Library/Esi/Esi.php b/app/Library/Esi/Esi.php new file mode 100644 index 0000000..2adeb99 --- /dev/null +++ b/app/Library/Esi/Esi.php @@ -0,0 +1,178 @@ + $charId, 'scope' => $scope])->count(); + if($check == 0) { + return false; + } else { + return true; + } + } + + public function GetCharacterData($charId) { + $esi = new Eseye(); + try { + $character = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(RequestFailedException $e) { + return null; + } + + return $character; + } + + public function GetCharacterName($charId) { + $esi = new Eseye(); + try { + $character = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(RequestFailedException $e) { + return null; + } + + return $character->name; + } + + public function FindCharacterId($name) { + $config = config('esi'); + //Create the esi authentication container + $authentication = new EsiAuthentication([ + 'client_id' => $config['client_id'], + 'secret' => $config['secret'], + ]); + //Create the esi container + $esi = new Eseye($authentication); + try { + $character = $esi->setQueryString([ + 'categories' => 'character', + 'language' => 'en-us', + 'search' => $name, + 'strict' => 'true', + ])->invoke('get', '/search/'); + } catch(RequestFailedException $e) { + return null; + } + + $character = json_decode($character, true); + return $character['character']; + } + + public function FindCorporationId($charId) { + $esi = new Eseye(); + try { + $character = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(RequestFailedException $e) { + return null; + } + + return $character->corporation_id; + } + + public function FindCorporationName($charId) { + $esi = new Eseye(); + try { + $character = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + + $corporation = $esi->invoke('get', '/corporations/{corporation_id}/', [ + 'corporation_id' => $character->corporation_id, + ]); + } catch(RequestFailedException $e) { + return null; + } + + return $corporation->name; + } + + public function DecodeDate($date) { + //Find the end of the date + $dateEnd = strpos($date, "T"); + //Split the string up into date and time + $dateArr = str_split($date, $dateEnd); + //Trim the T and Z from the end of the second item in the array + $dateArr[1] = ltrim($dateArr[1], "T"); + $dateArr[1] = rtrim($dateArr[1], "Z"); + //Combine the date + $realDate = $dateArr[0] . " " . $dateArr[1]; + //Return the combined date in the correct format + return $realDate; + } + + public function GetRefreshToken($charId) { + //Get the refresh token from the database + $tokenCount = EsiToken::where([ + 'character_id' => $charId, + ])->count(); + //If the token is not found, then don't return it. + if($tokenCount == 0) { + return null; + } + $token = EsiToken::where([ + 'character_id' => $charId, + ])->first(); + return $token->refresh_token; + } + + public function SetupEsiAuthentication($token = null) { + //Get the platform configuration + $config = config('esi'); + //Declare some variables + $authentication = null; + if($token === null) { + $authentication = new EsiAuthentication([ + 'client_id' => $config['client_id'], + 'secret' => $config['secret'], + ]); + } else { + $authentication = new EsiAuthentication([ + 'client_id' => $config['client_id'], + 'secret' => $config['secret'], + 'refresh_token' => $token, + ]); + } + //Setup the esi variable + $esi = new Eseye($authentication); + //Return the created variable + return $esi; + } +} +?> \ No newline at end of file diff --git a/app/Library/Hauling/HaulingHelper.php b/app/Library/Hauling/HaulingHelper.php new file mode 100644 index 0000000..d968804 --- /dev/null +++ b/app/Library/Hauling/HaulingHelper.php @@ -0,0 +1,50 @@ +esi = new Eseye(); + } + + public function JumpsBetweenSystems($name1, $name2) { + //Get the systems from the database + $system1 = SolarSystem::where(['name' => $name1])->get(); + $system2 = SolarSystem::where(['name' => $name2])->get(); + + try { + $route = $this->esi->invoke('get', '/route/{origin}/{destination}/', [ + 'route' => $system1->solar_system_id, + 'destination' => $system2->solar_system_id, + ])->setQueryString([ + 'flag' => 'secure', + ])->invoke(); + } catch(RequestFailedException $e) { + return -1; + } + + $length = sizeof($route); + $length += 1; + + return $length; + } +} + +?> diff --git a/app/Library/Lookups/LookupHelper.php b/app/Library/Lookups/LookupHelper.php new file mode 100644 index 0000000..3800e40 --- /dev/null +++ b/app/Library/Lookups/LookupHelper.php @@ -0,0 +1,697 @@ +esi = new Eseye(); + } + + public function GetCharacterInfo($charId) { + try { + $character = $this->esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(RequestFailedException $e) { + return null; + } + return $character; + } + + public function CharacterIdToName($charId) { + //Check if the character is stored in our own database first + $char = $this->LookupCharacter($charId, null); + //If the char is null, then we did not find the character in our own database + if($char != null) { + return $char->name; + } else { + //Get the character id from esi + try { + $character = $this->esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(RequestFailedException $e) { + Log::warning('Failed to get character name from /characters/{character_id}/ in lookup helper.'); + return null; + } + + if(isset($character->name)) { + //Store the character name for the lookup table + $this->StoreCharacterLookup(null, $character->name); + //Return the character name to the calling function + return $character->name; + } else { + //If we don't find any information return null + return null; + } + } + } + + public function CharacterNameToId($charName) { + //Check if the character is stored in our own database first + $char = $this->LookupCharacter(null, $charName); + if($char != null) { + return $char->character_id; + } else { + try { + $response = $this->esi->setBody(array( + $charName, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + Log::warning('Failed to get character name from /universe/ids/ in lookup helper.'); + return null; + } + if(isset($response->characters[0]->id)) { + $this->StoreCharacterLookup($response->characters[0]->id, null); + + return $response->characters[0]->id; + } else { + return -1; + } + } + } + + public function CorporationIdToName($corpId) { + //Check if the corporation is stored in our own database first + $corp = $this->LookupCorporation($corpId, null); + if($corp != null) { + return $corp->name; + } else { + //Try to get the corporation details from ESI + try { + $corporation = $this->esi->invoke('get', '/corporations/{corporation_id}/', [ + 'corporation_id' => $corpId, + ]); + } catch(RequestFailedException $e) { + //Log the issue + Log::warning('Failed to get corporation name from /corporations/{corporation_id}/ in lookup helper.'); + return null; + } + if(isset($corporation->name)) { + //Store the corporation name for the lookup table + $this->StoreCorporationLookup(null, $corporation->name); + //Return the corporation name to the calling function + return $corporation->name; + } else { + //If nothing is found and ESI didn't work, return null to the calling function + return null; + } + } + } + + public function CorporationNameToId($corpName) { + //Check if the corporation is stored in our own database first + $corp = $this->LookupCorporation(null, $corpName); + if($corp != null) { + return $corp->corporation_id; + } else { + //Try to get the corporation details from ESI + try { + $corporation = $this->esi->setBody(array( + $corpName, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + Log::warning('Failed to get the corporation id from /universe/ids/ in lookup helper.'); + return null; + } + if(isset($response->corporations[0]->id)) { + $this->StoreCorporationLookup($response->corporations[0]->id, null); + return $response->corporations[0]->id; + } else { + return -1; + } + } + } + + public function AllianceIdToName($allianceId) { + //Check if the alliance is stored in our own database first + $alliance = $this->LookupAlliance($allianceId, null); + if($alliance != null) { + return $alliance->alliance_id; + } else { + //Try to get the alliance details from ESI + try { + $alliance = $this->esi->invoke('get', '/alliances/{alliance_id}/', [ + 'alliance_id' => $allianceId, + ]); + } catch(RequestFailedException $e) { + Log::warning('Failed to get the alliance name from /alliances/{alliance_id}/ in lookup helper.'); + return null; + } + if(isset($alliance->name)) { + $this->StoreAllianceLookup(null, $alliance->name); + return $alliance->name; + } else { + return null; + } + } + } + + public function AllianceNameToId($allianceName) { + //Check if the alliance is stored in our own database first + $alliance = $this->LookupAlliance(null, $allianceName); + if($alliance != null) { + return $alliance->name; + } else { + //Try to get the alliance details from ESI + try { + $response = $this->esi->setBody(array( + $allianceName, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + Log::warning('Failed to get the alliance id from /universe/ids/ in lookup helper.'); + return null; + } + //If the data is pulled from ESI store the data, and send the data back to the calling function + if(isset($response->alliances[0]->id)) { + $this->StoreAllianceLookup($response->alliances[0]->id, null); + return $response->alliances[0]->id; + } else { + return -1; + } + } + } + + public function LookupCharacter($id = null, $name = null) { + //If both the id and name are null, then there is nothing to lookup + if($id == null & $name == null) { + return null; + } + $character = null; + //If the id is null attempt to lookup the character + if($id != null) { + $count = CharacterLookup::where(['character_id' => $id])->count(); + if($count > 0) { + $character = CharacterLookup::where(['character_id' => $id])->first(); + } else { + $character = null; + } + } else if($name != null) { + //If the name is not null then attemp to lookup the character + $count = CharacterLookup::where(['name' => $name])->count(); + if($count > 0) { + $character = CharacterLookup::where(['name' => $name])->first(); + } else { + $character = null; + } + } + //Return the character details to the calling function + return $character; + } + + public function LookupCorporation($id = null, $name = null) { + if($id == null && $name == null) { + return null; + } + $corporation = null; + //If the id is not null attempt to lookup the character + if($id != null) { + $count = CorporationLookup::where(['corporation_id' => $id])->count(); + if($count > 0) { + $corporation = CorporationLookup::where(['corporation_id' => $id])->first(); + } else { + $corporation = null; + } + } else if($name != null) { + $count = CorporationLookup::where(['name' => $name])->count(); + if($count > 0) { + $corporation = CorporationLookup::where(['name' => $name])->count(); + } else { + $corporation = null; + } + } + return $corporation; + } + + public function LookupAlliance($id = null, $name = null) { + if($id == null && $name == null) { + return null; + } + $alliance = null; + if($id != null) { + $count = AllianceLookup::where(['alliance_id' => $id])->count(); + if($count > 0) { + $alliance = AllianceLookup::where(['alliance_id' => $id])->first(); + } else { + $alliance = null; + } + } else if($name != null) { + $count = AllianceLookup::where(['name' => $name])->count(); + if($count > 0) { + $alliance = AllianceLookup::where(['name' => $name])->first(); + } else { + $alliance = null; + } + } + return $alliance; + } + + private function StoreCharacterLookup($id = null, $name = null) { + //Declare the esi helper + $esiHelper = new Esi; + //If the id and name are null, just return + if($id == null && $name == null) { + return; + } + //If the id isn't null, then get the character information from the esi via the character id + if($id != null) { + //See if the character already exists in the lookup table + $count = CharacterLookup::where(['character_id' => $id])->count(); + if($count == 0) { + try { + $response = $this->esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $id, + ]); + } catch(RequestFailedException $e) { + return; + } + $corpId = $this->SaveCharacter($response, $id); + if($corpId != null) { + //Do a recursive call for the corporation Lookup + $this->StoreCorporationLookup($corpId, null); + } + } else { + return; + } + } else { + return; + } + + //If the name is not null attempt to add the character to the table + if($name != null) { + $count = CharacterLookup::where(['name' => $name])->count(); + if($count == 0) { + try { + //Get the character id from the ESI API + $responseName = $this->esi->setBody(array( + $name, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + return; + } + try { + $response = $this->esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $responseName->characters[0]->id, + ]); + } catch(RequestFailedException $e) { + return; + } + $corpId = $this->SaveCharacter($response, $responseName->characters[0]->id); + if($corpId != null) { + //Do a recursive call for the corporation Lookup + $this->StoreCorporationLookup($corpId, null); + } + + } else { + return; + } + } else { + return; + } + } + + private function SaveCharacter($response, $charId) { + $char = new CharacterLookup; + $char->character_id = $charId; + if(isset($response->alliance_id)) { + $char->alliance_id = $response->alliance_id; + } + if(isset($response->ancestry_id)) { + $char->ancestry_id = $response->ancestry_id; + } + $char->birthday = $response->birthday; + $char->bloodline_id = $response->bloodline_id; + $char->corporation_id = $response->corporation_id; + if(isset($response->description)) { + $char->description = $response->description; + } + if(isset($response->faction_id)) { + $char->faction_id = $response->faction_id; + } + $char->gender = $response->gender; + $char->name = $response->name; + $char->race_id = $response->race_id; + if(isset($response->security_status)) { + $char->security_status = $response->security_status; + } + if(isset($response->title)) { + $char->title = $response->title; + } + $char->save(); + return $response->corporation_id; + } + + public function UpdateCharacters() { + $all = CharacterLookup::all(); + foreach($all as $entry) { + //Attempt to get the data from ESI + try { + $response = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $entry->character_id, + ]); + } catch(RequestFailedException $e) { + } + //Update the data + if(isset($response->alliance_id)) { + if($response->alliance_id != $entry->alliance_id) { + CharacterLookup::where([ + 'character_id' => $entry->character_id, + ])->update([ + 'alliance_id' => $response->alliance_id, + ]); + } + } + if(isset($response->description)) { + if($response->description != $entry->description) { + CharacterLookup::where([ + 'character_id' => $entry->character_id, + ])->update([ + 'description' => $response->description, + ]); + } + } + if(isset($response->security_status)) { + if($response->security_status != $entry->security_status) { + CharacterLookup::where([ + 'character_id' => $entry->character_id, + ])->update([ + 'security_status' => $response->security_status, + ]); + } + } + if(isset($response->title)) { + if($response->title != $entry->title) { + CharacterLookup::where([ + 'character_id' => $entry->character_id, + ])->update([ + 'title' => $response->title, + ]); + } + } + if(isset($response->corporation_id)) { + if($response->corporation_id != $entry->corporation_id) { + CharacterLookup::where([ + 'character_id' => $entry->character_id, + ])->update([ + 'corporation_id' => $response->corporation_id, + ]); + } + } + } + } + + private function StoreCorporationLookup($id = null, $name = null) { + //If the id is null and the name is null, then return + if($id == null && $name == null) { + return; + } + if($id != null) { + $count = CorporationLookup::where(['corporation_id' => $id])->count(); + if($count == 0) { + try { + $response = $esi->invoke('get', '/corporations/{corporation_id}/', [ + 'corporation_id' => $id, + ]); + } catch(RequestFailedException $e) { + return; + } + $allianceId = $this->SaveCorporation($response, $id); + if($allianceId != null) { + $this->StoreAllianceLookup($allianceId); + } + } else { + return; + } + } else { + return; + } + if($name != null) { + $count = CorporationLookup::where(['name' => $name])->count(); + if($count == 0) { + try { + //Get the corporation id from the ESI API + $responseName = $this->esi->setBody(array( + $name, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + return; + } + try { + $response = $this->esi->invoke('get', '/corporations/{corporation_id}/', [ + 'corporation_id' => $responseName->corporations[0]->id, + ]); + } catch(ReqeustFailedException $e) { + return; + } + $allianceId = $this->SaveCorporation($response, $responseName->corporations[0]->id); + if($allianceId != null) { + //Do a recursive call for the alliance lookup + $this->StoreAllianceLookup($allianceId, null); + } + } else { + return; + } + } else { + return; + } + } + + private function SaveCorporation($response, $corpId) { + $corp = new CorporationLookup; + $corp->corporation_id = $corpId; + if(isset($response->alliance_id)) { + $corp->alliance_id = $response->alliance_id; + } + $corp->ceo_id = $response->ceo_id; + $corp->creator_id = $response->creator_id; + if(isset($response->date_founded)) { + $corp->date_founded = $response->date_founded; + } + if(isset($response->description)) { + $corp->description = $response->description; + } + if(isset($response->faction_id)) { + $corp->faction_id = $response->faction_id; + } + if(isset($response->home_station_id)) { + $corp->home_station_id = $response->home_station_id; + } + $corp->member_count = $response->member_count; + $corp->name = $response->name; + if(isset($response->shares)) { + $corp->shares = $response->shares; + } + $corp->tax_rate = $response->tax_rate; + $corp->ticker = $response->ticker; + if(isset($response->url)) { + $corp->url = $response->url; + } + if(isset($response->war_eligible)) { + $corp->war_eligible = $response->war_eligible; + } + $corp->save(); + if(isset($response->alliance_id)) { + return $response->alliance_id; + } else { + return null; + } + } + + public function UpdateCorporations() { + $all = CorporationLookup::all(); + foreach($all as $entry) { + try { + $response = $this->esi->invoke('get', '/corporations/{corporation_id}/', [ + 'corporation_id' => $entry->corporation_id, + ]); + } catch(RequestFailedException $e) { + } + if(isset($response->alliance_id)) { + if($response->alliance_id != $entry->alliance_id) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'alliance_id' => $response->alliance_id, + ]); + } + if(isset($response->description)) { + if($response->description != $entry->description) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'description' => $response->description, + ]); + } + } + if(isset($response->faction_id)) { + if($response->faction_id != $entry->faction_id) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'faction_id' => $response->faction_id, + ]); + } + } + if(isset($response->home_station_id)) { + if($response->home_station_id != $entry->home_station_id) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'home_station_id' => $response->home_station_id, + ]); + } + } + if(isset($response->member_count)) { + if($response->member_count != $entry->member_count) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'member_count' => $response->member_count, + ]); + } + } + if(isset($response->tax_rate)) { + if($response->tax_rate != $entry->tax_rate) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'tax_rate' => $response->tax_rate, + ]); + } + } + if(isset($response->url)) { + if($response->url != $entry->url) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'url' => $response->url, + ]); + } + } + if(isset($response->war_eligible)) { + if($response->war_eligible != $entry->war_eligible) { + CorporationLookup::where([ + 'corporation_id' => $entry->corporation_id, + ])->update([ + 'war_eligible' => $response->war_eligible, + ]); + } + } + } + } + } + + private function StoreAllianceLookup($id = null, $name = null) { + //Check if the passed variables are null + if($id == null && $name == null) { + return; + } + //If the id isn't null then attempt to populate the table + if($id != null) { + //See if the alliance already exists in the table + $count = AllianceLookup::where(['alliance_id' => $id])->count(); + if($count == 0) { + try { + $response = $this->esi->invoke('get', '/alliances/{alliance_id}/', [ + 'alliance_id' => $id, + ]); + } catch(RequestFailedException $e) { + return; + } + $this->SaveAlliance($response, $id); + } + } + //If the name isn't null then attempt to populate the table + if($name != null) { + $count = AllianceLookup::where(['name' => $name])->count(); + if($count == 0) { + try { + $responseName = $this->esi->setBody(array( + $name, + ))->invoke('post', '/universe/ids/'); + } catch(RequestFailedException $e) { + return; + } + try { + $response = $this->esi->invoke('get', '/alliances/{alliance_id}/', [ + 'alliance_id' => $responseName->alliances[0]->id, + ]); + } catch(RequestFailedException $e) { + return; + } + $this->SaveAlliance($response, $responseName->alliances[0]->id); + } + } + } + + private function SaveAlliance($response, $allianceId) { + $alliance = new AllianceLookup; + $alliance->alliance_id = $allianceId; + $alliance->creator_corporation_id = $response->creator_corporation_id; + $alliance->creator_id = $response->creator_id; + $alliance->date_founded = $response->date_founded; + if(isset($response->executor_corporation_id)) { + $alliance->executor_corporation_id = $response->executor_corporation_id; + } + if(isset($response->faction_id)) { + $alliance->faction_id = $response->faction_id; + } + $alliance->name = $response->name; + $alliance->ticker = $response->ticker; + $alliance->save(); + } + + public function UpdateAlliances() { + $all = AllianceLookup::all(); + + foreach($all as $entry) { + try { + $response = $this->esi->invoke('get', '/alliances/{alliance_id}/', [ + 'alliance_id' => $entry->alliance_id, + ]); + } catch(RequestFailedException $e) { + } + if(isset($response->executor_corporation_id)) { + if($response->executor_corporation_id != $entry->executor_corporation_id) { + AllianceLookup::where([ + 'alliance_id' => $entry->alliance_id, + ])->update([ + 'executor_corporation_id' => $response->executor_corporation_id, + ]); + } + } + if(isset($response->faction_id)) { + if($response->faction_id != $entry->faction_id) { + AllianceLookup::where([ + 'alliance_id' => $entry->alliance_id, + ])->update([ + 'faction_id' => $response->faction_id, + ]); + } + } + } + } +} + +?> \ No newline at end of file diff --git a/app/Models/Admin/AllowedLogin.php b/app/Models/Admin/AllowedLogin.php index 816792e..1d38704 100644 --- a/app/Models/Admin/AllowedLogin.php +++ b/app/Models/Admin/AllowedLogin.php @@ -1,10 +1,20 @@ belongsTo('App\Models\User\User', 'character_id', 'character_id'); + } +} \ No newline at end of file diff --git a/app/Models/Esi/EsiToken.php b/app/Models/Esi/EsiToken.php index eb93878..9887044 100644 --- a/app/Models/Esi/EsiToken.php +++ b/app/Models/Esi/EsiToken.php @@ -1,10 +1,32 @@ hasMany('App\Models\EsiScope', 'character_id', 'character_id'); + } +} \ No newline at end of file diff --git a/app/Models/Lookups/AllianceLookup.php b/app/Models/Lookups/AllianceLookup.php new file mode 100644 index 0000000..c4dc31b --- /dev/null +++ b/app/Models/Lookups/AllianceLookup.php @@ -0,0 +1,32 @@ +bigIncrements('id'); - $table->string('name'); - $table->string('email')->unique(); - $table->timestamp('email_verified_at')->nullable(); - $table->string('password'); - $table->rememberToken(); - $table->timestamps(); - }); + if(!Schema::hasTable('users')) { + Schema::create('users', function (Blueprint $table) { + $table->increments('id'); + $table->string('name'); + $table->integer('character_id')->unsigned()->unique(); + $table->string('avatar'); + $table->string('access_token')->nullable(); + $table->string('refresh_token')->nullable(); + $table->integer('inserted_at')->default(0); + $table->integer('expires_in')->default(0); + $table->string('owner_hash'); + $table->string('user_type')->default('Guest'); + $table->timestamps(); + }); + } + + if(!Schema::hasTable('user_roles')) { + Schema::create('user_roles', function (Blueprint $table) { + $table->increments('id'); + $table->integer('character_id')->unsigned(); + $table->foreign('character_id')->references('character_id')->on('users'); + $table->string('role')->default('None'); + $table->timestamps(); + }); + } + + if(!Schema::hasTable('esi_tokens')) { + Schema::create('esi_tokens', function (Blueprint $table) { + $table->increments('id'); + $table->integer('character_id')->unique(); + $table->foreign('character_id')->references('character_id')->on('users'); + $table->string('access_token'); + $table->string('refresh_token'); + $table->integer('expires_in'); + $table->timestamps(); + }); + } + + if(!Schema::hasTable('esi_scopes')) { + Schema::create('esi_scopes', function (Blueprint $table) { + $table->increments('id'); + $table->integer('character_id'); + $table->foreign('character_id')->references('character_id')->on('users'); + $table->string('scope'); + $table->timestamps(); + }); + } + + if(!Schema::hasTable('user_permissions')) { + Schema::create('user_permissions', function (Blueprint $table) { + $table->increments('id'); + $table->integer('character_id')->unisnged(); + $table->foreign('character_id')->references('character_id')->on('users'); + $table->string('permission'); + $table->timestamps(); + }); + } + + if(!Schema::hasTable('available_user_permissions')) { + Schema::create('available_user_permissions', function (Blueprint $table) { + $table->increments('id'); + $table->string('permission'); + }); + } + + if(!Schema::hasTable('available_user_roles')) { + Schema::create('available_user_roles', function (Blueprint $table) { + $table->increments('id'); + $table->string('role'); + $table->string('description'); + $table->timestamps(); + }); + + DB::table('available_user_roles')->insert([ + 'role' => 'Guest', + 'description' => 'Guest of the site.', + ]); + + DB::table('available_user_roles')->insert([ + 'role' => 'User', + 'description' => 'User with non-admin access.', + ]); + + DB::table('available_user_roles')->insert([ + 'role' => 'Admin', + 'description' => 'User with admin access.', + ]); + + DB::table('available_user_roles')->insert([ + 'role' => 'SuperUser', + 'description' => 'SuperUser', + ]); + } + + if(!Schema::hasTable('allowed_logins')) { + Schema::create('allowed_logins', function (Blueprint $table) { + $table->increments('id'); + $table->string('entity_id'); + $table->string('entity_type'); + $table->string('entity_name'); + $table->string('login_type'); + $table->timestamps(); + }); + } } /** @@ -32,5 +127,12 @@ class CreateUsersTable extends Migration public function down() { Schema::dropIfExists('users'); + Schema::dropIfExists('user_roles'); + Schema::dropIfExists('esi_tokens'); + Schema::dropIfExists('esi_scopes'); + Schema::dropIfExists('user_permissions'); + Schema::dropIfExists('available_user_permissions'); + Schema::dropIfExists('available_user_roles'); + Schema::dropIfExists('allowed_logins'); } } diff --git a/database/migrations/2019_09_26_050854_create_lookup_tables.php b/database/migrations/2019_09_26_050854_create_lookup_tables.php new file mode 100644 index 0000000..fdc6e93 --- /dev/null +++ b/database/migrations/2019_09_26_050854_create_lookup_tables.php @@ -0,0 +1,79 @@ +unsignedInteger('character_id'); + $table->unsignedInteger('alliance_id'); + $table->unsignedInteger('ancestry_id')->nullable(); + $table->string('birthday'); + $table->unsignedInteger('bloodline_id'); + $table->unsignedInteger('corporation_id'); + $table->string('description')->nullable(); + $table->unsignedInteger('faction_id')->nullable(); + $table->string('gender'); + $table->string('name'); + $table->unsignedInteger('race_id'); + $table->float('security_status'); + $table->string('title'); + }); + } + + if(!Schema::hasTable('corporation_lookup')) { + Schema::create('corporation_lookup', function (Blueprint $table) { + $table->unsignedInteger('corporation_id'); + $table->unsignedInteger('alliance_id')->nullable(); + $table->unsignedInteger('ceo_id'); + $table->unsignedInteger('creator_id'); + $table->string('date_founded')->nullable(); + $table->string('description')->nullable(); + $table->unsignedInteger('faction_id')->nullable(); + $table->unsignedInteger('home_station_id')->nullable(); + $table->unsignedInteger('member_count'); + $table->string('name'); + $table->unsignedInteger('shares')->nullable(); + $table->decimal('tax_rate', 20, 2); + $table->string('ticker'); + $table->string('url')->nullable(); + $table->boolean('war_eligible'); + }); + } + + if(!Schema::hasTable('alliance_lookup')) { + Schema::create('alliance_lookup', function (Blueprint $table) { + $table->unsignedInteger('alliance_id'); + $table->unsignedInteger('creator_corporation_id'); + $table->unsignedInteger('creator_id'); + $table->dateTime('date_founded'); + $table->unsignedInteger('executor_corporation_id')->nullable(); + $table->unsignedInteger('faction_id')->nullable(); + $table->string('name'); + $table->string('ticker'); + }); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('character_lookup'); + Schema::dropIfExists('corporation_lookup'); + Schema::dropIfExists('alliance_lookup'); + } +} \ No newline at end of file diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2019_09_26_051702_create_solar_systems_table.php similarity index 51% rename from database/migrations/2014_10_12_100000_create_password_resets_table.php rename to database/migrations/2019_09_26_051702_create_solar_systems_table.php index 0ee0a36..d3c4bab 100644 --- a/database/migrations/2014_10_12_100000_create_password_resets_table.php +++ b/database/migrations/2019_09_26_051702_create_solar_systems_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreatePasswordResetsTable extends Migration +class CreateSolarSystemsTable extends Migration { /** * Run the migrations. @@ -13,11 +13,12 @@ class CreatePasswordResetsTable extends Migration */ public function up() { - Schema::create('password_resets', function (Blueprint $table) { - $table->string('email')->index(); - $table->string('token'); - $table->timestamp('created_at')->nullable(); - }); + if(!Schema::hasTable('solar_systems')) { + Schema::create('solar_systems', function (Blueprint $table) { + $table->string('name'); + $table->string('solar_system_id')->unique(); + }); + } } /** @@ -27,6 +28,6 @@ class CreatePasswordResetsTable extends Migration */ public function down() { - Schema::dropIfExists('password_resets'); + Schema::dropIfExists('solar_systems'); } } diff --git a/database/seeds/SolarSystemSeeder.php b/database/seeds/SolarSystemSeeder.php new file mode 100644 index 0000000..0d8e7dc --- /dev/null +++ b/database/seeds/SolarSystemSeeder.php @@ -0,0 +1,46 @@ +cache = NullCache::class; + + $esi = new Eseye(); + + $systems = $esi->invoke('get', '/universe/systems/'); + + foreach($systems as $system) { + try { + $info = $esi->invoke('get', '/universe/systems/{system_id}/', [ + 'system_id' => $system, + ]); + } catch(RequestFailedException $e) { + + } + + $count = SolarSystem::where(['system_id' => $system])->count(); + if($count == 0) { + SolarSystem::insert([ + 'name' => $info->name, + 'solar_system_id' => $system, + ]); + } + } + } +} diff --git a/resources/views/hauling/display/form.blade.php b/resources/views/hauling/display/form.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/hauling/display/quotes.blade.php b/resources/views/hauling/display/quotes.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/hauling/display/results.blade.php b/resources/views/hauling/display/results.blade.php new file mode 100644 index 0000000..e69de29