user) || !$this->user->can('debitur.view')) { //abort(403, 'Sorry! You are not allowed to view users.'); } // Retrieve data from the database $query = PenawaranTender::query()->where('status', '=', 'tender')->withCount('penawarandetails'); // 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('tujuanPenilaianKJPP', '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(); $data = $query->with(['tujuanPenilaianKJPP'])->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::prosespenawaran.edit', compact('id')); } public function setData(Request $request): JsonResponse { $data = array(); $penawaran = array(); $penawrandetails = array(); if (request()->ajax()) { $id = $request->id; $penawaran = PenawaranTender::findOrFail($id); $penawrandetails = PenawaranDetailTender::where('penawaran_id', '=', $id) ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran.kjpp_rekanan_id') ->select('detail_penawaran.*', 'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name') ->where('detail_penawaran.status', '=', 1) ->get(); $data['status'] = 'success'; if ($penawaran) { $i = 0; foreach ($penawrandetails as $obj) { // dd($obj->dokumen_persetujuan); if ($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan)) { $penawrandetails_path = Storage::url($obj->dokumen_persetujuan); $penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path; $i++; } } $kjpp = null; $kjpp = KJPP::pluck('name', 'id'); $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; $data['message'] = 'data successfully found'; } else { $data['penawaran'] = null; $data['penawrandetails'] = null; $data['message'] = 'data not found'; } } else { $data['status'] = 'error'; $data['message'] = 'no ajax request'; } return response()->json($data); } /** * Update the specified resource in storage. */ public function update(Request $request, $id): JsonResponse { // init $data = array(); $dataku = array(); $tindakan = null; if (request()->ajax()) { $validator = ProsesPenawaranController::rulesEditnya($request, $id); if ($validator['fails']) { $data['message'] = $validator['errors']; $data['status'] = 'error'; } else { try { $dataku = [ 'updated_by' => Auth::id(), 'updated_at' => now(), 'biaya_penawaran' => str_replace(".", "", $request->biaya_penawaran) ]; if ($request->hasFile('dokumen_persetujuan')) { $file_tmp = $request->file('dokumen_persetujuan'); $folderPath = 'uploads/penawaran/'; if ($file_tmp->isValid()) { $myFile = $file_tmp->getClientOriginalName(); // nama file with extension $file_name = pathinfo($myFile, PATHINFO_FILENAME); // nama file without extension $extension = $file_tmp->getClientOriginalExtension(); // kjppID_penawaranID_namaFile_userID_time $newFileName = $request->kjpp_rekanan_id . '_' . $id . '_' . $file_name . '_' . Auth::user()->id . "_" . time() . '.' . $extension; Storage::disk('public')->put($folderPath . '/' . $newFileName, file_get_contents($file_tmp)); $newFileNameWithPath = $folderPath . $newFileName; $dataku['attachment'] = $myFile; $dataku['dokumen_persetujuan'] = $newFileNameWithPath; $model = PenawaranDetailTender::findOrFail($id); $model->update($dataku); $data['status'] = 'success'; $data['detailpenawaran_id'] = $id; $data['message'] = 'Proses Penawarn KJPP successfully'; } else { $data['status'] = 'error'; $data['message'] = 'Silahkan upload file pdf'; } } else { $data['status'] = 'error'; $data['message'] = 'Silahkan upload file'; } } catch (Exception $e) { $data['status'] = 'error'; $data['message'] = 'Proses Penawarn KJPP failed.'; } } } else { $data['status'] = 'error'; $data['message'] = 'no ajax request'; } return response()->json($data); } public function rulesEditnya($request, $id) { $validateIt = [ // 'name' diambil dari definisi parameter yang di kirim pada POST Data 'biaya_penawaran' => 'required', 'dokumen_persetujuan' => 'required|file|mimes:pdf' ]; $messageIt = [ 'biaya_penawaran.required' => 'Silahkan isi Biaya Penawaran', 'dokumen_persetujuan.required' => 'Silahkan isi dokumen', 'dokumen_persetujuan.file' => 'Silahkan isi file', 'dokumen_persetujuan.mimes' => 'Silahkan upload pdf' ]; $validator = Validator::make($request->all(), $validateIt, $messageIt); $data['fails'] = $validator->fails(); $data['errors'] = $validator->errors(); return $data; } /** * Update the specified resource in storage. */ public function updateAll(Request $request, $id): JsonResponse { // init $data = array(); $dataku = array(); $model = PenawaranTender::findOrFail($id); $checkActiveDateRange = $this->checkActiveDateRangePenawaran($model->start_date, $model->end_date); // cek masa aktif penawaran if ($checkActiveDateRange) { $checkKelengkapanDetailKJPP = $this->checkKelengkapanDetailKJPP($id); if ($checkKelengkapanDetailKJPP) { DB::beginTransaction(); try { $dataku = [ 'status' => 'tendered', 'updated_by' => Auth::id(), 'updated_at' => now() ]; $dataPermohonan = [ 'status' => 'tendered', 'updated_by' => Auth::id(), 'updated_at' => now() ]; $permohonan = Permohonan::where('nomor_registrasi', '=', $model->nomor_registrasi)->first(); $model->update($dataku); $permohonan->update($dataPermohonan); DB::commit(); $data['message'] = "Sukses melakukan Proses Penawaran"; $data['status'] = 'success'; } catch (Exception $e) { DB::rollBack(); // dd($e); $data['message'] = "Gagal melakukan Proses Penawaran"; $data['status'] = 'error'; } } else { $data['message'] = "Silahkan lengkapi data KJPP"; $data['status'] = 'error'; } } else { $data['message'] = "Penawaran sudah di tutup"; $data['status'] = 'error'; } return response()->json($data); } public function checkActiveDateRangePenawaran($start_date1, $end_date1) { $start_date = strtotime($start_date1); $end_date = strtotime($end_date1); $todays_date = strtotime(now()); $allow = true; if ($todays_date >= $start_date && $todays_date <= $end_date) { //Penawaran dibuka $allow = true; } else { if ($todays_date < $start_date) { //Penawaran Belum dibuka $allow = true; } else { //Penawaran sudah ditutup $allow = false; } } return $allow; } public function checkKelengkapanDetailKJPP($id) { $allow = true; // DB::enableQueryLog(); // detail_penawaran apakah isian biaya_penawaran, attachment, dokumen_persetujuan sudah lengkap? $query = PenawaranDetailTender::select('id') ->where('penawaran_id', '=', $id) ->where(function ($query) { $query->orWhere('biaya_penawaran', '', ""); $query->orWhereNull('biaya_penawaran'); $query->orWhere('attachment', '', ""); $query->orWhereNull('attachment'); $query->orWhere('dokumen_persetujuan', '', ""); $query->orWhereNull('dokumen_persetujuan'); })->get(); // $sql = DB::getQueryLog(); if (sizeof($query) > 0) { $allow = false; } return $allow; } public function updateStatusPenawaranKJPP(Request $request, $id): JsonResponse { // init $data = array(); $dataku = array(); try { $model = PenawaranDetailTender::findOrFail($id); $data['id'] = $id; $dataku = [ 'status' => '0', 'updated_by' => Auth::id(), 'updated_at' => now() ]; $model->update($dataku); $data['message'] = "Sukses delete Penawaran KJPP"; $data['status'] = 'success'; } catch (Exception $e) { // dd($e); $data['message'] = "Gagal delete Penawaran KJPP"; $data['status'] = 'error'; } return response()->json($data); } public function show($id) { $prosespenawaran = PenawaranTender::find($id); return view('lpj::prosespenawaran.show', compact('id', 'prosespenawaran')); } }