Cetaklabel/Http/Controllers/ReportController.php

175 lines
5.4 KiB
PHP
Raw Normal View History

2023-07-21 09:37:19 +00:00
<?php
namespace Modules\Cetaklabel\Http\Controllers;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Cetaklabel\DataTables\CardboardDataTable;
2023-08-10 11:23:28 +00:00
use Modules\Cetaklabel\DataTables\ReportDataTable;
use Modules\Cetaklabel\DataTables\ReportDocumentDataTable;
use Modules\Cetaklabel\DataTables\ReportOdnerDataTable;
use Modules\Cetaklabel\Entities\CardboardDetail;
2023-07-21 09:37:19 +00:00
use Modules\Cetaklabel\Entities\Directorat;
2023-08-10 11:23:28 +00:00
use Modules\Cetaklabel\Entities\Document;
use Modules\Cetaklabel\Entities\DocumentDetail;
use Modules\Cetaklabel\Entities\Report;
2023-07-21 09:37:19 +00:00
use Modules\Cetaklabel\Entities\SubDirectorat;
class ReportController extends Controller
{
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
}
public function _index(CardboardDataTable $datatable){
addVendor('chained-select');
$directorats = Directorat::all();
return $datatable->render('cetaklabel::app.cardboard.index', compact('directorats'));
}
/**
* Display a listing of the resource.
*
* @return Renderable
*/
public function index()
{
addVendor('chained-select');
if (Auth::user()->hasRole(['ad', 'administrator'])) {
$directorat = Directorat::all();
return view('cetaklabel::app.report.index', compact('directorat'));
2023-08-10 14:25:54 +00:00
} else if (Auth::user()->hasRole(['dd','eo'])) {
2023-07-21 09:37:19 +00:00
$sub_directorat = SubDirectorat::all();
return view('cetaklabel::app.report.index', compact('sub_directorat'));
}
return view('cetaklabel::app.report.index');
}
/**
* Show the form for creating a new resource.
*
* @return Renderable
*/
public function create()
{
return view('cetaklabel::create');
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
*
* @return Renderable
*/
public function store(Request $request)
{
2023-08-10 14:25:54 +00:00
$param = json_encode($request->all());
$report = Report::create([
'param' => $param
]);
return redirect()->route('report.show', $report->id);
2023-07-21 09:37:19 +00:00
}
/**
* Show the specified resource.
*
* @param int $id
*
* @return Renderable
*/
2023-08-10 11:23:28 +00:00
public function show(ReportDataTable $dataTable, ReportOdnerDataTable $dataTableOdner, ReportDocumentDataTable $dataTableDocument,$id)
2023-07-21 09:37:19 +00:00
{
2023-08-10 11:23:28 +00:00
$report = Report::find($id);
$param = json_decode($report->param);
if($param->jenis_laporan == "dus"){
return $this->showReport($dataTable);
}
if ($param->jenis_laporan == "odner") {
return $this->showReport($dataTableOdner);
}
if ($param->jenis_laporan == "document") {
return $this->showReport($dataTableDocument);
}
2023-07-21 09:37:19 +00:00
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
*
* @return Renderable
*/
2023-08-10 11:23:28 +00:00
private function showReport($dataTable)
2023-07-21 09:37:19 +00:00
{
2023-08-10 11:23:28 +00:00
return $dataTable->render('cetaklabel::app.report.show');
2023-07-21 09:37:19 +00:00
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param int $id
*
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return Renderable
*/
public function destroy($id)
{
//
}
2023-08-10 11:23:28 +00:00
public function dusList($id)
{
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=list-odner-dus.xls"); //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
$dus = CardboardDetail::where('cardboard_id', $id)->pluck('document_id')->toArray();
$documents = Document::whereIn('id',$dus)->get();
return view('cetaklabel::app.report.dus-list', compact('documents'));
}
public function odnerList($id)
{
header("Content-Type: application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=list-document-odner.xls"); //File name extension was wrong
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
$document = Document::where('id',$id)->first();
$documents = DocumentDetail::where('document_id', $document->id)->get();
return view('cetaklabel::app.report.odner-list', compact('documents'));
}
2023-07-21 09:37:19 +00:00
}