Cetaklabel/Http/Controllers/CardboardController.php

249 lines
8.7 KiB
PHP
Raw Permalink Normal View History

2023-06-13 02:01:35 +00:00
<?php
namespace Modules\Cetaklabel\Http\Controllers;
use App\Http\Controllers\Controller;
2023-07-20 02:42:53 +00:00
use Carbon\Carbon;
2023-06-13 02:01:35 +00:00
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
2023-07-21 09:37:07 +00:00
use Modules\Cetaklabel\Entities\Approval;
2023-06-13 02:01:35 +00:00
use Modules\Cetaklabel\DataTables\CardboardDataTable;
use Modules\Cetaklabel\Entities\Cardboard;
2023-06-13 09:17:59 +00:00
use Modules\Cetaklabel\Entities\Directorat;
2023-07-20 02:42:53 +00:00
use Modules\Cetaklabel\Entities\Document;
use Modules\Cetaklabel\Entities\DocumentDetail;
2023-08-31 08:42:00 +00:00
use Modules\Cetaklabel\Entities\Job;
use Modules\Cetaklabel\Entities\SubDirectorat;
2023-06-13 02:01:35 +00:00
use Modules\Cetaklabel\Http\Requests\Cardboard\StoreCardboardRequest;
use Modules\Cetaklabel\Http\Requests\Cardboard\UpdateCardboardRequest;
class CardboardController extends Controller
{
public $user;
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
2023-06-13 09:17:59 +00:00
2023-06-13 02:01:35 +00:00
}
/**
* Display a listing of the Cardboards.
*
* @param \App\DataTables\CardboardDataTable $dataTable
*
* @return mixed
*/
public function index(CardboardDataTable $dataTable, Request $request)
{
if (is_null($this->user) || !$this->user->can('document.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any document data !');
}
2023-07-20 02:42:53 +00:00
addVendor('chained-select');
2023-06-13 09:17:59 +00:00
$directorats = [];
if ($this->user->hasRole('ad')) {
$directorats = Directorat::all();
}
$subdirectorats = SubDirectorat::where('directorat_id', $this->user->directorat_id)->get();
$jobs = Job::where('sub_directorat_id', $this->user->sub_directorat_id)->get();
return $dataTable->render('cetaklabel::app.cardboard.index', compact('directorats', 'subdirectorats', 'jobs'));
2023-06-13 02:01:35 +00:00
}
/**
* Store a newly created Cardboard in storage.
*
* @param \App\Http\Requests\StoreCardboardRequest $request
*
* @return mixed
*/
public function store(StoreCardboardRequest $request)
{
if (is_null($this->user) || !$this->user->can('document.create')) {
abort(403, 'Sorry !! You are Unauthorized to create any document data !');
}
// Validate the request...
$validated = $request->validated();
// Store the Cardboard...
if ($validated) {
try {
2023-07-20 02:42:53 +00:00
$approval = [
'method' => 'create',
'menu' => 'Cardboard',
2023-07-20 02:42:53 +00:00
'new_request' => json_encode($validated),
'description' => 'Create new Cardboard',
'status' => '0',
];
Approval::create($approval);
2023-06-13 02:01:35 +00:00
echo json_encode(['status' => 'success', 'message' => 'Cardboard created successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Cardboard created failed.']);
}
return;
}
echo json_encode(['status' => 'error', 'message' => 'Cardboard created failed.']);
}
/**
* Show the form for creating a new Cardboard.
*/
public function create()
{
if (is_null($this->user) || !$this->user->can('document.create')) {
abort(403, 'Sorry !! You are Unauthorized to create any document data !');
}
abort(404);
}
/**
* Display the specified Cardboard.
*
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*/
2023-06-14 09:20:32 +00:00
public function show(CardboardDataTable $dataTable, Request $request)
2023-06-13 02:01:35 +00:00
{
if (is_null($this->user) || !$this->user->can('document.read')) {
abort(403, 'Sorry !! You are Unauthorized to view any document data !');
}
2023-06-14 09:20:32 +00:00
return $dataTable->render('cetaklabel::app.cardboard-detail.index');
2023-06-13 02:01:35 +00:00
}
/**
* Show the form for editing the specified Cardboard.
*
* @param $id
*/
public function edit($id)
{
if (is_null($this->user) || !$this->user->can('document.update')) {
abort(403, 'Sorry !! You are Unauthorized to update any document data !');
}
$cardboard = Cardboard::find($id);
echo json_encode($cardboard);
}
/**
* Update the specified Cardboard in storage.
*
* @param \App\Http\Requests\UpdateCardboardRequest $request
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*
* @return mixed
*/
public function update(UpdateCardboardRequest $request, Cardboard $cardboard)
{
if (is_null($this->user) || !$this->user->can('document.update')) {
abort(403, 'Sorry !! You are Unauthorized to update any document data !');
}
// Validate the request...
$validated = $request->validated();
// Update the Cardboard...
if ($validated) {
try {
2023-07-20 02:42:53 +00:00
$approval = [
'method' => 'update',
'menu' => 'Cardboard',
2023-07-20 02:42:53 +00:00
'new_request' => json_encode($validated),
'old_request' => json_encode($cardboard),
'description' => 'Update Cardboard',
'status' => '0',
];
Approval::create($approval);
2023-06-13 02:01:35 +00:00
echo json_encode(['status' => 'success', 'message' => 'Cardboard updated successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Cardboard updated failed.']);
}
return;
}
echo json_encode(['status' => 'error', 'message' => 'Cardboard updated failed.']);
}
/**
* Remove the specified Cardboard from storage.
*
* @param \Modules\Cetaklabel\Entities\Cardboard $cardboard
*
* @return void
*/
public function destroy(Cardboard $cardboard)
{
if (is_null($this->user) || !$this->user->can('document.delete')) {
abort(403, 'Sorry !! You are Unauthorized to delete any document data !');
}
2023-07-20 02:42:53 +00:00
$approval = [
'method' => 'delete',
'menu' => 'Cardboard',
2023-07-20 02:42:53 +00:00
'old_request' => json_encode($cardboard),
'description' => 'Delete Cardboard',
'status' => '0',
];
Approval::create($approval);
2023-06-13 02:01:35 +00:00
echo json_encode(['status' => 'success', 'message' => 'Cardboard deleted successfully.']);
}
2023-07-20 02:42:53 +00:00
public function label(Request $request)
{
if (is_null($this->user) || !$this->user->can('document.read')) {
abort(403, 'Sorry !! You are Unauthorized to download any master data !');
}
$cardboard = Cardboard::with(['cardboard_detail'])->find($request->id);
2023-07-20 02:42:53 +00:00
$document_id = $cardboard->cardboard_detail->pluck('document_id')->toArray();
if (!empty($document_id)) {
$start = DocumentDetail::whereIn('document_id', $document_id)
->orderBy('tanggal_dokumen', 'asc')
->first()->tanggal_dokumen;
$last = DocumentDetail::whereIn('document_id', $document_id)
->orderBy('tanggal_dokumen', 'desc')
->first()->tanggal_dokumen;
$start = Carbon::create($start);
$start = $start->isoFormat('DD MMMM Y');
$last = Carbon::create($last);
$last = $last->isoFormat('DD MMMM Y');
activity()
->performedOn($cardboard)
->causedBy(Auth::user())
->withProperties($document_id)
->log('Cetak Label Dus');
} else {
$start = Carbon::now();
$start = $start->isoFormat('DD MMMM Y');
$last = Carbon::now();
$last = $last->isoFormat('DD MMMM Y');
}
2023-07-20 02:42:53 +00:00
return view('cetaklabel::app.cardboard.label', compact('cardboard', 'start', 'last'));
}
2023-06-13 02:01:35 +00:00
}