Cetaklabel/Http/Controllers/ApprovalController.php

210 lines
7.3 KiB
PHP
Raw Normal View History

2023-07-21 09:37:19 +00:00
<?php
2023-09-07 04:33:47 +00:00
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;
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;
class ApprovalController extends Controller
2023-07-21 09:37:19 +00:00
{
2023-09-07 04:33:47 +00:00
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)
{
$approval = Approval::findOrFail($id);
return view('cetaklabel::app.approval.edit', compact('approval'));
}
/**
* 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 {
2023-09-07 04:33:47 +00:00
$approval = Approval::findOrFail($id);
2023-08-10 04:35:07 +00:00
$approval->approved_by = $this->user->id;
$approval->approved_at = date('Y-m-d H:i:s');
2023-09-07 04:33:47 +00:00
$approval->status = $request->status;
2023-08-10 04:35:07 +00:00
$model = "Modules\\Cetaklabel\\Entities\\$approval->menu";
$model = new $model();
2023-09-07 04:43:06 +00:00
//20555012,18
2023-09-07 04:33:47 +00:00
if ($approval->status == 1) {
if ($approval->method == 'create') {
if ($approval->menu == 'CardboardDetail') {
$data = json_decode($approval->new_request, true);
2023-08-10 04:35:07 +00:00
2023-09-11 07:14:03 +00:00
$document_id = $data['document_id'];
2023-09-11 07:16:01 +00:00
2023-09-11 07:14:03 +00:00
foreach ($document_id as $key => $value) {
2023-09-11 07:16:01 +00:00
$model = new $model();
2023-09-07 04:43:06 +00:00
$_data['status'] = 1;
$_data['approved_by'] = $this->user->id;
$_data['approved_at'] = date('Y-m-d H:i:s');
2023-09-11 07:17:34 +00:00
$_data['cardboard_id'] = $data['cardboard_id'];
2023-09-07 04:43:06 +00:00
$_data['document_id'] = $value;
2023-09-07 04:29:18 +00:00
2023-09-07 04:33:47 +00:00
$model->fill($_data);
2023-09-07 04:29:18 +00:00
$model->save();
}
} else {
2023-09-07 04:33:47 +00:00
$data = json_decode($approval->new_request, true);
$data['status'] = 1;
$data['approved_by'] = $this->user->id;
$data['approved_at'] = date('Y-m-d H:i:s');
2023-09-07 04:29:18 +00:00
$model->fill($data);
$model->save();
}
2023-09-07 04:33:47 +00:00
} else if ($approval->method == 'update') {
$old = json_decode($approval->old_request, true);
2023-08-10 04:35:07 +00:00
$data = json_decode($approval->new_request, true);
2023-09-07 04:33:47 +00:00
$data['status'] = 1;
2023-08-10 04:35:07 +00:00
$data['approved_by'] = $this->user->id;
$data['approved_at'] = date('Y-m-d H:i:s');
2023-09-07 04:33:47 +00:00
$model = $model::findOrFail($old['id']);
2023-09-07 04:29:18 +00:00
2023-09-11 07:14:03 +00:00
$document_id = $data['document_id'];
2023-09-07 04:33:47 +00:00
if ($approval->menu == 'CardboardDetail') {
$data = json_decode($approval->new_request, true);
$document_id = $data['document_id'];
2023-09-11 07:14:03 +00:00
foreach ($document_id as $key => $value) {
$model = new $model();
$model = $model::findOrFail($data['cardboard_id']);
$_data['status'] = 1;
$_data['approved_by'] = $this->user->id;
$_data['approved_at'] = date('Y-m-d H:i:s');
$_data['cardboard_id'] = $data['cardboard_id'];
$_data['document_id'] = $value;
2023-09-07 04:29:18 +00:00
$model->fill($_data);
2023-09-07 04:29:18 +00:00
$model->save();
}
} else {
$model->fill($data);
$model->save();
}
2023-09-07 04:33:47 +00:00
} else if ($approval->method == 'delete') {
$data = json_decode($approval->old_request, true);
2023-08-30 06:33:45 +00:00
$model = $model::findOrFail($data['id']);
2023-08-10 04:35:07 +00:00
2023-09-07 04:33:47 +00:00
$data_ = [];
$data_['status'] = 1;
2023-08-10 04:35:07 +00:00
$data_['approved_by'] = $this->user->id;
$data_['approved_at'] = date('Y-m-d H:i:s');
2023-09-07 04:33:47 +00:00
$model = $model::findOrFail($data['id']);
2023-08-10 04:35:07 +00:00
$model->fill($data_);
$model->save();
$model->delete();
}
}
$approval->save();
$approval->delete();
2023-09-07 04:43:06 +00:00
echo json_encode([
'status' => 'success',
'message' => 'Approval ' . $approval->description . ' successfully.'
2023-09-07 04:33:47 +00:00
]);
2023-08-10 04:35:07 +00:00
} catch (Exception $e) {
2023-09-07 04:33:47 +00:00
echo json_encode(['status' => 'error', 'message' => 'Approval ' . $approval->description . ' failed.']);
2023-08-10 04:35:07 +00:00
}
2023-09-07 04:33:47 +00:00
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return Renderable
*/
public function destroy($id)
{
//
}
2023-07-21 09:37:19 +00:00
}