diff --git a/app/Exports/JenisLaporanExport.php b/app/Exports/JenisLaporanExport.php
new file mode 100644
index 0000000..c647ee6
--- /dev/null
+++ b/app/Exports/JenisLaporanExport.php
@@ -0,0 +1,46 @@
+id,
+ $row->code,
+ $row->name,
+ $row->created_at
+ ];
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'ID',
+ 'Code',
+ 'Name',
+ 'Created At'
+ ];
+ }
+
+ public function columnFormats(): array
+ {
+ return [
+ 'A' => NumberFormat::FORMAT_NUMBER,
+ 'D' => NumberFormat::FORMAT_DATE_DATETIME
+ ];
+ }
+}
diff --git a/app/Exports/KJPPExport.php b/app/Exports/KJPPExport.php
index 86f3473..3b0cb13 100644
--- a/app/Exports/KJPPExport.php
+++ b/app/Exports/KJPPExport.php
@@ -53,7 +53,7 @@ class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection,
'ID',
'Code',
'Name',
- 'Jenis Kantor / Cabang',
+ 'Jenis Kantor',
'Nomor Ijin Usaha',
'Province Code',
'City Code',
diff --git a/app/Exports/PenawaranTenderExport.php b/app/Exports/PenawaranTenderExport.php
new file mode 100644
index 0000000..ba00879
--- /dev/null
+++ b/app/Exports/PenawaranTenderExport.php
@@ -0,0 +1,63 @@
+id,
+ $row->code,
+ $row->nama_kjpp_sebelumnya,
+ $row->biaya_kjpp_sebelumnya,
+ $row->tanggal_penilaian_sebelumnya,
+ $row->nomor_registrasi,
+ $row->tujuan_penilaian_kjpp_id,
+ $row->jenis_laporan_id,
+ $row->start_date,
+ $row->end_date,
+ $row->catatan,
+ $row->created_at
+ ];
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'ID',
+ 'Nomor Penawaran',
+ 'Nama KJPP Sebelumnya',
+ 'Biaya KJPP Sebelumnya',
+ 'Tanggal Penilaian Sebelumnya',
+ 'Nomor Registrasi',
+ 'Tujuan Penilaian KJPP ID',
+ 'Jenis Laporan ID',
+ 'Start Date',
+ 'End Date',
+ 'Catatan',
+ 'Created At'
+ ];
+ }
+
+ public function columnFormats(): array
+ {
+ return [
+ 'A' => NumberFormat::FORMAT_NUMBER,
+ 'B' => NumberFormat::FORMAT_NUMBER,
+ 'E' => NumberFormat::FORMAT_DATE_DATETIME
+ ];
+ }
+}
diff --git a/app/Exports/TujuanPenilaianKJPPExport.php b/app/Exports/TujuanPenilaianKJPPExport.php
new file mode 100644
index 0000000..073db3a
--- /dev/null
+++ b/app/Exports/TujuanPenilaianKJPPExport.php
@@ -0,0 +1,46 @@
+id,
+ $row->code,
+ $row->name,
+ $row->created_at
+ ];
+ }
+
+ public function headings(): array
+ {
+ return [
+ 'ID',
+ 'Code',
+ 'Name',
+ 'Created At'
+ ];
+ }
+
+ public function columnFormats(): array
+ {
+ return [
+ 'A' => NumberFormat::FORMAT_NUMBER,
+ 'D' => NumberFormat::FORMAT_DATE_DATETIME
+ ];
+ }
+}
diff --git a/app/Http/Controllers/AuthorizationController.php b/app/Http/Controllers/AuthorizationController.php
new file mode 100644
index 0000000..5f6d270
--- /dev/null
+++ b/app/Http/Controllers/AuthorizationController.php
@@ -0,0 +1,200 @@
+get());
+ return view('lpj::authorization.index');
+ }
+
+ public function store(BranchRequest $request)
+ {
+ $validate = $request->validated();
+
+ if ($validate) {
+ try {
+ // Save to database
+ Branch::create($validate);
+ return redirect()
+ ->route('basicdata.branch.index')
+ ->with('success', 'Branch created successfully');
+ } catch (Exception $e) {
+ return redirect()
+ ->route('basicdata.branch.create')
+ ->with('error', 'Failed to create branch');
+ }
+ }
+ }
+
+ public function create()
+ {
+ return view('lpj::branch.create');
+ }
+
+ public function edit($id)
+ {
+ $branch = Branch::find($id);
+ return view('lpj::branch.create', compact('branch'));
+ }
+
+ public function update(BranchRequest $request, $id)
+ {
+ $validate = $request->validated();
+
+ if ($validate) {
+ try {
+ // Update in database
+ $branch = Branch::find($id);
+ $branch->update($validate);
+ return redirect()
+ ->route('basicdata.branch.index')
+ ->with('success', 'Branch updated successfully');
+ } catch (Exception $e) {
+ return redirect()
+ ->route('basicdata.branch.edit', $id)
+ ->with('error', 'Failed to update branch');
+ }
+ }
+ }
+
+ public function destroy($id)
+ {
+ try {
+ // Delete from database
+ $branch = Branch::find($id);
+ $branch->delete();
+
+ echo json_encode(['success' => true, 'message' => 'Branch deleted successfully']);
+ } catch (Exception $e) {
+ echo json_encode(['success' => false, 'message' => 'Failed to delete branch']);
+ }
+ }
+
+ public function dataForDatatables(Request $request)
+ {
+ // if (is_null($this->user) || !$this->user->can('branch.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ // }
+
+ // Retrieve data from the database
+ $query = Permohonan::query();
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ // $data = $query->get();
+ $data = $query->select('permohonan.id', 'permohonan.nomor_registrasi'
+ , 'branches.name AS branche_name'
+ , 'debitures.name AS debiture_name'
+ // , 'tujuan_penilaian.name AS debiture_name'
+ , DB::raw("CONCAT(tujuan_penilaian.code,' - ', tujuan_penilaian.name) AS nama_tujuan_penilaian")
+ , 'users.name AS account_officer')
+ ->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
+ ->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
+ ->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id', '=', 'permohonan.tujuan_penilaian_id')
+ ->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
+ ->get();
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ /*
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('code', 'LIKE', "%$search%");
+ $q->orWhere('name', 'LIKE', "%$search%");
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->get();
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ */
+ }
+
+ public function export()
+ {
+ return Excel::download(new BranchExport, 'branch.xlsx');
+ }
+ }
diff --git a/app/Http/Controllers/JenisLaporanController.php b/app/Http/Controllers/JenisLaporanController.php
new file mode 100644
index 0000000..ed93164
--- /dev/null
+++ b/app/Http/Controllers/JenisLaporanController.php
@@ -0,0 +1,174 @@
+validated();
+
+ if ($validate) {
+ try {
+ JenisLaporan::create($validate);
+ return redirect()
+ ->route('basicdata.jenis_laporan.index')
+ ->with('success', 'Jenis Laporan created successfully');
+ } catch (Throwable $e) {
+ return redirect()
+ ->route('basicdata.jenis_laporan.create')
+ ->with('success', 'Failed to create Jenis Laporan: ' . $e);
+ }
+ }
+ }
+
+ /**
+ * Show the specified resource.
+ */
+ public function show($id)
+ {
+ // return view('lpj::show');
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit($id)
+ {
+ $jenisLaporan = JenisLaporan::find($id);
+ return view('lpj::jenis_laporan.create', compact('jenisLaporan'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(JenisLaporanRequest $request, $id)
+ {
+ $validate = $request->validated();
+
+ if ($validate) {
+ try {
+ $jenisLaporan = JenisLaporan::find($id);
+ $jenisLaporan->update($validate);
+ return redirect()
+ ->route('basicdata.jenis_laporan.index')
+ ->with('success', 'Jenis Laporan updated successfully');
+ } catch (Throwable $e) {
+ return redirect()
+ ->route('basicdata.jenis_laporan.edit', $id)
+ ->with('success', 'Failed to update Jenis Laporan: ' . $e);
+ }
+ }
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy($id)
+ {
+ try {
+ // Delete from database
+ $jenisLaporan = JenisLaporan::find($id);
+ $jenisLaporan->delete();
+
+ echo json_encode(['success' => true, 'message' => 'Jenis Laporan deleted successfully']);
+ } catch (Throwable $e) {
+ echo json_encode(['success' => false, 'message' => 'Failed to delete jenis Laporan']);
+ }
+ }
+
+ public function dataForDatatables(Request $request)
+ {
+ if (is_null($this->user) || !$this->user->can('jenis_jaminan.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ }
+
+ // Retrieve data from the database
+ $query = JenisLaporan::query();
+
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('code', 'LIKE', "%$search%");
+ $q->orWhere('name', 'LIKE', "%$search%");
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->get();
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ }
+
+ public function export()
+ {
+ return Excel::download(new JenisLaporanExport, 'jenis_laporan.xlsx');
+ }
+}
diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php
index f1f613b..99a0c2f 100644
--- a/app/Http/Controllers/KJPPController.php
+++ b/app/Http/Controllers/KJPPController.php
@@ -40,7 +40,15 @@ class KJPPController extends Controller
$jenis_aset = JenisJaminan::all();
$provinces = Province::all();
- return view('lpj::kjpp.create', compact('branch', 'ijin_usaha', 'jenis_aset', 'provinces'));
+ // Generate KJPP Number
+ $lastKjpp = KJPP::orderBy('code', 'desc')->first();
+ $nextNumber = $lastKjpp ? intval(substr($lastKjpp->code, 1, 6)) + 1 : 1;
+ $kjppNumber = 'K' . str_pad($nextNumber, 6, '0', STR_PAD_LEFT);
+
+ // Combine KJPP number with branch code
+ $fullKjppNumber = $kjppNumber;
+
+ return view('lpj::kjpp.create', compact('branch', 'ijin_usaha', 'jenis_aset', 'provinces', 'fullKjppNumber'));
}
/**
@@ -62,6 +70,9 @@ class KJPPController extends Controller
Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename);
}
+ $validated['ijin_usaha_id'] = json_encode($request->input('ijin_usaha_id'));
+ $validated['jenis_aset_id'] = json_encode($request->input('jenis_aset_id'));
+
// Tambahkan nama file ke data yang divalidasi
$validated['attachment'] = $filename;
@@ -127,7 +138,10 @@ class KJPPController extends Controller
if ($file !== null) {
// Jika ada file dari database maka hapus file yang lama ke file yang baru
$kjpp = KJPP::find($id);
- // Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
+ // Jika filenya ada default.pdf jangan dihapus
+ if ($kjpp->attachment !== 'default.pdf') {
+ Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
+ }
// Simpan file yang diunggah
$file->storeAs('public/uploads_pdf', $filename);
$validated['attachment'] = $filename;
diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php
new file mode 100644
index 0000000..6884abd
--- /dev/null
+++ b/app/Http/Controllers/RegistrasiController.php
@@ -0,0 +1,271 @@
+user) || !$this->user->can('debitur.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ }
+
+ // Retrieve data from the database
+ $query = Permohonan::query()->where('status','=','preregister');
+
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
+ $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
+ $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
+ $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
+ $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
+ $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
+ $q->orWhere('status', 'LIKE', '%' . $search . '%');
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ }
+
+ public function edit($id)
+ {
+ return view('lpj::registrasi.edit', compact('id'));
+ }
+
+ public function setData(Request $request): JsonResponse
+ {
+ $data = array();
+ $datas = array();
+
+ if (request()->ajax()) {
+ $id = $request->id;
+ $datas = Permohonan::findOrFail($id);
+ $data['status'] = 'success';
+ if ($datas) {
+ $jenisPenilaians=null;
+ $regions=null;
+ $regions=Regions::pluck('name', 'id');
+ $jenisPenilaians=JenisPenilaian::pluck('name', 'id');
+
+ $data['regions'] = $regions;
+ $data['jenisPenilaians'] = $jenisPenilaians;
+ $data['datas'] = $datas;
+ $data['message'] = 'data successfully found';
+ } else {
+ $data['datas'] = null;
+ $data['message'] = 'data not found';
+ }
+ } else {
+ $data['status'] = 'error';
+ $data['message'] = 'no ajax request';
+ }
+
+ return response()->json($data);
+ }
+
+ public function update(Request $request, $id): JsonResponse
+ {
+ // init
+ $data = array();
+ $dataku = array();
+ $tindakan = null;
+ if (request()->ajax()) {
+ $validator = RegistrasiController::rulesEditnya($request, $id);
+
+ if ($validator['fails']) {
+ $data['message'] = $validator['errors'];
+ $data['status'] = 'error';
+ }
+ else
+ {
+ try {
+
+ $tindakan=$request->tindakan;
+ $dataku = ['registrasi_by' => Auth::id(),
+ 'registrasi_at' => now()
+ ];
+
+ if($tindakan==0)
+ {
+ $dataku['jenis_penilaian_id'] =$request->jenis_penilaian;
+ $dataku['region_id'] =$request->region;
+ $dataku['status'] = 'registered';
+ }
+ else
+ {
+ $dataku['registrasi_catatan'] =$request->catatan;
+ $dataku['status'] = 'revisi';
+ }
+
+ $data['dataku'] =$dataku;
+
+ $modal = Permohonan::find($id);
+
+ $modal->update($dataku);
+ //
+ $data['status'] = 'success';
+ $data['message'] = 'Regitrasi '.$modal->nomor_registrasi.' successfully';
+ } catch (Exception $e) {
+
+ $data['status'] = 'error';
+ $data['message'] = 'Jenis Fasilitas Kredit updated failed.';
+ }
+ }
+
+ } else {
+ $data['status'] = 'error';
+ $data['message'] = 'no ajax request';
+ }
+
+ return response()->json($data);
+
+ }
+
+ public function rulesEditnya($request, $id)
+ {
+ $tindakan=null;
+ $jenis_penilaian=null;
+ $validate_catatan='';
+ $tindakan=$request->tindakan;
+ $jenis_penilaian=$request->jenis_penilaian;
+
+ $validateIt = [
+ // 'name' diambil dari definisi parameter yang di kirim pada POST Data
+ 'tindakan' => 'required',
+ ];
+
+ $messageIt = [
+ 'tindakan.required' => 'Silahkan pilih Tindakan'
+ ];
+
+ if($tindakan==0)
+ {
+ $validateIt['jenis_penilaian'] = ['required'];
+ $messageIt ['jenis_penilaian.required']= 'Silahkan pilih Jenis Penilaian';
+
+ // INTERNAL
+ if(1==$jenis_penilaian)
+ {
+ $validateIt['region'] = ['required'];
+ $messageIt ['region.required']= 'Silahkan pilih Region';
+ }
+ }
+ elseif($tindakan==1)
+ {
+ $validateIt['catatan'] = ['required'];
+ $messageIt ['catatan.required']= 'Silahkan isi Catatan';
+ }
+
+ $validator = Validator::make($request->all(), $validateIt, $messageIt);
+
+ $data['fails'] = $validator->fails();
+ $data['errors'] = $validator->errors();
+
+ return $data;
+ }
+
+ public function show($id)
+ {
+ $permohonan = Permohonan::find($id);
+ return view('lpj::registrasi.show', compact('id','permohonan'));
+ }
+
+ public function showData(Request $request): JsonResponse
+ {
+ $data = array();
+ $datas = array();
+
+ if (request()->ajax()) {
+ $id = $request->id;
+ $datas = Permohonan::findOrFail($id);
+ $data['status'] = 'success';
+ if ($datas) {
+ $data['datas'] = $datas;
+ $data['message'] = 'data successfully found';
+ } else {
+ $data['datas'] = null;
+ $data['message'] = 'data not found';
+ }
+ } else {
+ $data['status'] = 'error';
+ $data['message'] = 'no ajax request';
+ }
+
+ return response()->json($data);
+ }
+ }
diff --git a/app/Http/Controllers/TeamsController.php b/app/Http/Controllers/TeamsController.php
index bf0a39b..e360132 100644
--- a/app/Http/Controllers/TeamsController.php
+++ b/app/Http/Controllers/TeamsController.php
@@ -2,18 +2,19 @@
namespace Modules\Lpj\Http\Controllers;
-use App\Http\Controllers\Controller;
-use Illuminate\Http\RedirectResponse;
+use Exception;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
-use Modules\Lpj\Models\Regions;
-use Modules\Usermanagement\Models\User;
use Modules\Lpj\Models\Teams;
-use Modules\Lpj\Models\TeamsUsers;
-use Modules\Lpj\Http\Requests\TeamsRequest;
+use Modules\Lpj\Models\Regions;
use Illuminate\Support\Facades\DB;
-use Modules\Lpj\Exports\TeamPenilaianExport;
+use Modules\Lpj\Models\TeamsUsers;
+use App\Http\Controllers\Controller;
use Maatwebsite\Excel\Facades\Excel;
+use Illuminate\Http\RedirectResponse;
+use Modules\Usermanagement\Models\User;
+use Modules\Lpj\Http\Requests\TeamsRequest;
+use Modules\Lpj\Exports\TeamPenilaianExport;
class TeamsController extends Controller
{
@@ -39,8 +40,8 @@ class TeamsController extends Controller
// cek user apakah sudah ada di tabel teams_users
$userTeam = TeamsUsers::pluck('user_id')->toArray();
$user = User::whereNotIn('id', $userTeam)
- ->with('roles')
- ->get();
+ ->with('roles')
+ ->get();
return view('lpj::teams.form', compact('region', 'user'));
}
@@ -69,15 +70,15 @@ class TeamsController extends Controller
DB::commit();
return redirect()
- ->route('basicdata.teams.index')
- ->with('success', 'Data saved successfully. ');
+ ->route('basicdata.teams.index')
+ ->with('success', 'Data saved successfully. ');
} catch (Exception $e) {
DB::rollBack();
return redirect()
- ->route('basicdata.teams.create')
- ->with('error', 'Failed to save data. ');
+ ->route('basicdata.teams.create')
+ ->with('error', 'Failed to save data. ');
}
}
@@ -100,8 +101,8 @@ class TeamsController extends Controller
$region = Regions::all();
$usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray();
$user = User::whereNotIn('id', $usedUsers)
- ->with('roles')
- ->get();
+ ->with('roles')
+ ->get();
// Ambil user yang sudah ada di tim ini
$selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray();
@@ -136,15 +137,15 @@ class TeamsController extends Controller
DB::commit();
return redirect()
- ->route('basicdata.teams.index')
- ->with('success', 'Data updated successfully. ');
+ ->route('basicdata.teams.index')
+ ->with('success', 'Data updated successfully. ');
} catch (Exception $e) {
DB::rollBack();
return redirect()
- ->route('basicdata.teams.create')
- ->with('error', 'Failed to update data. ');
+ ->route('basicdata.teams.create')
+ ->with('error', 'Failed to update data. ');
}
}
@@ -165,7 +166,6 @@ class TeamsController extends Controller
DB::commit();
echo json_encode(['success' => true, 'message' => 'Team has been deleted successfully']);
-
} catch (Exception $e) {
DB::rollBack();
echo json_encode(['success' => false, 'message' => 'Failed to delete Team']);
@@ -190,8 +190,8 @@ class TeamsController extends Controller
$search = $request->get('search');
$query->where(function ($q) use ($search) {
$q->where('teams.name', 'LIKE', "%$search%")
- ->orWhere('regions.name', 'LIKE', "%$search%")
- ->orWhere('users.name', 'LIKE', "%$search%");
+ ->orWhere('regions.name', 'LIKE', "%$search%")
+ ->orWhere('users.name', 'LIKE', "%$search%");
});
}
@@ -255,6 +255,4 @@ class TeamsController extends Controller
{
return Excel::download(new TeamPenilaianExport(), 'team-penilai.xlsx');
}
-
-
}
diff --git a/app/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php
index d23fd30..6829346 100644
--- a/app/Http/Controllers/TenderController.php
+++ b/app/Http/Controllers/TenderController.php
@@ -2,14 +2,24 @@
namespace Modules\Lpj\Http\Controllers;
-use App\Http\Controllers\Controller;
-use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Lpj\Models\Penawaran;
+use App\Http\Controllers\Controller;
+use Maatwebsite\Excel\Facades\Excel;
+use Modules\Lpj\Models\PenawaranTender;
+use Modules\Lpj\Exports\PenawaranTenderExport;
+use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
+use Modules\Lpj\Models\JenisLaporan;
+use Modules\Lpj\Models\KJPP;
+use Modules\Lpj\Models\Permohonan;
+use Modules\Lpj\Models\StatusPermohonan;
+use Modules\Lpj\Models\TujuanPenilaianKJPP;
class TenderController extends Controller
{
+ public $user;
+
/**
* Display a listing of the resource.
*/
@@ -21,33 +31,44 @@ class TenderController extends Controller
/**
* Show the form for creating a new resource.
*/
- public function penawaran_create()
+ public function penawaran_create($id)
{
- return view('lpj::penawaran/create');
+ $penawaran = PenawaranTender::find($id);
+
+ $status = StatusPermohonan::all();
+ $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
+ $jenis_laporan = JenisLaporan::all();
+ $kjpp = KJPP::all();
+
+ return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'penawaran', 'id'));
}
/**
* Store a newly created resource in storage.
*/
- public function penawaran_store(Request $request): RedirectResponse
+ public function penawaran_store(TenderPenawaranRequest $request, $id)
{
- // $validated = $request->validate([
- // 'nama_kjpp_sebelumnya' => 'required|string',
- // 'biaya_kjpp_sebelumnya' => 'required|numeric',
- // 'tgl_penilaian_sebelumnya' => 'required|date',
- // 'nama_kjpp_1' => 'required|exists:kjpps,id',
- // 'nama_kjpp_2' => 'required|exists:kjpps,id',
- // 'nama_kjpp_3' => 'required|exists:kjpps,id',
- // 'data_jaminan_legalitas' => 'required|string',
- // 'tujuan_penilaian' => 'required|in:Penjaminan Hutang,Lelang,Revaluasi Aset',
- // 'jenis_laporan' => 'required|in:Short report,Full report',
- // 'batas_waktu' => 'required|date',
- // 'catatan' => 'nullable|string'
- // ]);
+ $validated = $request->validated();
- // Penawaran::create($validated);
+ if ($validated) {
+ $penawaran = PenawaranTender::find($id);
- // return redirect()->back()->with('success', 'Data berhasil disimpan!');
+ $validated['nomor_registrasi'] = $penawaran->nomor_registrasi;
+
+ $validated['nama_kjpp_sebelumnya'] = json_encode($request->input('nama_kjpp_sebelumnya'));
+
+ dd($validated);
+
+ PenawaranTender::create($validated);
+
+ return redirect()
+ ->route('tender.penawaran.index')
+ ->with('success', 'Data Penawaran created successfully');
+ } else {
+ return redirect()
+ ->route('tender.penawaran.createPenawaran', $id)
+ ->with('error', 'Validation failed');
+ }
}
/**
@@ -55,7 +76,8 @@ class TenderController extends Controller
*/
public function penawaran_show($id)
{
- return view('lpj::show');
+ $penawaran = PenawaranTender::find($id);
+ return view('lpj::penawaran.show', compact('id', 'penawaran'));
}
/**
@@ -69,7 +91,7 @@ class TenderController extends Controller
/**
* Update the specified resource in storage.
*/
- public function update(Request $request, $id): RedirectResponse
+ public function update(Request $request, $id)
{
//
}
@@ -82,6 +104,73 @@ class TenderController extends Controller
//
}
+ public function datatablesPenawaran(Request $request)
+ {
+ if (is_null($this->user) || !$this->user->can('penawaran.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ }
+
+ // Retrieve data from the database
+ $query = PenawaranTender::query();
+
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('code', 'LIKE', "%$search%");
+ $q->orWhere('nama_kjpp_sebelumnya', 'LIKE', "%$search%");
+ $q->orWhere('tanggal_penilaian_sebelumnya', 'LIKE', "%$search%");
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->get();
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ }
+
+ public function exportPenawaran()
+ {
+ return Excel::download(new PenawaranTenderExport, 'kjpp.xlsx');
+ }
+
public function proses_penawaran_index()
{
return view('lpj::proses_penawaran/index');
diff --git a/app/Http/Controllers/TujuanPenilaianKJPPController.php b/app/Http/Controllers/TujuanPenilaianKJPPController.php
new file mode 100644
index 0000000..1ee7c9c
--- /dev/null
+++ b/app/Http/Controllers/TujuanPenilaianKJPPController.php
@@ -0,0 +1,174 @@
+validated();
+
+ if ($validate) {
+ try {
+ TujuanPenilaianKJPP::create($validate);
+ return redirect()
+ ->route('basicdata.tujuan_penilaian_kjpp.index')
+ ->with('success', 'Tujuan Penilaian KJPP created successfully');
+ } catch (Throwable $e) {
+ return redirect()
+ ->route('basicdata.tujuan_penilaian_kjpp.create')
+ ->with('success', 'Failed to create Tujuan Penilaian KJPP: ' . $e);
+ }
+ }
+ }
+
+ /**
+ * Show the specified resource.
+ */
+ public function show($id)
+ {
+ return view('lpj::show');
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit($id)
+ {
+ $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
+ return view('lpj::tujuan_penilaian_kjpp.create', compact('tujuanPenilaianKJPP'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(JenisPenilaianKJPPRequest $request, $id)
+ {
+ $validate = $request->validated();
+
+ if ($validate) {
+ try {
+ $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
+ $tujuanPenilaianKJPP->update($validate);
+ return redirect()
+ ->route('basicdata.tujuan_penilaian_kjpp.index')
+ ->with('success', 'Tujuan Penilaian KJPP updated successfully');
+ } catch (Throwable $e) {
+ return redirect()
+ ->route('basicdata.tujuan_penilaian_kjpp.edit', $id)
+ ->with('success', 'Failed to update Tujuan Penilaian KJPP: ' . $e);
+ }
+ }
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy($id)
+ {
+ try {
+ // Delete from database
+ $tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
+ $tujuanPenilaianKJPP->delete();
+
+ echo json_encode(['success' => true, 'message' => 'Tujuan Penilaian deleted successfully']);
+ } catch (Throwable $e) {
+ echo json_encode(['success' => false, 'message' => 'Failed to delete deleted']);
+ }
+ }
+
+ public function dataForDatatables(Request $request)
+ {
+ if (is_null($this->user) || !$this->user->can('jenis_jaminan.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ }
+
+ // Retrieve data from the database
+ $query = TujuanPenilaianKJPP::query();
+
+ // Apply search filter if provided
+ if ($request->has('search') && !empty($request->get('search'))) {
+ $search = $request->get('search');
+ $query->where(function ($q) use ($search) {
+ $q->where('code', 'LIKE', "%$search%");
+ $q->orWhere('name', 'LIKE', "%$search%");
+ });
+ }
+
+ // Apply sorting if provided
+ if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
+ $order = $request->get('sortOrder');
+ $column = $request->get('sortField');
+ $query->orderBy($column, $order);
+ }
+
+ // Get the total count of records
+ $totalRecords = $query->count();
+
+ // Apply pagination if provided
+ if ($request->has('page') && $request->has('size')) {
+ $page = $request->get('page');
+ $size = $request->get('size');
+ $offset = ($page - 1) * $size; // Calculate the offset
+
+ $query->skip($offset)->take($size);
+ }
+
+ // Get the filtered count of records
+ $filteredRecords = $query->count();
+
+ // Get the data for the current page
+ $data = $query->get();
+
+ // Calculate the page count
+ $pageCount = ceil($totalRecords / $request->get('size'));
+
+ // Calculate the current page number
+ $currentPage = 0 + 1;
+
+ // Return the response data as a JSON object
+ return response()->json([
+ 'draw' => $request->get('draw'),
+ 'recordsTotal' => $totalRecords,
+ 'recordsFiltered' => $filteredRecords,
+ 'pageCount' => $pageCount,
+ 'page' => $currentPage,
+ 'totalCount' => $totalRecords,
+ 'data' => $data,
+ ]);
+ }
+
+ public function export()
+ {
+ return Excel::download(new TujuanPenilaianKJPPExport, 'jenis_laporan.xlsx');
+ }
+}
diff --git a/app/Http/Requests/JenisLaporanRequest.php b/app/Http/Requests/JenisLaporanRequest.php
new file mode 100644
index 0000000..76babb0
--- /dev/null
+++ b/app/Http/Requests/JenisLaporanRequest.php
@@ -0,0 +1,46 @@
+ 'required|max:5',
+ 'name' => 'required|max:255',
+ ];
+
+ if ($this->method() == 'PUT') {
+ $rules['code'] = 'required|max:5|unique:jenis_laporan,code,' . $this->id;
+ } else {
+ $rules['code'] = 'required|max:5|unique:jenis_laporan,code';
+ }
+
+ return $rules;
+ }
+
+ /**
+ * Determine if the user is authorized to make this request.
+ */
+ public function authorize(): bool
+ {
+ return true;
+ }
+
+ public function messages(): array
+ {
+ return [
+ 'code.required' => 'Kode Jenis Laporan Wajib diisi!',
+ 'code.max' => 'Kode Jenis Laporan maksimum 5 huruf!',
+ 'code.unique' => 'Kode Jenis Laporan tidak boleh sama!',
+ 'name.required' => 'Nama Jenis Laporan Wajib diisi!',
+ 'name.max' => 'Nama Jenis Laporan Wajib diisi!'
+ ];
+ }
+}
diff --git a/app/Http/Requests/JenisPenilaianKJPPRequest.php b/app/Http/Requests/JenisPenilaianKJPPRequest.php
new file mode 100644
index 0000000..851b00c
--- /dev/null
+++ b/app/Http/Requests/JenisPenilaianKJPPRequest.php
@@ -0,0 +1,45 @@
+ 'required|max:5',
+ 'name' => 'required|max:255',
+ ];
+
+ if ($this->method() == 'PUT') {
+ $rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code,' . $this->id;
+ } else {
+ $rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code';
+ }
+
+ return $rules;
+ }
+ /**
+ * Determine if the user is authorized to make this request.
+ */
+ public function authorize(): bool
+ {
+ return true;
+ }
+
+ public function messages(): array
+ {
+ return [
+ 'code.required' => 'Kode Tujuan Penilaian KJPP Wajib diisi!',
+ 'code.max' => 'Kode Tujuan Penilaian KJPP maksimum 5 huruf!',
+ 'code.unique' => 'Kode Tujuan Penilaian KJPP tidak boleh sama!',
+ 'name.required' => 'Nama Tujuan Penilaian KJPP Wajib diisi!',
+ 'name.max' => 'Nama Tujuan Penilaian KJPP Wajib diisi!'
+ ];
+ }
+}
diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php
index 3b5c637..e3e6fe4 100644
--- a/app/Http/Requests/KJPPRequest.php
+++ b/app/Http/Requests/KJPPRequest.php
@@ -32,8 +32,10 @@ class KJPPRequest extends FormRequest
'nomor_hp_pic_admin' => 'required|numeric|digits_between:10,15',
'nama_pic_marketing' => 'required|string|not_regex:/^\d+$/|max:255',
'nomor_hp_pic_marketing' => 'required|numeric|digits_between:10,15',
- 'ijin_usaha_id' => 'nullable',
- 'jenis_aset_id' => 'nullable',
+ 'ijin_usaha_id' => 'required|array',
+ 'ijin_usaha_id.*' => 'exists:ijin_usaha,code',
+ 'jenis_aset_id' => 'required|array',
+ 'jenis_aset_id.*' => 'exists:jenis_jaminan,code',
'attachment' => 'nullable|mimes:pdf|max:1024'
];
@@ -54,14 +56,6 @@ class KJPPRequest extends FormRequest
return true;
}
- public function prepareForValidation(): void
- {
- $this->merge([
- 'ijin_usaha_id' => json_encode($this->ijin_usaha_id),
- 'jenis_aset_id' => json_encode($this->jenis_aset_id)
- ]);
- }
-
public function messages(): array
{
return [
@@ -106,6 +100,10 @@ class KJPPRequest extends FormRequest
'nomor_hp_pic_marketing.required' => 'Nomor HP PIC Marketing Wajib diisi!',
'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!',
'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!',
+ 'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!',
+ 'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!',
+ 'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!',
+ 'jenis_aset_id.min' => 'Jenis Aset Wajib diisi minimal satu atau lebih!',
'attachment.mimes' => 'Attachment harus berformat pdf!',
'attachment.max' => 'Attachment berukuran maksimum 1 MB!',
];
diff --git a/app/Http/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php
new file mode 100644
index 0000000..16ed5bc
--- /dev/null
+++ b/app/Http/Requests/TenderPenawaranRequest.php
@@ -0,0 +1,75 @@
+ 'required|array',
+ 'nama_kjpp_sebelumnya.*' => 'exists:kjpp,name',
+ 'biaya_kjpp_sebelumnya' => 'required|numeric',
+ 'tanggal_penilaian_sebelumnya' => 'required',
+ 'nomor_registrasi' => 'required',
+ 'tujuan_penilaian_kjpp_id' => 'required',
+ 'jenis_laporan_id' => 'required',
+ 'start_date' => 'required',
+ 'end_date' => 'required',
+ 'catatan' => 'nullable',
+ 'status' => 'required'
+ ];
+
+ if ($this->method() == 'PUT') {
+ $rules['code'] = 'required|max:50|unique:penawaran,code,' . $this->id;
+ } else {
+ $rules['code'] = 'required|max:50|unique:penawaran,code';
+ }
+
+ return $rules;
+ }
+
+ /**
+ * Determine if the user is authorized to make this request.
+ */
+ public function authorize(): bool
+ {
+ return true;
+ }
+
+ public function messages(): array
+ {
+ return [
+ 'code.required' => 'Kode Penawaran Wajib diisi!',
+ 'code.max' => 'Kode Penawaran maksimal 255 huruf!',
+ 'code.unique' => 'Kode Penawaran tidak boleh sama!',
+ 'nama_kjpp_sebelumnya.required' => 'Nama KJPP Sebelumnya Wajib diisi!',
+ 'biaya_kjpp_sebelumnya.required' => 'Biaya KJPP Sebelumnya Wajib diisi!',
+ 'biaya_kjpp_sebelumnya.numeric' => 'Biaya KJPP Sebelumnya harus berupa angka!',
+ 'tanggal_penilaian_sebelumnya.required' => 'Tanggal Penilaian Sebelumnya Wajib diisi!',
+ 'nomor_registrasi.required' => 'Nomor Registrasi Wajib diisi!',
+ 'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
+ 'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
+ 'start_date.required' => 'Tanggal Awal Wajib diisi!',
+ 'end_date.required' => 'Tanggal Akhir Wajib diisi!',
+ 'status.required' => 'Status Wajib diisi!'
+ ];
+ }
+
+ public function withValidator($validator)
+ {
+ $validator->after(function ($validator) {
+ $startDate = strtotime($this->input('start_date'));
+ $endDate = strtotime($this->input('end_date'));
+
+ if ($endDate < $startDate) {
+ $validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
+ }
+ });
+ }
+}
diff --git a/app/Models/JenisLaporan.php b/app/Models/JenisLaporan.php
new file mode 100644
index 0000000..13e248e
--- /dev/null
+++ b/app/Models/JenisLaporan.php
@@ -0,0 +1,22 @@
+belongsTo(User::class);
}
- public function branch(){
+ public function branch()
+ {
return $this->belongsTo(Branch::class);
}
- public function tujuanPenilaian(){
+ public function tujuanPenilaian()
+ {
return $this->belongsTo(TujuanPenilaian::class);
}
- public function debiture(){
+ public function debiture()
+ {
return $this->belongsTo(Debiture::class);
}
- public function documents(){
+ public function documents()
+ {
return $this->hasMany(DokumenJaminan::class);
}
- public function nilaiPlafond(){
+ public function nilaiPlafond()
+ {
return $this->belongsTo(NilaiPlafond::class);
}
- public function jenisFasilitasKredit(){
+ public function jenisFasilitasKredit()
+ {
return $this->belongsTo(JenisFasilitasKredit::class);
}
- public function penilaian(){
+ public function penilaian()
+ {
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
}
}
diff --git a/app/Models/PermohonanJaminan.php b/app/Models/PermohonanJaminan.php
new file mode 100644
index 0000000..86e4b3f
--- /dev/null
+++ b/app/Models/PermohonanJaminan.php
@@ -0,0 +1,23 @@
+id();
+ $table->string('code')->unique()->index();
+ $table->string('name');
+ $table->boolean('status')->default(true)->nullable();
+ $table->char('authorized_status', 1)->nullable();
+ $table->timestamp('authorized_at')->nullable();
+ $table->unsignedBigInteger('authorized_by')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->unsignedBigInteger('deleted_by')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('tujuan_penilaian_kjpp');
+ }
+};
diff --git a/database/migrations/2024_09_26_041326_create_jenis_laporan_table.php b/database/migrations/2024_09_26_041326_create_jenis_laporan_table.php
new file mode 100644
index 0000000..f47da7a
--- /dev/null
+++ b/database/migrations/2024_09_26_041326_create_jenis_laporan_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->string('code')->unique()->index();
+ $table->string('name');
+ $table->boolean('status')->default(true)->nullable();
+ $table->char('authorized_status', 1)->nullable();
+ $table->timestamp('authorized_at')->nullable();
+ $table->unsignedBigInteger('authorized_by')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->unsignedBigInteger('deleted_by')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('jenis_laporan');
+ }
+};
diff --git a/database/migrations/2024_09_26_043440_create_penawaran_table.php b/database/migrations/2024_09_26_043440_create_penawaran_table.php
new file mode 100644
index 0000000..403faaf
--- /dev/null
+++ b/database/migrations/2024_09_26_043440_create_penawaran_table.php
@@ -0,0 +1,44 @@
+id();
+ $table->string('code');
+ $table->string('nama_kjpp_sebelumnya');
+ $table->string('biaya_kjpp_sebelumnya');
+ $table->datetime('tanggal_penilaian_sebelumnya');
+ $table->string('nomor_registrasi');
+ $table->foreignId('tujuan_penilaian_kjpp_id')->constrained('tujuan_penilaian_kjpp');
+ $table->foreignId('jenis_laporan_id')->constrained('jenis_laporan');
+ $table->date('start_date');
+ $table->date('end_date');
+ $table->text('catatan');
+ $table->boolean('status')->default(true)->nullable();
+ $table->char('authorized_status', 1)->nullable();
+ $table->timestamp('authorized_at')->nullable();
+ $table->unsignedBigInteger('authorized_by')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->unsignedBigInteger('deleted_by')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('penawaran');
+ }
+};
diff --git a/database/migrations/2024_09_26_043449_create_persetujuan_penawaran_table.php b/database/migrations/2024_09_26_043449_create_persetujuan_penawaran_table.php
new file mode 100644
index 0000000..025fb96
--- /dev/null
+++ b/database/migrations/2024_09_26_043449_create_persetujuan_penawaran_table.php
@@ -0,0 +1,43 @@
+id();
+ $table->foreignId('penawaran_id')->constrained('penawaran');
+ $table->string('nomor_proposal_penawaran');
+ $table->date('tanggal_proposal_penawaran');
+ $table->string('biaya_final');
+ $table->datetime('sls_resume');
+ $table->datetime('sla_final');
+ $table->string('catatan');
+ $table->string('attachment');
+ $table->foreignId('region_id')->constrained('regions');
+ $table->boolean('status')->default(true)->nullable();
+ $table->char('authorized_status', 1)->nullable();
+ $table->timestamp('authorized_at')->nullable();
+ $table->unsignedBigInteger('authorized_by')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->unsignedBigInteger('deleted_by')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('persetujuan_penawaran');
+ }
+};
diff --git a/database/migrations/2024_09_26_043525_create_detail_penawaran_table.php b/database/migrations/2024_09_26_043525_create_detail_penawaran_table.php
new file mode 100644
index 0000000..6a185db
--- /dev/null
+++ b/database/migrations/2024_09_26_043525_create_detail_penawaran_table.php
@@ -0,0 +1,39 @@
+id();
+ $table->foreignId('kjpp_rekanan_id')->constrained('kjpp');
+ $table->foreignId('penawaran_id')->constrained('penawaran');
+ $table->string('biaya_penawaran');
+ $table->string('attachment');
+ $table->string('dokumen_persetujuan');
+ $table->boolean('status')->default(true)->nullable();
+ $table->char('authorized_status', 1)->nullable();
+ $table->timestamp('authorized_at')->nullable();
+ $table->unsignedBigInteger('authorized_by')->nullable();
+ $table->timestamps();
+ $table->softDeletes();
+
+ $table->unsignedBigInteger('deleted_by')->nullable();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('detail_penawaran');
+ }
+};
diff --git a/database/migrations/2024_09_30_021444_update_kjpp_table.php b/database/migrations/2024_09_30_021444_update_kjpp_table.php
new file mode 100644
index 0000000..1ffb5a1
--- /dev/null
+++ b/database/migrations/2024_09_30_021444_update_kjpp_table.php
@@ -0,0 +1,30 @@
+string('ijin_usaha_id')->change();
+ $table->string('jenis_aset_id')->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('kjpp', function (Blueprint $table) {
+ $table->string('ijin_usaha_id')->nullable()->change();
+ $table->string('jenis_aset_id')->nullable()->change();
+ });
+ }
+};
diff --git a/database/migrations/2024_10_01_070143_update_penawaran_table.php b/database/migrations/2024_10_01_070143_update_penawaran_table.php
new file mode 100644
index 0000000..dc5cd40
--- /dev/null
+++ b/database/migrations/2024_10_01_070143_update_penawaran_table.php
@@ -0,0 +1,28 @@
+char('status')->change();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('penawaran', function (Blueprint $table) {
+ $table->boolean('status')->default(true)->nullable();
+ });
+ }
+};
diff --git a/database/migrations/2024_10_01_095350_update_permohonan_table.php b/database/migrations/2024_10_01_095350_update_permohonan_table.php
new file mode 100644
index 0000000..98794df
--- /dev/null
+++ b/database/migrations/2024_10_01_095350_update_permohonan_table.php
@@ -0,0 +1,32 @@
+text('registrasi_catatan')->nullable()->comment('kebutuhan untuk feature Registrasi');
+ $table->unsignedBigInteger('registrasi_by')->nullable()->after('registrasi_catatan')->comment('kebutuhan untuk feature Registrasi');
+ $table->timestamp('registrasi_at')->nullable()->after('registrasi_by')->comment('kebutuhan untuk feature Registrasi');
+ $table->unsignedBigInteger('jenis_penilaian_id')->nullable()->after('registrasi_at')->comment('kebutuhan untuk feature Registrasi');
+ $table->unsignedBigInteger('region_id')->nullable()->after('jenis_penilaian_id')->comment('kebutuhan untuk feature Registrasi');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('permohonan', function (Blueprint $table) {
+
+ });
+ }
+};
diff --git a/module.json b/module.json
index 1c7fd40..47e9b8e 100644
--- a/module.json
+++ b/module.json
@@ -1,305 +1,343 @@
{
- "name": "Lpj",
- "alias": "lpj",
- "database": "",
- "description": "",
- "keywords": [],
- "priority": 0,
- "providers": [
- "Modules\\Lpj\\Providers\\LpjServiceProvider"
+ "name": "Lpj",
+ "alias": "lpj",
+ "database": "",
+ "description": "",
+ "keywords": [],
+ "priority": 0,
+ "providers": [
+ "Modules\\Lpj\\Providers\\LpjServiceProvider"
+ ],
+ "files": [],
+ "menu": {
+ "main": [
+ {
+ "title": "Permohonan",
+ "path": "permohonan",
+ "icon": "ki-filled ki-questionnaire-tablet text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Registrasi",
+ "path": "registrasi",
+ "icon": "ki-filled ki-file-added text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ },
+ {
+ "title": "Tender",
+ "path": "tender",
+ "icon": "ki-filled ki-category text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ],
+ "sub": [
+ {
+ "title": "Data Penawaran",
+ "path": "tender.penawaran",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ },
+ {
+ "title": "Data Proses Penawaran",
+ "path": "tender.proses_penawaran",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ },
+ {
+ "title": "Data Penawaran Ulang",
+ "path": "tender.penawaran_ulang",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ }
+ ]
+ },
+ {
+ "title": "Pembatalan",
+ "path": "",
+ "icon": "ki-filled ki-file-deleted text-lg text-danger",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Data Debitur",
+ "path": "debitur",
+ "icon": "ki-filled ki-people text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Authorization",
+ "path": "authorization",
+ "icon": "ki-filled ki-security-user text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Assignment",
+ "path": "penilaian",
+ "icon": "ki-filled ki-badge text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator"
+ ]
+ },
+ {
+ "title": "Activity",
+ "path": "activity",
+ "icon": "ki-filled ki-calendar-edit text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo","admin"
+ ]
+ },
+ {
+ "title": "Laporan",
+ "path": "",
+ "icon": "ki-filled ki-filter-tablet text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo","admin"
+ ]
+ }
],
- "files": [],
- "menu": {
- "main": [
- {
- "title": "Permohonan",
- "path": "permohonan",
- "icon": "ki-filled ki-questionnaire-tablet text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
- {
- "title": "Tender",
- "path": "tender",
- "icon": "ki-filled ki-category text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ],
- "sub": [
- {
- "title": "Data Penawaran",
- "path": "tender.penawaran",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Data Proses Penawaran",
- "path": "tender.proses_penawaran",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Data Penawaran Ulang",
- "path": "tender.penawaran_ulang",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- }
- ]
- },
- {
- "title": "Pembatalan",
- "path": "",
- "icon": "ki-filled ki-file-deleted text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
- {
- "title": "Data Debitur",
- "path": "debitur",
- "icon": "ki-filled ki-people text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
- {
- "title": "Authorization",
- "path": "authorization",
- "icon": "ki-filled ki-some-files text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
- {
- "title": "Assignment",
- "path": "penilaian",
- "icon": "ki-filled ki-badge",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "senior officer"
- ]
- },
- {
- "title": "Activity",
- "path": "activity",
- "icon": "ki-filled ki-questionnaire-tablet text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
- {
- "title": "Team Activity",
- "path": "activity.progres",
- "icon": "ki-filled ki-questionnaire-tablet text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "senior officer"
- ]
- },
- {
- "title": "Surveyor",
- "path": "surveyor",
- "icon": "ki-filled ki-notepad-edit text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- },
-
- {
- "title": "Laporan",
- "path": "",
- "icon": "ki-filled ki-some-files text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ]
- }
+ "master": [
+ {
+ "title": "Basic Data",
+ "path": "basicdata",
+ "icon": "ki-filled ki-category text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo","admin"
],
- "master": [
- {
- "title": "Basic Data",
- "path": "basicdata",
- "icon": "ki-filled ki-category text-lg",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": [
- "Administrator"
- ],
- "sub": [
- {
- "title": "Cabang",
- "path": "basicdata.branch",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Mata Uang",
- "path": "basicdata.currency",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Jenis Fasilitas Kredit",
- "path": "basicdata.jenis-fasilitas-kredit",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Jenis Legalitas Jaminan",
- "path": "basicdata.jenis-legalitas-jaminan",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Jenis Aset",
- "path": "basicdata.jenis-jaminan",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Jenis Dokumen",
- "path": "basicdata.jenis-dokumen",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Tujuan Penilaian",
- "path": "basicdata.tujuan-penilaian",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Nilai Plafond",
- "path": "basicdata.nilai-plafond",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Hubungan Pemilik Jaminan",
- "path": "basicdata.hubungan-pemilik-jaminan",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Hubungan Penghuni Jaminan",
- "path": "basicdata.hubungan-penghuni-jaminan",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Arah Mata Angin",
- "path": "basicdata.arah-mata-angin",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Status Permohonan",
- "path": "basicdata.status-permohonan",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Region",
- "path": "basicdata.region",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Staff Appraisal",
- "path": "basicdata.teams",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Jenis Penilaian",
- "path": "basicdata.jenis-penilaian",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "KJPP",
- "path": "basicdata.kjpp",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- },
- {
- "title": "Ijin Usaha",
- "path": "basicdata.ijin_usaha",
- "classes": "",
- "attributes": [],
- "permission": "",
- "roles": []
- }
- ]
- }
- ],
- "system": []
- }
+ "sub": [
+ {
+ "title": "Cabang",
+ "path": "basicdata.branch",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Mata Uang",
+ "path": "basicdata.currency",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Jenis Fasilitas Kredit",
+ "path": "basicdata.jenis-fasilitas-kredit",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Jenis Legalitas Jaminan",
+ "path": "basicdata.jenis-legalitas-jaminan",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Jenis Aset",
+ "path": "basicdata.jenis-jaminan",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Jenis Dokumen",
+ "path": "basicdata.jenis-dokumen",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Tujuan Penilaian",
+ "path": "basicdata.tujuan-penilaian",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Nilai Plafond",
+ "path": "basicdata.nilai-plafond",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Hubungan Pemilik Jaminan",
+ "path": "basicdata.hubungan-pemilik-jaminan",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Hubungan Penghuni Jaminan",
+ "path": "basicdata.hubungan-penghuni-jaminan",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","pemohon-ao","pemohon-eo"
+ ]
+ },
+ {
+ "title": "Arah Mata Angin",
+ "path": "basicdata.arah-mata-angin",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator"
+ ]
+ },
+ {
+ "title": "Status Permohonan",
+ "path": "basicdata.status-permohonan",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator"
+ ]
+ },
+ {
+ "title": "Region",
+ "path": "basicdata.region",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin","so"
+ ]
+ },
+ {
+ "title": "Staff Appraisal",
+ "path": "basicdata.teams",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","so"
+ ]
+ },
+ {
+ "title": "Jenis Penilaian",
+ "path": "basicdata.jenis-penilaian",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin","so"
+ ]
+ },
+ {
+ "title": "KJPP",
+ "path": "basicdata.kjpp",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ },
+ {
+ "title": "Tujuan Penilaian KJPP",
+ "path": "basicdata.tujuan_penilaian_kjpp",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ },
+ {
+ "title": "Ijin Usaha",
+ "path": "basicdata.ijin_usaha",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": [
+ "administrator","admin"
+ ]
+ }
+ ]
+ }
+ ],
+ "system": []
+ }
}
diff --git a/resources/views/authorization/index.blade.php b/resources/views/authorization/index.blade.php
new file mode 100644
index 0000000..320d9bb
--- /dev/null
+++ b/resources/views/authorization/index.blade.php
@@ -0,0 +1,138 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('authorization') }}
+@endsection
+
+@section('content')
+
+@endsection
+
+@push('scripts')
+
+
+@endpush
+
diff --git a/resources/views/jenis_laporan/create.blade.php b/resources/views/jenis_laporan/create.blade.php
new file mode 100644
index 0000000..64d0bb4
--- /dev/null
+++ b/resources/views/jenis_laporan/create.blade.php
@@ -0,0 +1,77 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render(request()->route()->getName()) }}
+@endsection
+
+@section('content')
+
+ @if (isset($jenisLaporan->id))
+
+
+@endsection
diff --git a/resources/views/jenis_laporan/index.blade.php b/resources/views/jenis_laporan/index.blade.php
new file mode 100644
index 0000000..fb1f6b8
--- /dev/null
+++ b/resources/views/jenis_laporan/index.blade.php
@@ -0,0 +1,153 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('basicdata.jenis_laporan') }}
+@endsection
+
+@section('content')
+
+@endsection
+
+@push('scripts')
+
+
+
+@endpush
diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php
index 977fe3f..c03ab45 100644
--- a/resources/views/kjpp/create.blade.php
+++ b/resources/views/kjpp/create.blade.php
@@ -32,7 +32,7 @@
+ value="{{ isset($kjpp->id) ? $kjpp->code : (empty($kjpp->id) ? $fullKjppNumber : old('code')) }}">
@error('code')
{{ $message }}
@enderror
@@ -49,11 +49,11 @@
-
+
-
-