diff --git a/app/Library/Esi.php b/app/Library/Esi.php index e40116d81..db63f3c74 100644 --- a/app/Library/Esi.php +++ b/app/Library/Esi.php @@ -1,6 +1,6 @@ where('id', $journal['id'])->get(); + //if we don't find the journal entry, add the journal entry to the database + if($check == null) { + $entry = new CorpJournal; + $entry->id = $journal['id']; + $entry->corporation_id = $corpId; + $entry->division = $division; + if(isset($journal['amount'])) { + $entry->amount = $journal['amount']; + } + if(isset($journal['balance'])) { + $entry->balance = $journal['balance']; + } + if(isset($journal['context_id'])) { + $entry->context_id = $journal['context_id']; + } + if(isset($journal['context_id_type'])) { + $entry->context_id_type = $journal['context_id_type']; + } + $entry->date = $journal['date']; + $entry->description = $journal['description']; + if(isset($journal['first_party_id'])) { + $entry->first_party_id = $journal['first_party_id']; + } + if(isset($journal['reason'])) { + $entry->reason = $journal['reason']; + } + $entry->ref_type = $journal['ref_type']; + if(isset($journal['second_party_id'])) { + $entry->second_party_id = $journal['second_party_id']; + } + if(isset($journal['tax'])) { + $entry->tax = $journal['tax']; + } + if(isset($journal['tax_receiver_id'])) { + $entry->tax_receiver_id = $journal['tax_receiver_id']; + } + $entry->save(); + } - $user = DB::table('users')->where('name', 'Minerva Arbosa')->first(); - - $authentication = new \Seat\Eseye\Containers\EsiAuthentication([ - 'client_id' => env('ESI_CLIENT_ID'), - 'secret' => env('ESI_SECRET_KEY'), - 'refresh_token' => $user->refresh_token, + } + + public function CalculateMonthlyTaxes($corpId, $month, $overallTax) { + //Convert the current time to a time / date + $currentTime = Carbon::now(); + $monthWanted = $month; + $untaxed = 0.00; + //Get the journal entries from the database + $entries = DB::table('CorpJournals')->where(['corporation_id' => $corpId, 'created_at' => $monthWanted, 'ref_type' => 46])->get(); + foreach($entries as $entry) { + $untaxed += $entry->tax; + } + //The alliance will get 2.5 pts of the tax. We need to calculate + //the correct percentage, and return the value + $taxRatio = $overallTax / 2.5; + $taxed = $untaxed / $taxRatio; + + return $taxed; + } + + public function SendMail($charId) { + // + } + + public function GetWalletJournal($division, $charId) { + //Get the ESI token for the corporation to add new wallet journals into the database + $token = DB::table('EsiTokens')->where('character_id', $charId)->get(); + //Disable all caching by setting the NullCache as the preferred cache handler. + $configuration = Configuration::getInstance(); + $configuration->cache = NullCache::class; + $configuration->logfile_location = '/var/www/w4rpservices/storage/logs/eseye'; + //Create the ESI authentication container + $config = config('esi'); + $authentication = new EsiAuthentication([ + 'client_id' => $config['esi']['client_id'], + 'secret' => $config['esi']['secret'], + 'refresh_token' => $token[0]->refresh_token, ]); + //Create the esi class variable + $esi = new Eseye($authentication); + //Try an esi call to get public data to get the character information for corp id. + try { + $character = $esi->invoke('get', '/characters/{character_id}/', [ + 'character_id' => $charId, + ]); + } catch(\Seat\Eseye\Exceptions\RequestFailedException $e){ + return $e->getEsiResponse(); + } - $this->esi = new \Seat\Eseye\Eseye($authentication); - } - - public function GetMarketGroups() { - $instance = new \Seat\Eseye\Eseye(); - - $marketGroups = $instance->invoke('get', '/markets/groups/'); - } - - public function GetMasterWalletJournal() { - $journals = $this->esi->invoke('get', '/corporations/98287666/wallets/1/journal/'); + //Try the ESI call to get the wallet journal + try { + $journals = $esi->invoke('get', '/corporations/{corporation_id}/wallets/{division}/journal/', [ + 'corporation_id' => $character->corporation_id, + 'division' => $division, + ]); + } catch(\Seat\Eseye\Exceptions\RequestFailedException $e) { + return $e->getEsiResponse(); + } + //Decode the journal from json into an array for future processing $journals = json_decode($journal->raw, true); - //foreach($journals as $entry) { - // DB::table('HoldingCorpFinancesJournal'); - //} - - return $journals; - + //For each journal array, attempt to store in the database + foreach($journals as $entry) { + $this->PutWalletJournal($entry, $corpId, $divison); + } } + } ?> \ No newline at end of file diff --git a/app/Library/Fleet.php b/app/Library/Fleet.php index 4c4a3d9ac..aa9228e4a 100644 --- a/app/Library/Fleet.php +++ b/app/Library/Fleet.php @@ -66,9 +66,10 @@ class Fleet { //Get the FC's refresh token from the table $token = DB::table('EsiTokens')->where('character_id', $fc->character_id)->first(); //Create the esi authentication container + $config = config('esi'); $authentication = new \Seat\Eseye\Containers\EsiAuthentication([ - 'client_id' => env('ESI_CLIENT_ID'), - 'secret' => env('ESI_SECRET_KEY'), + 'client_id' => $config['esi']['client_id'], + 'secret' => $config['esi']['secret'], 'refresh_token' => $token->refresh_token, ]); //Create the esi class @@ -111,20 +112,7 @@ class Fleet { 'fleet_id' => $fleetId, ]); } catch(\Seat\Eseye\Exceptions\RequestFailedException $e) { - // The HTTP Response code and message can be retreived - // from the exception... - print $e->getCode() . PHP_EOL; - print $e->getMessage() . PHP_EOL; - - // .. or from the EsiResponse available from the Exception - print $e->getEsiResponse()->getErrorCode() . PHP_EOL; - print $e->getEsiResponse()->error() . PHP_EOL; - - // You can also access the *actual* response we got from - // ESI as a normal array. - print_r($e->getEsiResponse()); - dd($e->getEsiResponse()); - return $e->getEsiResponse; + return $e->getEsiResponse(); } return null; diff --git a/app/Models/CorpJournal.php b/app/Models/CorpJournal.php new file mode 100644 index 000000000..1ece1a098 --- /dev/null +++ b/app/Models/CorpJournal.php @@ -0,0 +1,41 @@ +integer('id')->unique(); + $table->integer('corporation_id'); + $table->integer('division')->default(0); + $table->decimal('amount', 20, 2); + $table->decimal('balance', 20, 2); + $table->integer('context_id'); + $table->string('context_id_type'); + $table->dateTime('date'); + $table->string('description'); + $table->integer('first_party_id')->nullable(); + $table->string('reason')->nullabe(); + $table->string('ref_type'); + $table->integer('second_party_id')->nullable(); + $table->decimal('tax', 20, 2)->default(0.00); + $table->integer('tax_receiver_id')->nullable(); + $table->timestamps(); + }); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('CorpWalletJournals') + } +}