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
-