From 87a466385e966470de052769947d1b27aa118983 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Wed, 25 Sep 2024 17:14:48 +0700 Subject: [PATCH 01/14] Menyelesaikan Menu KJPP --- app/Exports/KJPPExport.php | 44 +++++- app/Http/Controllers/KJPPController.php | 103 +++++++++++-- app/Http/Requests/KJPPRequest.php | 13 +- app/Models/Branch.php | 5 - app/Models/IjinUsaha.php | 6 - app/Models/JenisJaminan.php | 6 - app/Models/KJPP.php | 20 +-- resources/views/kjpp/create.blade.php | 23 ++- resources/views/kjpp/index.blade.php | 2 +- resources/views/kjpp/show.blade.php | 195 ++++++++++++++++++++++++ routes/breadcrumbs.php | 9 ++ routes/web.php | 4 + 12 files changed, 360 insertions(+), 70 deletions(-) create mode 100644 resources/views/kjpp/show.blade.php diff --git a/app/Exports/KJPPExport.php b/app/Exports/KJPPExport.php index f8026c0..86f3473 100644 --- a/app/Exports/KJPPExport.php +++ b/app/Exports/KJPPExport.php @@ -6,14 +6,14 @@ use Maatwebsite\Excel\Concerns\FromCollection; use Maatwebsite\Excel\Concerns\WithColumnFormatting; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithMapping; -use Modules\Lpj\Models\IjinUsaha; +use Modules\Lpj\Models\KJPP; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping { public function collection() { - return IjinUsaha::all(); + return KJPP::all(); } public function map($row): array @@ -23,6 +23,26 @@ class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, $row->code, $row->name, $row->jenis_kantor, + $row->nomor_ijin_usaha, + $row->province_code, + $row->city_code, + $row->district_code, + $row->village_code, + $row->address, + $row->postal_code, + $row->nomor_telepon_kantor, + $row->email_kantor, + $row->nama_pimpinan, + $row->nomor_hp_pimpinan, + $row->nama_pic_reviewer, + $row->nomor_hp_pic_reviewer, + $row->nama_pic_admin, + $row->nomor_hp_pic_admin, + $row->nama_pic_marketing, + $row->nomor_hp_pic_marketing, + $row->ijin_usaha_id, + $row->jenis_aset_id, + $row->attachment, $row->created_at ]; } @@ -34,6 +54,26 @@ class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, 'Code', 'Name', 'Jenis Kantor / Cabang', + 'Nomor Ijin Usaha', + 'Province Code', + 'City Code', + 'District Code', + 'Village Code', + 'Address', + 'Postal Code', + 'Nomor Telepon Kantor', + 'Email Kantor', + 'Nama Pimpinan', + 'Nomor HP Pimpinan', + 'Nama PIC Reviewer', + 'Nomor HP PIC Reviewer', + 'Nama PIC Admin', + 'Nomor HP PIC Admin', + 'Nama PIC Marketing', + 'Nomor HP PIC Marketing', + 'Ijin Usaha ID', + 'Jenis Aset ID', + 'Attachment', 'Created At' ]; } diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 8be9d4d..f1f613b 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -2,15 +2,19 @@ namespace Modules\Lpj\Http\Controllers; +use Throwable; use Illuminate\Http\Request; use Modules\Lpj\Models\KJPP; use Illuminate\Http\Response; use Modules\Lpj\Models\Branch; +use Modules\Location\Models\City; use Modules\Lpj\Models\IjinUsaha; use Modules\Lpj\Exports\KJPPExport; use App\Http\Controllers\Controller; use Maatwebsite\Excel\Facades\Excel; +use Modules\Location\Models\Village; use Modules\Lpj\Models\JenisJaminan; +use Modules\Location\Models\District; use Modules\Location\Models\Province; use Illuminate\Support\Facades\Storage; use Modules\Lpj\Http\Requests\KJPPRequest; @@ -44,24 +48,33 @@ class KJPPController extends Controller */ public function store(KJPPRequest $request) { - $validate = $request->validated(); + $validated = $request->validated(); - - if ($validate) { + if ($validated) { $file = $request->file('attachment'); $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : 'default.pdf'; if ($file) { - $file->storeAs('uploads_pdf', $filename, 'public'); + // Simpan file yang diunggah + $file->storeAs('public/uploads_pdf', $filename); } else { - Storage::copy('/home/bagi/Downloads/default.pdf', 'public/uploads_pdf/' . $filename); + // Salin file default ke lokasi yang diinginkan + Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename); } - dd($validate); - KJPP::create($validate); + // Tambahkan nama file ke data yang divalidasi + $validated['attachment'] = $filename; + + // Simpan data ke database + KJPP::create($validated); + return redirect() ->route('basicdata.kjpp.index') - ->with('success', 'Ijin Usaha created successfully'); + ->with('success', 'KJPP created successfully'); + } else { + return redirect() + ->route('basicdata.kjpp.create') + ->with('error', 'Validation failed'); } } @@ -70,7 +83,17 @@ class KJPPController extends Controller */ public function show($id) { - return view('lpj::show'); + $kjpp = KJPP::find($id); + $ijin_usaha = IjinUsaha::where('code', $kjpp->nomor_ijin_usaha)->get(); + $ijin_usahas = IjinUsaha::all(); + $jenis_jaminan = JenisJaminan::all(); + $branches = Branch::where('name', $kjpp->jenis_kantor)->get(); + $provinces = Province::where('code', $kjpp->province_code)->get(); + $cities = City::where('code', $kjpp->city_code)->get(); + $districts = District::where('code', $kjpp->district_code)->get(); + $villages = Village::where('code', $kjpp->village_code)->get(); + // dd($branches); + return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'branches', 'kjpp', 'provinces', 'cities', 'districts', 'villages')); } /** @@ -78,15 +101,53 @@ class KJPPController extends Controller */ public function edit($id) { - return view('lpj::edit'); + $kjpp = KJPP::find($id); + $branch = Branch::all(); + $ijin_usaha = IjinUsaha::all(); + $jenis_aset = JenisJaminan::all(); + $provinces = Province::all(); + $cities = City::where('province_code', $kjpp->province_code)->get(); + $districts = District::where('city_code', $kjpp->city_code)->get(); + $villages = Village::where('district_code', $kjpp->district_code)->get(); + + return view('lpj::kjpp.create', compact('kjpp', 'branch', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages')); } /** * Update the specified resource in storage. */ - public function update(KJPP $request, $id) + public function update(KJPPRequest $request, $id) { - // + $validated = $request->validated(); + + if ($validated) { + $file = $request->file('attachment'); + $filename = $file ? time() . '.' . $file->getClientOriginalExtension() : null; + + 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); + // Simpan file yang diunggah + $file->storeAs('public/uploads_pdf', $filename); + $validated['attachment'] = $filename; + } else { + // Jika tidak ada file yang diunggah, gunakan file yang sudah ada atau file default + $kjpp = KJPP::find($id); + $validated['attachment'] = $kjpp->attachment ?? 'default.pdf'; + } + + // Perbarui data di database + KJPP::where('id', $id)->update($validated); + + return redirect() + ->route('basicdata.kjpp.index') + ->with('success', 'KJPP updated successfully'); + } else { + return redirect() + ->route('basicdata.kjpp.edit', $id) + ->with('error', 'Validation failed'); + } } /** @@ -94,7 +155,21 @@ class KJPPController extends Controller */ public function destroy($id) { - // + try { + $kjpp = KJPP::find($id); + + // Jangan hapus file default.pdf + if ($kjpp->attachment && $kjpp->attachment !== 'default.pdf') { + Storage::delete('public/uploads_pdf/' . $kjpp->attachment); + } + + // Hapus data dari database + $kjpp->delete(); + + echo json_encode(['success' => true, 'message' => 'KJPP deleted successfully']); + } catch (Throwable $e) { + echo json_encode(['success' => false, 'message' => 'Failed to delete branch: ' . $e]); + } } public function dataForDatatables(Request $request) @@ -161,6 +236,6 @@ class KJPPController extends Controller public function export() { - return Excel::download(new KJPPExport, 'currency.xlsx'); + return Excel::download(new KJPPExport, 'kjpp.xlsx'); } } diff --git a/app/Http/Requests/KJPPRequest.php b/app/Http/Requests/KJPPRequest.php index b5f4622..3b5c637 100644 --- a/app/Http/Requests/KJPPRequest.php +++ b/app/Http/Requests/KJPPRequest.php @@ -32,8 +32,8 @@ 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.*' => 'nullable', - 'jenis_jaminan.*' => 'nullable', + 'ijin_usaha_id' => 'nullable', + 'jenis_aset_id' => 'nullable', 'attachment' => 'nullable|mimes:pdf|max:1024' ]; @@ -56,15 +56,6 @@ class KJPPRequest extends FormRequest public function prepareForValidation(): void { - if ($this->method() == 'POST') { - $this->merge([ - 'code' => IdGenerator::generate( - ['table' => 'ijin_usaha', 'length' => 5, 'prefix' => 'IU', 'field' => 'code'], - ['table' => 'jenis_jaminan', 'length' => 5, 'prefix' => 'JJ', 'field' => 'code'], - ) - ]); - } - $this->merge([ 'ijin_usaha_id' => json_encode($this->ijin_usaha_id), 'jenis_aset_id' => json_encode($this->jenis_aset_id) diff --git a/app/Models/Branch.php b/app/Models/Branch.php index 4ca5bd9..834b5cc 100644 --- a/app/Models/Branch.php +++ b/app/Models/Branch.php @@ -13,9 +13,4 @@ class Branch extends Base { return $this->hasMany(Debiture::class, 'branch_id', 'id'); } - - public function kjpp() - { - return $this->belongsTo(KJPP::class); - } } diff --git a/app/Models/IjinUsaha.php b/app/Models/IjinUsaha.php index 522a183..e2e464a 100644 --- a/app/Models/IjinUsaha.php +++ b/app/Models/IjinUsaha.php @@ -15,10 +15,4 @@ class IjinUsaha extends Model * The attributes that are mass assignable. */ protected $fillable = ['code', 'name']; - - // relasi ke kjpp - public function kjpp() - { - return $this->belongsTo(KJPP::class); - } } diff --git a/app/Models/JenisJaminan.php b/app/Models/JenisJaminan.php index a630686..e8f4e17 100644 --- a/app/Models/JenisJaminan.php +++ b/app/Models/JenisJaminan.php @@ -6,10 +6,4 @@ class JenisJaminan extends Base { protected $table = 'jenis_jaminan'; protected $fillable = ['code', 'name', 'slug', 'jenis_legalitas_jaminan_id']; - - // relasi ke kjpp - public function kjpp() - { - return $this->belongsTo(KJPP::class); - } } diff --git a/app/Models/KJPP.php b/app/Models/KJPP.php index e535941..426d940 100644 --- a/app/Models/KJPP.php +++ b/app/Models/KJPP.php @@ -4,6 +4,8 @@ namespace Modules\Lpj\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Modules\Location\Models\Province; + // use Modules\Lpj\Database\Factories\KJPPFactory; class KJPP extends Model @@ -41,22 +43,4 @@ class KJPP extends Model 'jenis_aset_id', 'attachment' ]; - - // relasi ke branch - public function branch() - { - return $this->hasOne(Branch::class, 'jenis_kantor'); - } - - // relasi ke jenis aset - public function jenis_aset() - { - return $this->hasMany(JenisJaminan::class, 'jenis_aset_id'); - } - - // relasi ke ijin usaha - public function ijin_usaha() - { - return $this->hasMany(IjinUsaha::class, 'ijin_usaha_id'); - } } diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 78db2c2..977fe3f 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -58,7 +58,7 @@ @if (isset($kjpp)) @foreach ($branch as $branches) @endforeach @@ -85,7 +85,7 @@ @if (isset($kjpp)) @foreach ($ijin_usaha as $branches) @endforeach @@ -351,11 +351,11 @@ @if (isset($kjpp->ijin_usaha_id)) code, old('ijin_usaha_id', json_decode($kjpp->ijin_usaha_id, true)))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="ijin_usaha[]" /> + value="{{ $row->code }}" name="ijin_usaha_id[]" /> @else code, old('ijin_usaha_id', []))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="ijin_usaha[]" /> + value="{{ $row->code }}" name="ijin_usaha_id[]" /> @endif {{ $row->name }} @@ -366,7 +366,7 @@
@foreach ($jenis_aset as $row) @@ -374,11 +374,11 @@ @if (isset($kjpp->jenis_aset_id)) code, old('jenis_aset_id', json_decode($kjpp->jenis_aset_id, true)))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="jenis_jaminan[]" /> + value="{{ $row->code }}" name="jenis_aset_id[]" /> @else code, old('jenis_aset_id', []))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="jenis_jaminan[]" /> + value="{{ $row->code }}" name="jenis_aset_id[]" /> @endif {{ $row->name }} @@ -392,6 +392,15 @@ Attachment
+ @if (isset($kjpp) && $kjpp->attachment) + + @endif @error('attachment') diff --git a/resources/views/kjpp/index.blade.php b/resources/views/kjpp/index.blade.php index 40cf230..20777a5 100644 --- a/resources/views/kjpp/index.blade.php +++ b/resources/views/kjpp/index.blade.php @@ -136,7 +136,7 @@ title: 'Action', render: (item, data) => { return `
- + diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php new file mode 100644 index 0000000..14e9ae3 --- /dev/null +++ b/resources/views/kjpp/show.blade.php @@ -0,0 +1,195 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+ +
+
+ +
+

{{ $kjpp->code }}

+
+ +
+

{{ $kjpp->name }}

+
+
+
+ +
+

+ @foreach ($branches as $branch) + {{ $branch->name }} + @endforeach +

+
+ +
+

+ @foreach ($ijin_usaha as $iu) + {{ $iu->code }} + @endforeach +

+
+
+
+ +
+

{{ $kjpp->address }} , Kel. + @foreach ($villages as $village) + {{ $village->name }} + @endforeach , Kec. + @foreach ($districts as $district) + {{ $district->name }} + @endforeach , + @foreach ($cities as $city) + {{ $city->name }} + @endforeach , + @foreach ($provinces as $province) + {{ $province->name }} + @endforeach, Kode Pos. + @foreach ($villages as $village) + {{ $village->postal_code }} + @endforeach +

+
+
+
+ +
+

{{ $kjpp->nomor_telepon_kantor }}

+
+ +
+

{{ $kjpp->email_kantor }}

+
+
+
+ +
+

{{ $kjpp->nama_pimpinan }}

+
+ +
+

{{ $kjpp->nomor_hp_pimpinan }}

+
+
+
+ +
+

{{ $kjpp->nama_pic_reviewer }}

+
+ +
+

{{ $kjpp->nomor_hp_pic_reviewer }}

+
+
+
+ +
+

{{ $kjpp->nama_pic_admin }}

+
+ +
+

{{ $kjpp->nomor_hp_pic_admin }}

+
+
+
+ +
+

{{ $kjpp->nama_pic_marketing }}

+
+ +
+

{{ $kjpp->nomor_hp_pic_marketing }}

+
+
+
+ +
+ @foreach ($ijin_usahas as $row) + + @endforeach +
+
+
+ +
+ @foreach ($jenis_jaminan as $row) + + @endforeach +
+
+
+ + +
+
+
+
+@endsection diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 04ee52d..b015089 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -188,6 +188,7 @@ Breadcrumbs::for('basicdata.status-permohonan.edit', function (BreadcrumbTrail $ $trail->push('Edit Status Permohonan'); }); +// KJPP Breadcrumbs::for('basicdata.kjpp', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('KJPP', route('basicdata.kjpp.index')); @@ -203,6 +204,13 @@ Breadcrumbs::for('basicdata.kjpp.edit', function (BreadcrumbTrail $trail) { $trail->push('Edit KJPP'); }); +Breadcrumbs::for('basicdata.kjpp.show', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.kjpp'); + $trail->push('Show KJPP'); +}); +// End KJPP + +// Ijin Usaha Breadcrumbs::for('basicdata.ijin_usaha', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('Ijin Usaha', route('basicdata.ijin_usaha.index')); @@ -221,6 +229,7 @@ Breadcrumbs::for('basicdata.ijin_usaha.edit', function (BreadcrumbTrail $trail) Breadcrumbs::for('debitur', function (BreadcrumbTrail $trail) { $trail->push('Debitur', route('debitur.index')); }); +// End Ijin Usaha Breadcrumbs::for('debitur.create', function (BreadcrumbTrail $trail) { $trail->parent('debitur'); diff --git a/routes/web.php b/routes/web.php index bb1bd29..f15395f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -155,6 +155,7 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('status-permohonan', StatusPermohonanController::class); + // Start Activity KJPP route Route::name('kjpp.')->prefix('kjpp')->group(function () { Route::get('datatables', [KJPPController::class, 'dataForDatatables']) ->name('datatables'); @@ -162,7 +163,9 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('kjpp', KJPPController::class); + // End Activity KJPP route + // Start Activity Ijin Usaha route Route::name('ijin_usaha.')->prefix('ijin_usaha')->group(function () { Route::get('datatables', [IjinUsahaController::class, 'dataForDatatables']) ->name('datatables'); @@ -170,6 +173,7 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('ijin_usaha', IjinUsahaController::class); + // End Activity Ijin Usaha route }); Route::name('permohonan.')->prefix('permohonan')->group(function () { From a005bc2ffe5ea38ee31614a114ea4d4df7f2bd54 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 26 Sep 2024 15:27:05 +0700 Subject: [PATCH 02/14] Membuat Menu Master Jenis Laporan --- app/Exports/JenisLaporanExport.php | 46 +++++ .../Controllers/JenisLaporanController.php | 174 ++++++++++++++++++ app/Http/Requests/JenisLaporanRequest.php | 46 +++++ app/Models/JenisLaporan.php | 22 +++ ...24_09_26_033710_create_penawaran_table.php | 44 +++++ ...446_create_tujuan_penilaian_kjpp_table.php | 36 ++++ ...9_26_041326_create_jenis_laporan_table.php | 36 ++++ ...449_create_persetujuan_penawaran_table.php | 43 +++++ ...6_043525_create_detail_penawaran_table.php | 39 ++++ module.json | 24 +-- .../views/jenis_laporan/create.blade.php | 77 ++++++++ resources/views/jenis_laporan/index.blade.php | 153 +++++++++++++++ routes/breadcrumbs.php | 15 ++ routes/web.php | 12 ++ 14 files changed, 751 insertions(+), 16 deletions(-) create mode 100644 app/Exports/JenisLaporanExport.php create mode 100644 app/Http/Controllers/JenisLaporanController.php create mode 100644 app/Http/Requests/JenisLaporanRequest.php create mode 100644 app/Models/JenisLaporan.php create mode 100644 database/migrations/2024_09_26_033710_create_penawaran_table.php create mode 100644 database/migrations/2024_09_26_034446_create_tujuan_penilaian_kjpp_table.php create mode 100644 database/migrations/2024_09_26_041326_create_jenis_laporan_table.php create mode 100644 database/migrations/2024_09_26_043449_create_persetujuan_penawaran_table.php create mode 100644 database/migrations/2024_09_26_043525_create_detail_penawaran_table.php create mode 100644 resources/views/jenis_laporan/create.blade.php create mode 100644 resources/views/jenis_laporan/index.blade.php 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/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/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/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 @@ +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_034446_create_tujuan_penilaian_kjpp_table.php b/database/migrations/2024_09_26_034446_create_tujuan_penilaian_kjpp_table.php new file mode 100644 index 0000000..7f300c6 --- /dev/null +++ b/database/migrations/2024_09_26_034446_create_tujuan_penilaian_kjpp_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('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_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/module.json b/module.json index 9060084..1a3cf44 100644 --- a/module.json +++ b/module.json @@ -156,6 +156,14 @@ "permission": "", "roles": [] }, + { + "title": "Jenis Laporan", + "path": "basicdata.jenis_laporan", + "classes": "", + "attributes": [], + "permission": "", + "roles": [] + }, { "title": "Jenis Dokumen", "path": "basicdata.jenis-dokumen", @@ -235,22 +243,6 @@ "attributes": [], "permission": "", "roles": [] - }, - { - "title": "KJPP", - "path": "basicdata.kjpp", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] - }, - { - "title": "Ijin Usaha", - "path": "basicdata.ijin_usaha", - "classes": "", - "attributes": [], - "permission": "", - "roles": [] } ] } 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)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($jenisLaporan->id) ? 'Edit' : 'Tambah' }} Jenis Laporan +

+
+ Back +
+
+
+ @if (isset($jenisLaporan->id)) +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @else +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @endif +
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@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') +
+
+
+

+ Daftar Jenis Laporan +

+ +
+
+
+ + + + + + + + + +
+ + + Kode Laporan + + + Jenis Laporan + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index cfea1d9..7642794 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -52,6 +52,21 @@ Breadcrumbs::for('basicdata.jenis-jaminan.edit', function (BreadcrumbTrail $trai $trail->push('Edit Jenis Aset'); }); +Breadcrumbs::for('basicdata.jenis_laporan', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Jenis Laporan', route('basicdata.jenis_laporan.index')); +}); + +Breadcrumbs::for('basicdata.jenis_laporan.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.jenis_laporan'); + $trail->push('Tambah Jenis Laporan', route('basicdata.jenis_laporan.create')); +}); + +Breadcrumbs::for('basicdata.jenis_laporan.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.jenis_laporan'); + $trail->push('Edit Jenis Laporan'); +}); + Breadcrumbs::for('basicdata.tujuan-penilaian', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('Tujuan Penilaian', route('basicdata.tujuan-penilaian.index')); diff --git a/routes/web.php b/routes/web.php index b6b0a73..7d51643 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,7 @@ use Modules\Lpj\Http\Controllers\IjinUsahaController; use Modules\Lpj\Http\Controllers\JenisDokumenController; use Modules\Lpj\Http\Controllers\JenisFasilitasKreditController; use Modules\Lpj\Http\Controllers\JenisJaminanController; +use Modules\Lpj\Http\Controllers\JenisLaporanController; use Modules\Lpj\Http\Controllers\JenisLegalitasJaminanController; use Modules\Lpj\Http\Controllers\JenisPenilaianController; use Modules\Lpj\Http\Controllers\KJPPController; @@ -324,6 +325,17 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('ijin_usaha', IjinUsahaController::class); + // End Activity Ijin Usaha route + + // Start Activity Jenis Laporan route + Route::name('jenis_laporan.')->prefix('jenis_laporan')->group(function () { + Route::get('datatables', [JenisLaporanController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [JenisLaporanController::class, 'export'])->name('export'); + }); + + Route::resource('jenis_laporan', JenisLaporanController::class); + // End Activity Jenis Laporan route }); Route::name('permohonan.')->prefix('permohonan')->group(function () { From 74ab18b20080bb69e20cfa730455c62cc901d970 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Thu, 26 Sep 2024 16:22:16 +0700 Subject: [PATCH 03/14] Memperbaiki teks pada jenis kantor / cabang ke Kantor Pusat / Kantor Cabang --- resources/views/kjpp/create.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 977fe3f..6092309 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -49,11 +49,11 @@
- +
- + @if (isset($branch)) @if (isset($kjpp)) @foreach ($branch as $branches) From 04cecf97bd5b2b76f8cfe0675cc29c95e88b453a Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 09:26:32 +0700 Subject: [PATCH 05/14] Memperbaiki Label Jenis Kantor Pada Edit Create, ijin usaha dan jenis aset dari tombol switch menjadi multiple dropdown --- resources/views/kjpp/create.blade.php | 65 ++++++++++++++------------- resources/views/kjpp/show.blade.php | 54 +++++++++++++--------- 2 files changed, 69 insertions(+), 50 deletions(-) diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 8fbae27..fd2ee5b 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -49,11 +49,11 @@
- +
+ + @foreach ($ijin_usaha as $row) @if (isset($kjpp->ijin_usaha_id)) - code, old('ijin_usaha_id', json_decode($kjpp->ijin_usaha_id, true)))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="ijin_usaha_id[]" /> + @else - code, old('ijin_usaha_id', []))) {{ 'checked' }} @endif - value="{{ $row->code }}" name="ijin_usaha_id[]" /> + @endif - - {{ $row->name }} - - - @endforeach + @endforeach +
+ @error('ijin_usaha_id') + {{ $message }} + @enderror
-
- @foreach ($jenis_aset as $row) -
diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 14e9ae3..d36cc29 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -148,32 +148,46 @@ -
- @foreach ($ijin_usahas as $row) - - @endforeach +
+
-
- @foreach ($jenis_jaminan as $row) - - @endforeach +
+
From 003f6cc9136147c14e776c3c7a47f119d4e70104 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 10:11:44 +0700 Subject: [PATCH 06/14] Membuat menu master tujuan penilaian kjpp --- app/Exports/KJPPExport.php | 2 +- app/Exports/TujuanPenilaianKJPPExport.php | 46 +++++ .../TujuanPenilaianKJPPController.php | 174 ++++++++++++++++++ .../Requests/JenisPenilaianKJPPRequest.php | 45 +++++ app/Models/TujuanPenilaianKJPP.php | 19 ++ module.json | 8 + resources/views/kjpp/index.blade.php | 4 +- .../tujuan_penilaian_kjpp/create.blade.php | 77 ++++++++ .../tujuan_penilaian_kjpp/index.blade.php | 154 ++++++++++++++++ routes/breadcrumbs.php | 15 ++ routes/web.php | 8 + 11 files changed, 549 insertions(+), 3 deletions(-) create mode 100644 app/Exports/TujuanPenilaianKJPPExport.php create mode 100644 app/Http/Controllers/TujuanPenilaianKJPPController.php create mode 100644 app/Http/Requests/JenisPenilaianKJPPRequest.php create mode 100644 app/Models/TujuanPenilaianKJPP.php create mode 100644 resources/views/tujuan_penilaian_kjpp/create.blade.php create mode 100644 resources/views/tujuan_penilaian_kjpp/index.blade.php 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/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/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/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/Models/TujuanPenilaianKJPP.php b/app/Models/TujuanPenilaianKJPP.php new file mode 100644 index 0000000..40adbea --- /dev/null +++ b/app/Models/TujuanPenilaianKJPP.php @@ -0,0 +1,19 @@ + - Jenis Kantor / Cabang + Jenis Kantor Action @@ -130,7 +130,7 @@ title: 'Nama KJPP', }, jenis_kantor: { - title: 'Jenis Kantor / Cabang', + title: 'Jenis Kantor', }, actions: { title: 'Action', diff --git a/resources/views/tujuan_penilaian_kjpp/create.blade.php b/resources/views/tujuan_penilaian_kjpp/create.blade.php new file mode 100644 index 0000000..92dd1b2 --- /dev/null +++ b/resources/views/tujuan_penilaian_kjpp/create.blade.php @@ -0,0 +1,77 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+ @if (isset($tujuanPenilaianKJPP->id)) +
+ + @method('PUT') + @else + + @endif + @csrf +
+
+

+ {{ isset($tujuanPenilaianKJPP->id) ? 'Edit' : 'Tambah' }} Tujuan Penilaian KJPP +

+
+ Back +
+
+
+ @if (isset($tujuanPenilaianKJPP->id)) +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @else +
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+ @endif +
+ +
+ + @error('name') + {{ $message }} + @enderror +
+
+
+ +
+
+
+
+
+@endsection diff --git a/resources/views/tujuan_penilaian_kjpp/index.blade.php b/resources/views/tujuan_penilaian_kjpp/index.blade.php new file mode 100644 index 0000000..e41fc78 --- /dev/null +++ b/resources/views/tujuan_penilaian_kjpp/index.blade.php @@ -0,0 +1,154 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('basicdata.tujuan_penilaian_kjpp') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Tujuan Penilaian KJPP +

+ +
+
+
+ + + + + + + + + +
+ + + Kode Tujuan Penilaian KJPP + + + Nama Tujuan Penilaian KJPP + + Action
+
+ +
+
+
+@endsection + +@push('scripts') + + + +@endpush diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 7642794..d583b2d 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -82,6 +82,21 @@ Breadcrumbs::for('basicdata.tujuan-penilaian.edit', function (BreadcrumbTrail $t $trail->push('Edit Tujuan Penilaian'); }); +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata'); + $trail->push('Tujuan Penilaian KJPP', route('basicdata.tujuan_penilaian_kjpp.index')); +}); + +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp.create', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.tujuan_penilaian_kjpp'); + $trail->push('Tambah Tujuan Penilaian KJPP', route('basicdata.tujuan_penilaian_kjpp.create')); +}); + +Breadcrumbs::for('basicdata.tujuan_penilaian_kjpp.edit', function (BreadcrumbTrail $trail) { + $trail->parent('basicdata.tujuan_penilaian_kjpp'); + $trail->push('Edit Tujuan Penilaian KJPP'); +}); + Breadcrumbs::for('basicdata.jenis-dokumen', function (BreadcrumbTrail $trail) { $trail->parent('basicdata'); $trail->push('Jenis Dokumen', route('basicdata.jenis-dokumen.index')); diff --git a/routes/web.php b/routes/web.php index 7d51643..a981482 100644 --- a/routes/web.php +++ b/routes/web.php @@ -26,6 +26,7 @@ use Modules\Lpj\Http\Controllers\StatusPermohonanController; use Modules\Lpj\Http\Controllers\TeamsController; use Modules\Lpj\Http\Controllers\TenderController; use Modules\Lpj\Http\Controllers\TujuanPenilaianController; +use Modules\Lpj\Http\Controllers\TujuanPenilaianKJPPController; /* |-------------------------------------------------------------------------- @@ -73,6 +74,13 @@ Route::middleware(['auth'])->group(function () { }); Route::resource('tujuan-penilaian', TujuanPenilaianController::class); + Route::name('tujuan_penilaian_kjpp.')->prefix('tujuan_penilaian_kjpp')->group(function () { + Route::get('datatables', [TujuanPenilaianKJPPController::class, 'dataForDatatables']) + ->name('datatables'); + Route::get('export', [TujuanPenilaianKJPPController::class, 'export'])->name('export'); + }); + Route::resource('tujuan_penilaian_kjpp', TujuanPenilaianKJPPController::class); + Route::name('jenis-dokumen.')->prefix('jenis-dokumen')->group(function () { Route::get('restore/{id}', [JenisDokumenController::class, 'restore'])->name('restore'); Route::get('datatables', [JenisDokumenController::class, 'dataForDatatables']) From bc4b13df93ed94fa33ff7dd7fba59bdf094eafc8 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 10:21:51 +0700 Subject: [PATCH 07/14] Mengubah label Jenis Kantor / Cabang ke Jenis Kantor pada Menu Master KJPP lihat data detail --- resources/views/kjpp/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index d36cc29..91b1364 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -33,7 +33,7 @@
- +

@foreach ($branches as $branch) From 9fd2ee2ae5dcaaab23d1ec5dfb2b54fd9a0b4e5f Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 10:44:51 +0700 Subject: [PATCH 08/14] Memperbaiki logic pada edit kjpp ketika file yang mengandung default.pdf jangan dihapus --- app/Http/Controllers/KJPPController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 4366426..2552a58 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -127,7 +127,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; From 03562a5d3ec20b79647cfeb9c9276b1078fa6955 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 14:32:38 +0700 Subject: [PATCH 09/14] Mengubah huruf besar semua pada kota / kabupaten di detail kjpp --- resources/views/kjpp/show.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 91b1364..9680756 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -63,7 +63,7 @@ {{ $district->name }} @endforeach , @foreach ($cities as $city) - {{ $city->name }} + {{ ucwords(strtolower($city->name)) }} @endforeach , @foreach ($provinces as $province) {{ $province->name }} From fde570f8d6c9d1852e1be899ad3436cba06cae28 Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Fri, 27 Sep 2024 17:33:18 +0700 Subject: [PATCH 10/14] mengubah dropdown multiple ijin usaha dan jenis aset menjadi bisa klik silang ketika tidak mau dipilih di menu kjpp --- resources/views/kjpp/create.blade.php | 36 +++++++++------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index fd2ee5b..4a43191 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -347,20 +347,14 @@

@@ -374,20 +368,14 @@
From 6558d8348bdd37f4a9005102ff682a8fd553840d Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Mon, 30 Sep 2024 13:04:50 +0700 Subject: [PATCH 11/14] Mengubah tampilan show KJPP dan Create/Edit KJPP --- app/Http/Controllers/KJPPController.php | 3 + app/Http/Requests/KJPPRequest.php | 18 +++-- .../2024_09_30_021444_update_kjpp_table.php | 30 +++++++++ resources/views/kjpp/create.blade.php | 14 ++-- resources/views/kjpp/show.blade.php | 66 ++++++++++--------- 5 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 database/migrations/2024_09_30_021444_update_kjpp_table.php diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 2552a58..966c35c 100644 --- a/app/Http/Controllers/KJPPController.php +++ b/app/Http/Controllers/KJPPController.php @@ -62,6 +62,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; 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/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/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index 4a43191..e0c854d 100644 --- a/resources/views/kjpp/create.blade.php +++ b/resources/views/kjpp/create.blade.php @@ -51,7 +51,7 @@
- @if (isset($ijin_usaha)) @@ -357,10 +358,10 @@ @endforeach + @error('ijin_usaha_id') + {{ $message }} + @enderror
- @error('ijin_usaha_id') - {{ $message }} - @enderror
diff --git a/resources/views/kjpp/show.blade.php b/resources/views/kjpp/show.blade.php index 9680756..35762c9 100644 --- a/resources/views/kjpp/show.blade.php +++ b/resources/views/kjpp/show.blade.php @@ -149,45 +149,49 @@ Ijin Usaha
- + @if (isset($kjpp->ijin_usaha_id)) +
+ @foreach (json_decode($kjpp->ijin_usaha_id, true) as $ijin_code) + @php + $ijin_usaha = $ijin_usahas->firstWhere('code', $ijin_code); + @endphp + @if ($ijin_usaha) +
+ {{ $ijin_usaha->name }} +
+ @endif + @endforeach +
+ @else +
No + business license + selected.
+ @endif
-
- + @else + + No asset type selected. + + @endif
From 7d8d3c21e9b6480faa9476b16eef85134c86dcbe Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Mon, 30 Sep 2024 17:44:07 +0700 Subject: [PATCH 12/14] Membuat Nomor KJPP menjadi otomatis --- app/Http/Controllers/KJPPController.php | 10 +++++++++- resources/views/kjpp/create.blade.php | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/KJPPController.php b/app/Http/Controllers/KJPPController.php index 966c35c..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')); } /** diff --git a/resources/views/kjpp/create.blade.php b/resources/views/kjpp/create.blade.php index e0c854d..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 From e889350453503bebd5e84c72eceb934b4965a6aa Mon Sep 17 00:00:00 2001 From: rahmatrafli1 Date: Tue, 1 Oct 2024 18:13:42 +0700 Subject: [PATCH 13/14] Membuat Sub Menu Data Penawaran dari Menu Tender part 1 --- app/Exports/PenawaranTenderExport.php | 63 ++++++ app/Http/Controllers/TenderController.php | 113 ++++++++-- app/Http/Requests/TenderPenawaranRequest.php | 74 ++++++ app/Models/PenawaranTender.php | 18 ++ ...24_10_01_070143_update_penawaran_table.php | 28 +++ resources/views/penawaran/create.blade.php | 212 +++++++++++++++++- resources/views/penawaran/index.blade.php | 145 +++++++++++- resources/views/permohonan/index.blade.php | 88 ++++---- routes/breadcrumbs.php | 6 + routes/web.php | 7 +- 10 files changed, 679 insertions(+), 75 deletions(-) create mode 100644 app/Exports/PenawaranTenderExport.php create mode 100644 app/Http/Requests/TenderPenawaranRequest.php create mode 100644 app/Models/PenawaranTender.php create mode 100644 database/migrations/2024_10_01_070143_update_penawaran_table.php 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/Http/Controllers/TenderController.php b/app/Http/Controllers/TenderController.php index d23fd30..2dab89c 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,25 @@ 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'); + $status = StatusPermohonan::all(); + $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); + $jenis_laporan = JenisLaporan::all(); + $kjpp = KJPP::all(); + // $penawaran = Permohonan::where('nomor_registrasi', $id)->get(); + + return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'id')); } /** * Store a newly created resource in storage. */ - public function penawaran_store(Request $request): RedirectResponse + public function penawaran_store(TenderPenawaranRequest $request) { - // $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); - - // return redirect()->back()->with('success', 'Data berhasil disimpan!'); + dd($validated); } /** @@ -69,7 +71,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 +84,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/Requests/TenderPenawaranRequest.php b/app/Http/Requests/TenderPenawaranRequest.php new file mode 100644 index 0000000..2551998 --- /dev/null +++ b/app/Http/Requests/TenderPenawaranRequest.php @@ -0,0 +1,74 @@ + '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!', + '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', 'End date tidak boleh lebih awal dari start date.'); + } + }); + } +} diff --git a/app/Models/PenawaranTender.php b/app/Models/PenawaranTender.php new file mode 100644 index 0000000..ece9b07 --- /dev/null +++ b/app/Models/PenawaranTender.php @@ -0,0 +1,18 @@ +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/resources/views/penawaran/create.blade.php b/resources/views/penawaran/create.blade.php index 08ec062..c73484f 100644 --- a/resources/views/penawaran/create.blade.php +++ b/resources/views/penawaran/create.blade.php @@ -1,22 +1,214 @@ @extends('layouts.main') @section('breadcrumbs') - {{ Breadcrumbs::render('tender.penawaran') }} + {{ Breadcrumbs::render(request()->route()->getName(), request()->route('id')) }} @endsection @section('content')
+
+ @if (isset($id)) + + @method('PUT') + @endif + @csrf -
-
-

- Tambah Data Penawaran -

+
+
+

+ {{ isset($id) ? 'Edit' : 'Tambah' }} Data Penawaran +

+
+ + Back +
+
+
+
+ +
+

+ {{ $id }} +

+
+
+
+ +
+ + @error('code') + {{ $message }} + @enderror +
+
+
+ +
+ +
+
+
+ +
+ @error('biaya_kjpp_sebelumnya') + {{ $message }} + @enderror +
+ +
+ + @error('tanggal_penilaian_sebelumnya') + {{ $message }} + @enderror +
+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ + @error('start_date') + {{ $message }} + @enderror +
+ +
+ + @error('tanggal_akhir') + {{ $message }} + @enderror +
+
+
+ +
+ + @error('catatan') + {{ $message }} + @enderror +
+
+
+ + +
+
+ +
+
-
- {{-- @include('lpj::debitur.form') --}} -
-
+
@endsection diff --git a/resources/views/penawaran/index.blade.php b/resources/views/penawaran/index.blade.php index 9158891..897f77e 100644 --- a/resources/views/penawaran/index.blade.php +++ b/resources/views/penawaran/index.blade.php @@ -7,15 +7,156 @@ @section('content')
-
+

Data Penawaran

+
+
+ +
+ +
+
+ + + + + + + + + + +
+ + + Nomor Penawaran + + + Nama KJPP Sebelumnya + + + Tanggal Penilaian Sebelumnya + + Action
+
+
@endsection + +@push('scripts') + + + +@endpush diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 23b267b..f432405 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -7,7 +7,8 @@ @section('content')
-
+

Daftar Permohonan @@ -27,46 +28,48 @@

- +
- - - - - - - - - - - + + + + + + + + + + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - - - Status - - Action
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + Action
-