Files
w4rpservices/app/Http/Controllers/Dashboard/StatisticsController.php
2020-03-11 00:23:43 -05:00

401 lines
14 KiB
PHP

<?php
namespace App\Http\Controllers\Dashboard;
//Internal Library
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Khill\Lavacharts\Lavacharts;
//Libraries
use App\Library\Taxes\TaxesHelper;
use App\Library\Lookups\LookupHelper;
use App\Library\SRP\SRPHelper;
//Models
use App\Models\User\User;
use App\Models\Doku\DokuGroupNames;
use App\Models\Doku\DokuMember;
use App\Models\Doku\DokuUser;
use App\Models\SRP\SrpFleetType;
use App\Models\SRP\SRPShip;
use App\Models\SRP\SrpShipType;
use App\Models\SRP\SrpPayout;
class StatisticsController extends Controller
{
/**
* Create a new controller instance
*
* @return void
*/
public function __construct() {
$this->middleware('auth');
}
/**
* Display Jump Bridge Statistics
*/
public function displayJumpBridgeStatistics() {
$this->middleware('role:Admin');
$lava = new Lavacharts;
}
/**
* Display Taxes Statistics
*/
public function displayTaxes() {
$this->middleware('role:Admin');
//Declare variables needed for displaying items on the page
$months = 3;
$pi = array();
$industry = array();
$reprocessing = array();
$office = array();
$corpId = 98287666;
$srpActual = array();
$srpLoss = array();
/** Taxes Pane */
//Declare classes needed for displaying items on the page
$tHelper = new TaxesHelper;
$srpHelper = new SRPHelper;
//Get the dates for the tab panes
$dates = $tHelper->GetTimeFrameInMonths($months);
//Get the data for the Taxes Pane
foreach($dates as $date) {
//Get the srp actual pay out for the date range
$srpActual[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($srpHelper->GetAllianceSRPActual($date['start'], $date['end']), 2, ".", ","),
];
//Get the srp loss value for the date range
$srpLoss[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($srpHelper->GetAllianceSRPLoss($date['start'], $date['end']), 2, ".", ","),
];
//Get the pi taxes for the date range
$pis[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetPIGross($date['start'], $date['end']), 2, ".", ","),
];
//Get the industry taxes for the date range
$industrys[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetIndustryGross($date['start'], $date['end']), 2, ".", ","),
];
//Get the reprocessing taxes for the date range
$reprocessings[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetReprocessingGross($date['start'], $date['end']), 2, ".", ","),
];
//Get the office taxes for the date range
$offices[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetOfficeGross($date['start'], $date['end']), 2, ".", ","),
];
//Get the market taxes for the date range
$markets[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetAllianceMarketGross($date['start'], $date['end']), 2, ".", ","),
];
//Get the jump gate taxes for the date range
$jumpgates[] = [
'date' => $date['start']->toFormattedDateString(),
'gross' => number_format($tHelper->GetJumpGateGross($date['start'], $date['end']), 2, ".", ","),
];
}
return view('admin.dashboards.taxes')->with('pis', $pis)
->with('industrys', $industrys)
->with('offices', $offices)
->with('markets', $markets)
->with('jumpgates', $jumpgates)
->with('reprocessings', $reprocessings)
->with('srpActual', $srpActual)
->with('srpLoss', $srpLoss);
}
/**
* Display wiki statistics
*/
public function displayWikiStatistics() {
$this->middleware('role:Admin');
}
/**
* Display SRP Statistics
*/
public function displaySRPStatistics() {
$months = 3;
$barChartData = array();
$start = Carbon::now()->toDateTimeString();
$end = Carbon::now()->subMonths(1)->toDateTimeString();
//Declare the Lavacharts variable
$lava = new Lavacharts;
//We need a function from this library rather than recreating a new library
$srpHelper = new SRPHelper();
/**
* Pie chart for the number of approved, denied, and under review payouts currently in the system.
*/
//Get the count of open srp requests
$pieOpen = SRPShip::where([
'approved' => 'Under Review',
['created_at', '>=', $end],
])->count();
//Get the count of approved srp requests
$pieApproved = SRPShip::where([
'approved' => 'Approved',
['created_at', '>=', $end],
])->count();
//Get the count of denied srp requests
$pieDenied = SRPShip::where([
'approved' => 'Denied',
['created_at', '>=', $end],
])->count();
//Create a new datatable for the lavachart.
$srp = $lava->DataTable();
//Add string columns, number columns, and data rows for the chart
$srp->addStringColumn('ISK Value')
->addNumberColumn('ISK')
->addRow(['Approved', $pieApproved])
->addRow(['Denied', $pieDenied])
->addRow(['Under Review', $pieOpen]);
//Create the pie chart in memory with any options needed to render the chart
$lava->PieChart('SRP Stats', $srp, [
'title' => 'SRP Stats',
'is3D' => true,
]);
/**
* Gauage chart for showing number of open srp requests
*/
//Create a new datatable in the
$adur = $lava->DataTable();
//Add string columns, number columns, and data row for the chart
$adur->addStringColumn('Type')
->addNumberColumn('Value')
->addRow(['Under Review', $pieOpen]);
//Create the gauge chart with any options needed to render the chart
$lava->GaugeChart('SRP', $adur, [
'width' => 400,
'greenFrom' => 0,
'greenTo' => 20,
'yellowFrom' => 20,
'yellowTo' => 40,
'redFrom' => 40,
'redTo' => 100,
'majorTicks' => [
'Safe',
'Critical',
],
]);
/**
* Create a vertical chart of all of the cost codes for the ships being SRP'ed.
* The chart will be by cost code of ships being replaced
*/
//Declare the data table
$costCodeChart = $lava->DataTable();
//Get the approved, under review, and denied cost codes and amounts
$t1fdcApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T1FDC',
])->sum('paid_value');
$t1fdcUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T1FDC',
])->sum('loss_value');
$t1fdcDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T1FDC',
])->sum('loss_value');
$t1bcApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T1BC',
])->sum('paid_value');
$t1bcUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T1BC',
])->sum('loss_value');
$t1bcDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T1BC',
])->sum('loss_value');
$t2fdApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T2FD',
])->sum('paid_value');
$t2fdUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T2FD',
])->sum('loss_value');
$t2fdDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T2FD',
])->sum('loss_value');
$t3dApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T3D',
])->sum('paid_value');
$t3dUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T3D',
])->sum('loss_value');
$t3dDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T3D',
])->sum('loss_value');
$t1t2logiApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T1T2Logi',
])->sum('paid_value');
$t1t2logiUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T1T2Logi',
])->sum('loss_value');
$t1t2logiDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T1T2Logi',
])->sum('loss_value');
$reconsApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'REC',
])->sum('paid_value');
$reconsUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'REC',
])->sum('loss_value');
$reconsDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'REC',
])->sum('loss_value');
$t2cApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T2C',
])->sum('paid_value');
$t2cUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T2C',
])->sum('loss_value');
$t2cDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T2C',
])->sum('loss_value');
$t3cApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T3C',
])->sum('paid_value');
$t3cUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T3C',
])->sum('loss_value');
$t3cDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T3C',
])->sum('loss_value');
$commandApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'COM',
])->sum('paid_value');
$commandUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'COM',
])->sum('loss_value');
$commandDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'COM',
])->sum('loss_value');
$interdictorApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'INTD',
])->sum('paid_value');
$interdictorUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'INTD',
])->sum('loss_value');
$interdictorDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'INTD',
])->sum('loss_value');
$t1bsApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'T1BS',
])->sum('paid_value');
$t1bsUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'T1BS',
])->sum('loss_value');
$t1bsDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'T1BS',
])->sum('loss_value');
$dksApproved = SRPShip::where([
'approved' => 'Approved',
'ship_type' => 'DKS',
])->sum('paid_value');
$dksUnderReview = SRPShip::where([
'approved' => 'Under Review',
'ship_type' => 'DKS',
])->sum('loss_value');
$dksDenied = SRPShip::where([
'approved' => 'Denied',
'ship_type' => 'DKS',
])->sum('loss_value');
//Add string column, number columns.
$costCodeChart->addStringColumn('SRP Costs')
->addNumberColumn('Approved')
->addNumberColumn('Under Review')
->addNumberColumn('Denied')
->addRow(['T1FDC', $t1fdcApproved, $t1fdcUnderReview, $t1fdcDenied])
->addRow(['T1BC', $t1bcApproved, $t1bcUnderReview, $t1bcDenied])
->addRow(['T1BS', $t1bsApproved, $t1bsUnderReview, $t1bsDenied])
->addRow(['T2FD', $t2fdApproved, $t2fdUnderReview, $t2fdDenied])
->addRow(['T2C', $t2cApproved, $t2cUnderReview, $t2cDenied])
->addRow(['T1T2Logi', $t1t2logiApproved, $t1t2logiUnderReview, $t1t2logiDenied])
->addRow(['T3D', $t3dApproved, $t3dUnderReview, $t3dDenied])
->addRow(['T3C', $t3cApproved, $t3cUnderReview, $t3cDenied])
->addRow(['RECON', $reconsApproved, $reconsUnderReview, $reconsDenied])
->addRow(['COMMAND', $commandApproved, $commandUnderReview, $commandDenied])
->addRow(['DKS', $dksApproved, $dksUnderReview, $dksDenied]);
$lava->ColumnChart('Cost Codes', $costCodeChart, [
'columns' => 4,
'title' => 'Cost Code SRP Chart',
'titleTextStyle' => [
'color' => '#eb6b2c',
'fontSize' => 14,
],
]);
return view('srp.admin.statistics')->with('lava', $lava);
}
}