Cetaklabel/Http/Controllers/ApprovalController.php

149 lines
4.6 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\ApprovalDataTable;
use Modules\Cetaklabel\Entities\Approval;
2023-08-10 04:35:07 +00:00
use Modules\Cetaklabel\Entities\Cardboard;
use Modules\Cetaklabel\Entities\Document;
use Modules\Cetaklabel\Entities\DocumentDetail;
use Modules\Cetaklabel\Entities\Directorat;
use Modules\Cetaklabel\Entities\SubDirectorat;
use Modules\Cetaklabel\Entities\Job;
use Modules\Cetaklabel\Entities\SubJob;
use Modules\Cetaklabel\Entities\SubSubJob;
use Modules\Cetaklabel\Entities\DocumentType;
use Modules\Cetaklabel\Entities\SpecialCode;
use Modules\Cetaklabel\Entities\CardboardDetail;
2023-07-21 09:37:19 +00:00
class ApprovalController extends Controller
{
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->user = Auth::guard('web')->user();
return $next($request);
});
}
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(ApprovalDataTable $dataTable)
{
return $dataTable->render('cetaklabel::app.approval.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)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('cetaklabel::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
2023-08-10 04:35:07 +00:00
$approval = Approval::findOrFail($id);
return view('cetaklabel::app.approval.edit', compact('approval'));
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)
{
2023-08-10 04:35:07 +00:00
try {
$approval = Approval::findOrFail($id);
$approval->approved_by = $this->user->id;
$approval->approved_at = date('Y-m-d H:i:s');
$approval->status = $request->status;
$model = "Modules\\Cetaklabel\\Entities\\$approval->menu";
$model = new $model();
if($approval->status == 1){
if($approval->method == 'create'){
$data = json_decode($approval->new_request, true);
$data['approved_by'] = $this->user->id;
$data['approved_at'] = date('Y-m-d H:i:s');
$model->fill($data);
$model->save();
} else if($approval->method == 'update'){
$old = json_decode($approval->old_request, true);
$data = json_decode($approval->new_request, true);
$data['approved_by'] = $this->user->id;
$data['approved_at'] = date('Y-m-d H:i:s');
$model = $model::findOrFail($old['id']);
$model->fill($data);
$model->save();
} else if($approval->method == 'delete'){
$data = json_decode($approval->old_request, true);
$model = $model::findOrFail($data['id']); $data_ = [];
$data_['approved_by'] = $this->user->id;
$data_['approved_at'] = date('Y-m-d H:i:s');
$model = $model::findOrFail($data['id']);
$model->fill($data_);
$model->save();
$model->delete();
}
}
$approval->save();
$approval->delete();
echo json_encode(['status' => 'success', 'message' => 'Approval '.$approval->description.' successfully.']);
} catch (Exception $e) {
echo json_encode(['status' => 'error', 'message' => 'Approval '.$approval->description.' failed.']);
}
2023-07-21 09:37:19 +00:00
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}