Merge branch 'staging' into feature/senior-officer
This commit is contained in:
44
app/Http/Controllers/LampiranDokumenController.php
Normal file
44
app/Http/Controllers/LampiranDokumenController.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Modules\Lpj\Models\LampiranDokumen;
|
||||
|
||||
class LampiranDokumenController extends Controller
|
||||
{
|
||||
public function download($id)
|
||||
{
|
||||
$lampiran = LampiranDokumen::findOrFail($id);
|
||||
return Storage::download($lampiran->path_file, $lampiran->nama_file);
|
||||
}
|
||||
|
||||
public function upload(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'permohonan_id' => 'required|exists:permohonan,id',
|
||||
'nama_file' => 'nullable|string|max:255',
|
||||
'file' => 'required|file|max:10240',
|
||||
'keterangan' => 'nullable|string|max:255',
|
||||
]);
|
||||
|
||||
$lampiran = LampiranDokumen::uploadLampiran($request->all());
|
||||
|
||||
if ($lampiran) {
|
||||
return redirect()->back()->with('success', 'Lampiran uploaded successfully');
|
||||
} else {
|
||||
return redirect()->back()->with('error', 'Unauthorized or upload failed');
|
||||
}
|
||||
}
|
||||
|
||||
public function delete(LampiranDokumen $lampiran)
|
||||
{
|
||||
if ($lampiran->deleteLampiran()) {
|
||||
return redirect()->back()->with('success', 'Lampiran deleted successfully');
|
||||
} else {
|
||||
return redirect()->back()->with('error', 'Unauthorized or delete failed');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,6 @@ use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest;
|
||||
use Modules\Lpj\Models\LaporanExternal;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\PersetujuanPenawaran;
|
||||
@@ -236,13 +235,6 @@ class PembayaranController extends Controller
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
|
||||
LaporanExternal::create([
|
||||
'permohonan_id' => $permohonan->id,
|
||||
'nomor_laporan' => $permohonan->nomor_registrasi,
|
||||
'tanggal_laporan' => now(),
|
||||
'created_by' => Auth::id(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Http\Response;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
use Modules\Lpj\Models\LaporanExternal;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\Branch;
|
||||
use Modules\Lpj\Models\Surveyor;
|
||||
@@ -768,6 +769,15 @@ class SurveyorController extends Controller
|
||||
'submitted_at' => now()
|
||||
]);
|
||||
|
||||
LaporanExternal::updateOrCreate(
|
||||
['permohonan_id' => $permohonan->id],
|
||||
[
|
||||
'nomor_laporan' => $permohonan->nomor_registrasi,
|
||||
'tanggal_laporan' => now(),
|
||||
'created_by' => Auth::id(),
|
||||
]
|
||||
);
|
||||
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
|
||||
67
app/Models/LampiranDokumen.php
Normal file
67
app/Models/LampiranDokumen.php
Normal file
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class LampiranDokumen extends Base
|
||||
{
|
||||
protected $table = 'lampiran_dokumen';
|
||||
|
||||
protected $fillable = ['permohonan_id', 'nama_file', 'path_file', 'keterangan'];
|
||||
|
||||
public function permohonan()
|
||||
{
|
||||
return $this->belongsTo(Permohonan::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload lampiran dokumen for penilai or administrator
|
||||
*
|
||||
* @param int $permohonanId
|
||||
* @param array $fileData
|
||||
* @return LampiranDokumen|null
|
||||
*/
|
||||
public static function uploadLampiran($fileData)
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) {
|
||||
$file = $fileData['file'];
|
||||
$keterangan = $fileData['keterangan'] ?? null;
|
||||
|
||||
$fileName = $fileData['nama_file'] ?? time() . '_' . $file->getClientOriginalName();
|
||||
$filePath = $file->storeAs('lampiran_dokumen', $fileName, 'public');
|
||||
|
||||
return self::create([
|
||||
'permohonan_id' => $fileData['permohonan_id'] ?? null,
|
||||
'nama_file' => $fileName,
|
||||
'path_file' => $filePath,
|
||||
'keterangan' => $keterangan,
|
||||
]);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete lampiran dokumen
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function deleteLampiran()
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) {
|
||||
// Delete the file from storage
|
||||
Storage::disk('public')->delete($this->path_file);
|
||||
|
||||
// Delete the database record
|
||||
return $this->delete();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -161,7 +161,8 @@
|
||||
return $this->belongsTo(JenisFasilitasKredit::class);
|
||||
}
|
||||
|
||||
public function jenisPenilaian(){
|
||||
public function jenisPenilaian()
|
||||
{
|
||||
return $this->belongsTo(JenisPenilaian::class);
|
||||
}
|
||||
|
||||
@@ -170,7 +171,8 @@
|
||||
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||
}
|
||||
|
||||
public function penilai(){
|
||||
public function penilai()
|
||||
{
|
||||
return $this->belongsTo(Penilai::class, 'id', 'permohonan_id');
|
||||
}
|
||||
|
||||
@@ -199,27 +201,38 @@
|
||||
return $this->hasMany(DokumenJaminan::class);
|
||||
}
|
||||
|
||||
public function pembatalan(){
|
||||
public function pembatalan()
|
||||
{
|
||||
return $this->hasMany(PermohonanPembatalan::class);
|
||||
}
|
||||
|
||||
public function approveBayar(){
|
||||
public function approveBayar()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'approve_bayar_by', 'id');
|
||||
}
|
||||
|
||||
public function approveEo(){
|
||||
public function approveEo()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'approval_eo', 'id');
|
||||
}
|
||||
|
||||
public function approveDd(){
|
||||
public function approveDd()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'approval_dd', 'id');
|
||||
}
|
||||
|
||||
public function approveSo(){
|
||||
public function approveSo()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'approval_so', 'id');
|
||||
}
|
||||
|
||||
public function authorization(){
|
||||
public function authorization()
|
||||
{
|
||||
return $this->belongsTo(Authorization::class, 'id', 'permohonan_id');
|
||||
}
|
||||
|
||||
public function lampiranDokumen()
|
||||
{
|
||||
return $this->hasMany(LampiranDokumen::class);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user