79 lines
2.7 KiB
PHP
79 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Reports;
|
|
|
|
use App\Exports\CrfExport;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\ActivityCrf;
|
|
use App\Models\ReferenceSector;
|
|
use App\Models\ReferenceWs;
|
|
use App\Services\Reports\CrfService;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
|
|
class CrfController extends Controller
|
|
{
|
|
protected $service;
|
|
|
|
public function __construct(CrfService $service)
|
|
{
|
|
$this->service = $service;
|
|
}
|
|
|
|
public function show($inventoryYear = null, $activityYear = null, $sectorCode = null)
|
|
{
|
|
$categories = ReferenceSector::rowActive()->orderByRowNum()->get();
|
|
$worksheets = ReferenceWs::with('children')->rowActive()->where('sector', $sectorCode)->isMain()->orderByRowNum()->get();
|
|
|
|
$crfData = ActivityCrf::rowActive()
|
|
->where('sector', $sectorCode)
|
|
->where('inventory_year', $inventoryYear)
|
|
->where('activity_year', $activityYear)
|
|
->get();
|
|
|
|
return view('reports.crf.index', [
|
|
'inventoryYear' => $inventoryYear ?? date('Y'),
|
|
'activityYear' => $activityYear ?? date('Y') - 1,
|
|
'sectorCode' => $sectorCode,
|
|
|
|
'categories' => $categories,
|
|
'worksheets' => $worksheets,
|
|
'crfData' => $crfData,
|
|
]);
|
|
}
|
|
|
|
public function export(Request $request)
|
|
{
|
|
// Validate and sanitize inputs
|
|
$validator = Validator::make($request->all(), [
|
|
'inventoryYear' => 'required|integer',
|
|
'activityYear' => 'required|integer',
|
|
'sectorCode' => 'required|string',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return redirect()->back()->withErrors($validator)->withInput();
|
|
}
|
|
|
|
$inventoryYear = $request->input('inventoryYear');
|
|
$activityYear = $request->input('activityYear');
|
|
$sectorCode = $request->input('sectorCode');
|
|
|
|
// Fetch the necessary data
|
|
$sector = ReferenceSector::rowActive()->where('code', $sectorCode)->first();
|
|
$worksheets = ReferenceWs::with('children')->rowActive()->where('sector', $sectorCode)->isMain()->orderByRowNum()->get();
|
|
$crfData = ActivityCrf::rowActive()
|
|
->where('sector', $sectorCode)
|
|
->where('inventory_year', $inventoryYear)
|
|
->where('activity_year', $activityYear)
|
|
->get();
|
|
|
|
$titleExcel = 'CRF_' . strtoupper($sector->name) . '_' . $inventoryYear . '_' . $activityYear;
|
|
$sector->inventoryYear = $inventoryYear;
|
|
$sector->activityYear = $activityYear;
|
|
|
|
return Excel::download(new CrfExport($sector, $crfData, $worksheets), $titleExcel . '.xlsx');
|
|
}
|
|
}
|