sigd/app/Http/Controllers/Reports/GpcOutputController.php

70 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Reports;
use App\Exports\GpcOutputExport;
use App\Http\Controllers\Controller;
use App\Models\ActivityGpcOutput;
use App\Services\Reports\GpcOutputService;
use Illuminate\Support\Facades\Validator;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Http\Request;
class GpcOutputController extends Controller
{
protected $service;
public function __construct(GpcOutputService $service)
{
$this->service = $service;
}
public function show($inventoryYear = null)
{
$inventoryYear = $inventoryYear ?? date('Y');
$years = activityYearRange($inventoryYear, false);
$gpcOutputs = ActivityGpcOutput::where('inventory_year', $inventoryYear)
->rowActive()->orderBy('activity_year', 'desc')
->whereBetween('activity_year', [$years[0], end($years)])
->get();
$gpcOutputRList = [];
foreach ($gpcOutputs as $gpcOutput) {
$gpcOutputRList[] = $gpcOutput->getAllColumnsWithReference();
}
return view('reports.gpc-output.index', [
'inventoryYear' => $inventoryYear,
'gpcOutputs' => $gpcOutputs,
'gpcOutputRList' => $gpcOutputRList,
]);
}
public function export(Request $request)
{
$validator = Validator::make($request->all(), [
'inventoryYear' => 'required|integer',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
$inventoryYear = $request->input('inventoryYear');
// Fetch the necessary data
$gpcOutputs = ActivityGpcOutput::where('inventory_year', $inventoryYear)
->rowActive()->orderBy('activity_year', 'desc')->get();
$gpcOutputRList = [];
foreach ($gpcOutputs as $gpcOutput) {
$gpcOutputRList[] = $gpcOutput->getAllColumnsWithReference();
}
$titleExcel = 'GPC-OUTPUT_' . $inventoryYear;
return Excel::download(new GpcOutputExport($inventoryYear, $gpcOutputs, $gpcOutputRList), $titleExcel . '.xlsx');
}
}