Writeoff/Http/Controllers/ApprovalController.php

178 lines
5.7 KiB
PHP

<?php
namespace Modules\Writeoff\Http\Controllers;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Auth;
use Modules\Writeoff\DataTables\ApprovalDataTable;
use Modules\Writeoff\Entities\Approval;
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('writeoff::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)
{
$authorization = Approval::findOrFail($id);
return view('writeoff::approval.edit', compact('authorization'));
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param int $id
*
* @return Renderable
*/
public function update(Request $request, $id)
{
$_model = [
'Parameter Cabang' => 'Branch',
'Parameter Mata Uang' => 'Currency',
'Parameter Jenis Jaminan' => 'GuaranteeType',
'Parameter Jenis Fasilitas' => 'FacilityType',
'Parameter Jenis Pinjaman' => 'LoanType',
'Parameter Debitur' => 'Debitur',
'Parameter Rekening' => 'Rekening',
'Subrogasi Jamkrindo' => 'SubrogasiJamkrindo',
'Klaim Jamkrindo' => 'KlaimJamkrindo',
'Hapus Buku' => 'HapusBuku',
'Detail Pembayaran' => 'DetailPembayaran',
'Detail Penagihan' => 'DetailPenagihan',
];
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\\Writeoff\\Entities\\" . $_model[$approval->menu];
$model = new $model();
if ($approval->status == 1) {
if ($approval->method == 'create') {
$data = json_decode($approval->new_request, true);
$data['authorized_status'] = 1;
$data['authorized_by'] = $this->user->id;
$data['authorized_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['authorized_status'] = 1;
$data['authorized_by'] = $this->user->id;
$data['authorized_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_['authorized_status'] = 1;
$data_['authorized_by'] = $this->user->id;
$data_['authorized_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 . '
]);
}
}
/**
* Remove the specified resource from storage.
*
* @param int $id
*
* @return Renderable
*/
public function destroy($id)
{
//
}
}