Tambah kolom approval pada tabel permohonan
- Menambahkan kolom approval_eo, approval_dd, dan approval_so beserta timestamp terkait di tabel permohonan. - Memperluas fungsionalitas model dan controller untuk mendukung kolom approval baru.
This commit is contained in:
@@ -1,26 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Http\Requests\PenilaianRequest;
|
||||
use Modules\Lpj\Models\JenisPenilaian;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\PenilaianTeam;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\Teams;
|
||||
use Modules\Lpj\Models\Regions;
|
||||
use Modules\Lpj\Models\TeamsUsers;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Http\Requests\PenilaianRequest;
|
||||
use Modules\Lpj\Models\JenisPenilaian;
|
||||
use Modules\Lpj\Models\Penilaian;
|
||||
use Modules\Lpj\Models\PenilaianTeam;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\Teams;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
|
||||
class PenilaianController extends Controller
|
||||
{
|
||||
class PenilaianController extends Controller
|
||||
{
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
@@ -75,7 +74,6 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$roles[] = 'surveyor';
|
||||
|
||||
}
|
||||
|
||||
if ($validatedData['penilai_id'] === 'pilih_dari_region') {
|
||||
@@ -103,7 +101,6 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$roles[] = 'penilai';
|
||||
|
||||
}
|
||||
|
||||
foreach ($teams_ids as $key => $teams_id) {
|
||||
@@ -171,7 +168,6 @@ class PenilaianController extends Controller
|
||||
'role' => 'penilai',
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
|
||||
@@ -182,7 +178,7 @@ class PenilaianController extends Controller
|
||||
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json([ 'success' => false, 'error' => $e->getMessage()]);
|
||||
return response()->json(['success' => false, 'error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,11 +202,9 @@ class PenilaianController extends Controller
|
||||
|
||||
$jenisPenilaian = JenisPenilaian::find($idPenilaian);
|
||||
|
||||
$userTeam = Teams::with(['regions', 'teamsUsers.user'])
|
||||
->whereHas('regions', function ($q) use ($idRegion) {
|
||||
$userTeam = Teams::with(['regions', 'teamsUsers.user'])->whereHas('regions', function ($q) use ($idRegion) {
|
||||
$q->where('id', $idRegion);
|
||||
})
|
||||
->get();
|
||||
})->get();
|
||||
|
||||
$teamPenilai = $userTeam->flatMap(function ($team) {
|
||||
return $team->teamsUsers->filter(function ($teamUser) {
|
||||
@@ -224,9 +218,10 @@ class PenilaianController extends Controller
|
||||
|
||||
$existingTeamIds = $userTeam->pluck('id')->toArray();
|
||||
|
||||
$updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])
|
||||
->whereNotIn('id', $existingTeamIds)
|
||||
->get();
|
||||
$updateTeamPenilai = Teams::with(['regions', 'teamsUsers', 'teamsUsers.user'])->whereNotIn(
|
||||
'id',
|
||||
$existingTeamIds,
|
||||
)->get();
|
||||
|
||||
$regionName = null;
|
||||
foreach ($userTeam as $item) {
|
||||
@@ -240,8 +235,20 @@ class PenilaianController extends Controller
|
||||
$penilaianTeam = PenilaianTeam::where('penilaian_id', $penilaian->id)->get();
|
||||
}
|
||||
|
||||
return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian', 'regionName', 'updateTeamPenilai', 'penilaianTeam'));
|
||||
return view(
|
||||
'lpj::penilaian.form',
|
||||
compact(
|
||||
'permohonan',
|
||||
'teamPenilai',
|
||||
'jenisPenilaian',
|
||||
'penilaian',
|
||||
'regionName',
|
||||
'updateTeamPenilai',
|
||||
'penilaianTeam',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
@@ -250,9 +257,7 @@ class PenilaianController extends Controller
|
||||
{
|
||||
$validatedData = $request->validated();
|
||||
if ($validatedData) {
|
||||
|
||||
try {
|
||||
|
||||
if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) {
|
||||
$file_name = $validatedData['dokumen']->getClientOriginalName();
|
||||
$validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name);
|
||||
@@ -276,12 +281,9 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function dataForDatatables(Request $request)
|
||||
{
|
||||
|
||||
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||
|
||||
}
|
||||
|
||||
$query = Permohonan::query();
|
||||
@@ -329,7 +331,9 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
$filteredRecords = $query->count();
|
||||
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'])->get();
|
||||
$data = $query->with(
|
||||
['user', 'debiture', 'branch', 'tujuanPenilaian', 'region.teams.teamsUsers.user'],
|
||||
)->get();
|
||||
|
||||
$pageCount = ceil($totalRecords / $size);
|
||||
|
||||
@@ -346,12 +350,8 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function otorisator(Request $request)
|
||||
{
|
||||
|
||||
$type = $request->route('type');
|
||||
$headers = [
|
||||
'pelaporan' => 'Pelaporan',
|
||||
@@ -382,11 +382,10 @@ class PenilaianController extends Controller
|
||||
|
||||
public function otorisatorUpdate(Request $request, $id, $context)
|
||||
{
|
||||
|
||||
$permohonan = Permohonan::find($id);
|
||||
if (!$permohonan) {
|
||||
return response()->json([
|
||||
'message' => 'Data permohonan tidak ditemukan.'
|
||||
'message' => 'Data permohonan tidak ditemukan.',
|
||||
], 404);
|
||||
}
|
||||
|
||||
@@ -397,53 +396,67 @@ class PenilaianController extends Controller
|
||||
|
||||
$permohonan->update([
|
||||
'status_bayar' => $newStatus,
|
||||
'keterangan' => $request->message
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'pembatalan':
|
||||
$permohonan->update([
|
||||
'status' => 'batal',
|
||||
'keterangan' => $request->message
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'pelaporan':
|
||||
if(Auth::user()->roles[0]->name === 'senior-officer') {
|
||||
$permohonan->update([
|
||||
'status' => 'proses-laporan',
|
||||
'keterangan' => $request->message
|
||||
'approval_so' => Auth::user()->id,
|
||||
'approval_so_at' => now(),
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
} elseif(Auth::user()->roles[0]->name === 'EO Appraisal') {
|
||||
$permohonan->update([
|
||||
'status' => 'proses-laporan',
|
||||
'approval_eo' => Auth::user()->id,
|
||||
'approval_eo_at' => now(),
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
} elseif(Auth::user()->roles[0]->name === 'DD Appraisal') {
|
||||
$permohonan->update([
|
||||
'status' => 'proses-laporan',
|
||||
'approval_dd' => Auth::user()->id,
|
||||
'approval_dd_at' => now(),
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'sla':
|
||||
|
||||
$permohonan->update([
|
||||
'status' => 'proses-sla',
|
||||
'keterangan' => $request->message
|
||||
'keterangan' => $request->message,
|
||||
]);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Konteks otorisasi tidak valid.'
|
||||
'message' => 'Konteks otorisasi tidak valid.',
|
||||
], 400);
|
||||
}
|
||||
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Otorisasi berhasil dilakukan.',
|
||||
'data' => $permohonan
|
||||
'data' => $permohonan,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function dataForAuthorization(Request $request, $otorisator)
|
||||
{
|
||||
|
||||
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||
// abort(403, 'Sorry! You are not allowed to view users.');
|
||||
}
|
||||
@@ -489,9 +502,11 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
// Filter berdasarkan region user yang login
|
||||
if(Auth::user()->hasRole('senior-officer')) {
|
||||
$query->whereHas('region.teams.teamsUsers', function ($q) {
|
||||
$q->where('user_id', Auth::id());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Sorting berdasarkan sortField dan sortOrder
|
||||
@@ -543,4 +558,4 @@ class PenilaianController extends Controller
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,25 @@
|
||||
'approve_keterangan_bayar',
|
||||
'approve_bayar_by',
|
||||
'approve_bayar_at',
|
||||
|
||||
'approval_eo',
|
||||
'approval_eo_at',
|
||||
'approval_dd',
|
||||
'approval_dd_at',
|
||||
'approval_so',
|
||||
'approval_so_at',
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'tanggal_permohonan',
|
||||
'authorized_at',
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'registrasi_at',
|
||||
'approve_bayar_at',
|
||||
'approval_eo_at',
|
||||
'approval_dd_at',
|
||||
'approval_so_at',
|
||||
];
|
||||
|
||||
protected static function boot()
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class AddApprovalFieldsToPermohonanTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('permohonan', function (Blueprint $table) {
|
||||
$table->boolean('approval_eo')->default(false)->after('status');
|
||||
$table->timestamp('approval_eo_at')->nullable()->after('approval_eo');
|
||||
|
||||
$table->boolean('approval_dd')->default(false)->after('approval_eo_at');
|
||||
$table->timestamp('approval_dd_at')->nullable()->after('approval_dd');
|
||||
|
||||
$table->boolean('approval_so')->default(false)->after('approval_dd_at');
|
||||
$table->timestamp('approval_so_at')->nullable()->after('approval_so');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('permohonan', function (Blueprint $table) {
|
||||
$table->dropColumn([
|
||||
'approval_eo', 'approval_eo_at',
|
||||
'approval_dd', 'approval_dd_at',
|
||||
'approval_so', 'approval_so_at'
|
||||
]);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,37 @@
|
||||
|
||||
@include('lpj::component.detail-jaminan', ['backLink' => 'otorisator.'. $dataHeader . '.index'])
|
||||
|
||||
@if($permohonan->approval_so)
|
||||
<div class="card pb-2.5">
|
||||
<div class="card-header" id="basic_settings">
|
||||
<h3 class="card-title">
|
||||
Approval
|
||||
</h3>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<table class="table table-border">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Diperiksa Oleh</td>
|
||||
<td>{{ getUser($permohonan->approval_so)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_so_at ? formatTanggalIndonesia($permohonan->approval_so_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Disetujui Oleh (EO)</td>
|
||||
<td>{{ getUser($permohonan->approval_eo)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_eo_at ? formatTanggalIndonesia($permohonan->approval_eo_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Disetujui Oleh (DD)</td>
|
||||
<td>{{ getUser($permohonan->approval_dd)->name ?? 'N/A' }}</td>
|
||||
<td>{{ $permohonan->approval_dd_at ? formatTanggalIndonesia($permohonan->approval_dd_at,1) : 'N/A' }}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div>
|
||||
<div>
|
||||
<button onclick="otorisatorData({{ $permohonan->id }})" type="button" class="btn btn-primary">
|
||||
|
||||
Reference in New Issue
Block a user