Files
w4rpservices/app/Library/Finances/JumpBridgeTax.php

143 lines
4.8 KiB
PHP

<?php
/** W4RP Services
* GNU Public License
*/
namespace App\Library\Finances;
use DB;
use Carbon\Carbon;
use App\Library\Esi;
use App\Models\Finances\JumpBridgeJournal;
use App\Models\User\UserToCorporation;
class JumpBridgeTax {
private $date;
public function __construct($days = null) {
if($days === null) {
$this->date = Carbon::now();
} else {
$this->date = Carbon::now()->subDays($days);
}
}
/**
* Function to insert journal entries into the database
*/
public function InsertJumpBridgeTax($journal, $corpId, $division) {
//Create the ESI Helper class
$esiHelper = new Esi;
//Check to see if we can find the entry in the database already.
//If we don't then add it to the database
if(!JumpBridgeJournal::where(['id' => $journal['id']])->exists()) {
$entry = new JumpBridgeJournal;
$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 = $esiHelper->DecodeDate($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();
}
}
/**
* Function to get the corporations using the jump bridge over a given time period
*/
public function CorporationUsage() {
//Make an array for corporations, and amounts
$corps = array();
$amounts = array();
$esi = new Esi();
//Get all of the parties which have utilized the jump bridge
$parties = DB::table('jump_bridge_journal')
->select('first_party_id')
->groupBy('first_party_id')
->whereTime('date', '>', $this->date)
->get();
//Run through each party and assign them into a corporation, then add the corporation to the corporation array if they don't
//exist in the array.
foreach($parties as $party) {
//If the entry in the database lookup table isn't found, add it.
if(!CharacterToCorporation::where(['character_id' => $party->first_party_id])->exists()) {
$character = $esi->GetCharacterData($party->first_party_id);
$corporation = $esi->GetCorporationData($character->corporation_id);
$char = new CharacterToCorporation;
$char->character_id = $party->first_party_id;
$char->character_name = $character->name;
$char->corporation_id = $character->corporation_id;
$char->corporation_name = $corporation->name;
$char->save();
}
//Perform the lookup and add the user into the corps array, and the ammount to the amount array
}
}
/**
* Returns the overall usage for statistics
*/
public function OverallTax() {
//Initalize the date
$dateInit = Carbon::now();
//Subtract the days from now
$date = $dateInit->subDays($days);
//Get the total usage
$usage = DB::table('jump_bridge_journal')
->select('amount')
->whereTime('date', '>', $this->date)
->sum(['amount']);
//Return the usage
return $usage;
}
/**
* Returns a specific briddge usage statistics for overall usage
*/
public function JBOverallUsage($structure) {
$usage = DB::table('jump_bridge_journal')
->select('amount')
->where('context_id', $structure)
->sum(['amount']);
return $usage;
}
}