diff --git a/app/Http/Controllers/OtorisasiPenawaranController.php b/app/Http/Controllers/OtorisasiPenawaranController.php
new file mode 100644
index 0000000..91762f2
--- /dev/null
+++ b/app/Http/Controllers/OtorisasiPenawaranController.php
@@ -0,0 +1,290 @@
+user) || !$this->user->can('debitur.view')) {
+ //abort(403, 'Sorry! You are not allowed to view users.');
+ }
+
+ // Retrieve data from the database
+ $query =PenawaranTender::query()
+ ->select('penawaran.*',DB::raw("CONCAT(DATE_FORMAT(penawaran.start_date, '%d %M %Y'), ' - ', DATE_FORMAT(penawaran.end_date, '%d %M %Y')) AS date_range"), 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
+ ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
+ ->where('penawaran.status','=','persetujuan-penawaran')
+ ->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->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->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::otorisasipenawaran.edit', compact('id'));
+ }
+
+ public function setData(Request $request): JsonResponse
+ {
+ $data = array();
+ $penawaran = array();
+ $penawrandetails = array();
+ $penawarandetailLogs = array();
+
+ if (request()->ajax()) {
+ $id = $request->id;
+ $penawaran = PenawaranTender::where('status','=','persetujuan-penawaran')->find($id);
+
+ if ($penawaran) {
+ $penawarandetailLogs = PenawaranDetailTenderLog::where('penawaran_id',$id)
+ ->leftJoin('kjpp', 'kjpp.id', '=', 'detail_penawaran_logs.kjpp_rekanan_id')
+ ->select('detail_penawaran_logs.*', DB::raw("DATE_FORMAT(detail_penawaran_logs.created_at, '%d-%m-%Y %H:%i') AS created_at2"),'kjpp.code AS kjpp_code', 'kjpp.name AS kjpp_name')
+ ->get();
+ $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();
+
+ if(sizeof($penawarandetailLogs)>0)
+ {
+ $h=0;
+ foreach($penawarandetailLogs as $obj1)
+ {
+ if($obj1->dokumen_persetujuan && Storage::disk('public')->exists($obj1->dokumen_persetujuan))
+ {
+ $penawarandetailLogs_path = Storage::url($obj1->dokumen_persetujuan);
+ $penawarandetailLogs[$h]->dokumen_persetujuan = $penawarandetailLogs_path;
+ }
+ $h++;
+ }
+
+ }
+
+ $i=0;
+ foreach($penawrandetails as $obj)
+ {
+ 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++;
+ }
+
+ $penawaranString = "";
+ if($penawaran->status)
+ {
+ $penawaranString = convertSlug($penawaran->status);
+ $penawaran->status = $penawaranString;
+ }
+
+ $kjpp=null;
+ $kjpp = KJPP::pluck('name', 'id');
+ $data['penawaran'] = $penawaran;
+ $data['penawrandetails'] = $penawrandetails;
+ $data['penawarandetailLogs'] = $penawarandetailLogs;
+ $data['status'] = 'success';
+ $data['message']['message_success'] = array("data successfully found");
+ } else {
+ $data['status'] = 'error';
+ $data['penawaran'] = null;
+ $data['penawrandetails'] = null;
+ $data['message']['message_data'] = array("data not found");
+ }
+ } else {
+ $data['status'] = 'error';
+ $data['message']['message_ajax'] = array("no ajax request");
+ }
+
+ return response()->json($data);
+ }
+
+ public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse
+ {
+ $data = array();
+ $dataDetailPenawaranLog=[];
+ if (request()->ajax()) {
+
+ // cek masa aktif penawaran
+ $detailpenawaran = PenawaranDetailTender::find($id);
+ $penawaran = PenawaranTender::findOrFail($detailpenawaran->penawaran_id);
+ $checkActiveDateRange = checkActiveDateRangePenawaran($detailpenawaran->penawaran_id);
+ // cek masa aktif penawaran
+ if($checkActiveDateRange)
+ {
+ DB::beginTransaction();
+ try {
+
+ // update status KJPP yg tidak terpilih menjadi 2 -> kalah
+ // update status Penawaran menjadi SPK
+ // update status Permohonan menjadi SPK
+ // insert detail_permohonan_log
+
+ PenawaranDetailTender::where('status', 1)
+ ->where('penawaran_id', $request->penawaran_id)
+ ->whereNotIn('id', [$id])
+ ->update(['status' => 2,
+ 'updated_by' => Auth::id(),
+ 'updated_at' => now()
+ ]);
+
+ PenawaranTender::where('id', $request->penawaran_id)
+ ->update(['status'=>'spk',
+ 'nama_kjpp_sebelumnya'=>$request->kjppName,
+ 'biaya_kjpp_sebelumnya'=>$request->biaya_penawaran,
+ 'tanggal_penilaian_sebelumnya'=>now(),
+ 'authorized_status'=>1,
+ 'authorized_at'=>now(),
+ 'authorized_by'=>Auth::id(),
+ 'updated_by' => Auth::id(),
+ 'updated_at' => now()
+ ]);
+
+ Permohonan::where('nomor_registrasi',$request->noReg)
+ ->update(['status'=>'spk',
+ 'updated_by' => Auth::id(),
+ 'updated_at' => now()
+ ]);
+
+ // log
+ $detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
+ if(sizeof($detailPenawaran)>0)
+ {
+
+ foreach ($detailPenawaran as $model) {
+ array_push($dataDetailPenawaranLog, [
+ 'detail_penawaran_id' =>$model->id,
+ 'kjpp_rekanan_id' =>$model->kjpp_rekanan_id,
+ 'penawaran_id' =>$model->penawaran_id,
+ 'biaya_penawaran' =>$model->biaya_penawaran,
+ 'attachment' =>$model->attachment,
+ 'dokumen_persetujuan' =>$model->dokumen_persetujuan,
+ 'status' =>$model->status,
+ 'authorized_status' =>$model->authorized_status,
+ 'authorized_at' =>$model->authorized_at,
+ 'authorized_at' =>$model->authorized_at,
+ 'created_at' =>$model->created_at,
+ 'updated_at' =>$model->updated_at,
+ 'deleted_at' =>$model->deleted_at,
+ 'created_by' =>$model->created_by,
+ 'updated_by' =>$model->updated_by,
+ 'deleted_by' =>$model->deleted_by
+ ]);
+
+ }
+
+ PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);
+ }
+ // log
+
+ DB::commit();
+ $data['status'] = 'success';
+ $data['message']['message_success'] = array('Otorisasi Penawaran KJPP '.$request->kjppName.' successfully');
+ } catch (Exception $e) {
+ DB::rollBack();
+ $data['status'] = 'error';
+ $data['message']['message_error'] = array("Otorisasi Penawaran KJPP failed..");
+ }
+ }
+ else
+ {
+ $data['status'] = 'error';
+ $data['message'] ['active_date_range'] = array("Penawaran sudah di tutup");
+ }
+
+ } else {
+ $data['status'] = 'error';
+ $data['message']['message_ajax'] = array("no ajax request");
+ }
+ return response()->json($data);
+ }
+
+ public function show($id)
+ {
+ $prosespenawaran = PenawaranTender::find($id);
+ return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran'));
+ }
+}
diff --git a/app/Http/Controllers/ProsesPenawaranUlangController.php b/app/Http/Controllers/ProsesPenawaranUlangController.php
index 4cf278d..f34ee70 100644
--- a/app/Http/Controllers/ProsesPenawaranUlangController.php
+++ b/app/Http/Controllers/ProsesPenawaranUlangController.php
@@ -148,16 +148,16 @@ class ProsesPenawaranUlangController extends Controller
$data['penawaran'] = $penawaran;
$data['penawrandetails'] = $penawrandetails;
$data['status'] = 'success';
- $data['message'] ['message_success'] = array("data successfully found");
+ $data['message']['message_success'] = array("data successfully found");
} else {
$data['status'] = 'error';
$data['penawaran'] = null;
$data['penawrandetails'] = null;
- $data['message'] ['message_data'] = array("data not found");
+ $data['message']['message_data'] = array("data not found");
}
} else {
$data['status'] = 'error';
- $data['message'] ['message_ajax'] = array("no ajax request");
+ $data['message']['message_ajax'] = array("no ajax request");
}
return response()->json($data);
@@ -240,13 +240,13 @@ class ProsesPenawaranUlangController extends Controller
{
$pleaseCommit=false;
$data['status'] = 'error';
- $data['message'] ['check_file_jenis'] = array("Silahkan upload file pdf");
+ $data['message']['check_file_jenis'] = array("Silahkan upload file pdf");
}
}
else
{
$data['status'] = 'error';
- $data['message'] ['check_file'] = array("Silahkan upload file");
+ $data['message']['check_file'] = array("Silahkan upload file");
}
@@ -259,32 +259,32 @@ class ProsesPenawaranUlangController extends Controller
$data['id'] = $id;
$data['detailpenawaran'] = $detailpenawaran;
$data['status'] = 'success';
- $data['message'] ['message_success'] = array('Proses Penawarn KJPP Ulang successfully');
+ $data['message']['message_success'] = array('Proses Penawarn KJPP Ulang successfully');
}
else
{
DB::rollBack();
$data['status'] = 'error';
- $data['message'] ['message_error'] = array("Proses Penawarn KJPP Ulang failed..");
+ $data['message']['message_error'] = array("Proses Penawarn KJPP Ulang failed..");
}
} catch (Exception $e) {
DB::rollBack();
$data['status'] = 'error';
- $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP Ulang failed.');
+ $data['message']['message_error_try_catch'] = array('Proses Penawarn KJPP Ulang failed.');
}
}
else
{
$data['status'] = 'error';
- $data['message'] ['active_date_range'] = array("Penawaran sudah di tutup");
+ $data['message']['active_date_range'] = array("Penawaran sudah di tutup");
}
}
} else {
$data['status'] = 'error';
- $data['message'] ['message_ajax'] = array("no ajax request");
+ $data['message']['message_ajax'] = array("no ajax request");
}
return response()->json($data);
@@ -337,12 +337,12 @@ class ProsesPenawaranUlangController extends Controller
DB::commit();
$data['status'] = 'success';
- $data['message'] ['message_success'] = array('Sukses delete Penawaran KJPP '.$request->kjppName);
+ $data['message']['message_success'] = array('Sukses delete Penawaran KJPP '.$request->kjppName);
} catch (Exception $e) {
DB::rollBack();
// dd($e);
$data['status'] = 'error';
- $data['message'] ['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
+ $data['message']['message_error_try_catch'] = array("Gagal delete Penawaran KJPP ".$request->kjppName);
}
return response()->json($data);
}
diff --git a/module.json b/module.json
index 0390201..625e542 100644
--- a/module.json
+++ b/module.json
@@ -72,6 +72,25 @@
}
]
},
+ {
+ "title": "Otorisasi Tender",
+ "path": "otorisasitender",
+ "icon": "ki-filled ki-category text-lg",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": ["administrator", "admin"],
+ "sub": [
+ {
+ "title": "Otorisasi Penawaran",
+ "path": "otorisasitender.penawaran",
+ "classes": "",
+ "attributes": [],
+ "permission": "",
+ "roles": ["administrator", "admin"]
+ }
+ ]
+ },
{
"title": "Pembatalan",
"path": "",
diff --git a/resources/views/otorisasipenawaran/edit.blade.php b/resources/views/otorisasipenawaran/edit.blade.php
new file mode 100644
index 0000000..2940e0c
--- /dev/null
+++ b/resources/views/otorisasipenawaran/edit.blade.php
@@ -0,0 +1,121 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render(request()->route()->getName()) }}
+@endsection
+@php
+ // $route = Route::currentRouteName();
+ // dd($route);
+ $route = explode('.', Route::currentRouteName());
+@endphp
+
+@section('content')
+
+
+
+
+
+
+
+ Nomor Register Permohonan:
+
+
+
+
+
+
+
+
+ Kode Penawaran:
+
+
+
+
+
+
+
+
+ Status Penawaran:
+
+
+
+
+
+
+
+
+
+
+
+@endsection
+@include('lpj::otorisasipenawaran.js.editjs')
\ No newline at end of file
diff --git a/resources/views/otorisasipenawaran/index.blade.php b/resources/views/otorisasipenawaran/index.blade.php
new file mode 100644
index 0000000..5156678
--- /dev/null
+++ b/resources/views/otorisasipenawaran/index.blade.php
@@ -0,0 +1,151 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render('otorisasitender.penawaran') }}
+@endsection
+
+@section('content')
+
+@endsection
+
+@push('scripts')
+
+
+@endpush
diff --git a/resources/views/otorisasipenawaran/js/editextjs.blade.php b/resources/views/otorisasipenawaran/js/editextjs.blade.php
new file mode 100644
index 0000000..cbf9ffa
--- /dev/null
+++ b/resources/views/otorisasipenawaran/js/editextjs.blade.php
@@ -0,0 +1,94 @@
+
\ No newline at end of file
diff --git a/resources/views/otorisasipenawaran/js/editjs.blade.php b/resources/views/otorisasipenawaran/js/editjs.blade.php
new file mode 100644
index 0000000..cc67d20
--- /dev/null
+++ b/resources/views/otorisasipenawaran/js/editjs.blade.php
@@ -0,0 +1,188 @@
+@push('scripts')
+ @include('lpj::assetsku.includenya')
+ @include('lpj::otorisasipenawaran.js.editextjs')
+
+@endpush
\ No newline at end of file
diff --git a/resources/views/otorisasipenawaran/show.blade.php b/resources/views/otorisasipenawaran/show.blade.php
new file mode 100644
index 0000000..0e6d2e1
--- /dev/null
+++ b/resources/views/otorisasipenawaran/show.blade.php
@@ -0,0 +1,43 @@
+@extends('layouts.main')
+
+@section('breadcrumbs')
+ {{ Breadcrumbs::render(request()->route()->getName()) }}
+@endsection
+@php
+ $route = explode('.', Route::currentRouteName());
+@endphp
+@section('content')
+
+
+
+
+
+
+ Nomor Register Permohonan:
+
+
+ {{ $prosespenawaran->nomor_registrasi }}
+
+
+
+
+ Kode Penawaran:
+
+
+ {{ $prosespenawaran->code }}
+
+
+
+
+
+
+
+@endsection
diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php
index 5ae30ec..562b021 100644
--- a/routes/breadcrumbs.php
+++ b/routes/breadcrumbs.php
@@ -498,6 +498,23 @@ Breadcrumbs::for('tender.prosespenawaranulang.show', function (BreadcrumbTrail $
$trail->push('Detail Data Proses Penawaran Ulang');
});
// andy add Proses Penawaran Ulang
+// andy add Otorisasi Tender
+Breadcrumbs::for('otorisasitender', function (BreadcrumbTrail $trail) {
+ $trail->push('Otorisasi Tender');
+});
+Breadcrumbs::for('otorisasitender.penawaran', function (BreadcrumbTrail $trail) {
+ $trail->parent('otorisasitender');
+ $trail->push('Data Otorisasi Penawaran', route('otorisasitender.penawaran.index'));
+});
+Breadcrumbs::for('otorisasitender.penawaran.edit', function (BreadcrumbTrail $trail) {
+ $trail->parent('otorisasitender.penawaran');
+ $trail->push('Tambah Data Otorisasi Penawaran ');
+});
+Breadcrumbs::for('otorisasitender.penawaran.show', function (BreadcrumbTrail $trail) {
+ $trail->parent('otorisasitender.penawaran');
+ $trail->push('Detail Data Otorisasi Penawaran');
+});
+// andy add Otorisasi Tender
Breadcrumbs::for('otorisator.pelaporan.index', function (BreadcrumbTrail $trail) {
diff --git a/routes/registrasi.php b/routes/registrasi.php
index dd14aa5..b205ce1 100644
--- a/routes/registrasi.php
+++ b/routes/registrasi.php
@@ -3,6 +3,7 @@
use Modules\Lpj\Http\Controllers\RegistrasiController;
use Modules\Lpj\Http\Controllers\ProsesPenawaranController;
use Modules\Lpj\Http\Controllers\ProsesPenawaranUlangController;
+use Modules\Lpj\Http\Controllers\OtorisasiPenawaranController;
Route::middleware(['auth'])->group(function () {
@@ -65,6 +66,22 @@ Route::middleware(['auth'])->group(function () {
Route::put('/prosespenawaranulangKJPPStatus/{prosespenawaranulangKJPPStatus}', 'updateKJPPStatus')->name('prosespenawaranulang.updateKJPPStatus');
});
- });
+ });
+
+ Route::name('otorisasitender.')->prefix('otorisasitender')->group(function () {
+ Route::controller(OtorisasiPenawaranController::class)->group(function(){
+ Route::get('penawaran', 'index')->name('penawaran.index');
+ Route::get('penawaran/datatables', 'dataForDatatables')->name('penawaran.datatables');
+ Route::get('penawaran/{penawaran}/edit', 'edit')->name('penawaran.edit');
+
+ // show data
+ Route::get('/penawaran/{penawaran}', 'show')->name('penawaran.show');
+ Route::post('penawaran/setData', 'setData')->name('penawaran.setData');
+
+ // update KJPP data, detail penawaran
+ Route::put('/otorisasiPenawaranKJPP/{penawaran}', 'otorisasiPenawaranKJPP')->name('penawaran.otorisasiPenawaranKJPP');
+
+ });
+ });
});