Perbaikan CONFLICT (content): Merge conflict in app/Http/Controllers/OtorisasiPenawaranController.php
This commit is contained in:
@@ -1,425 +1,430 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Carbon\Carbon;
|
||||
use Exception;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Modules\Lpj\Models\KJPP;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranDetailTenderLog;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Carbon\Carbon;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Lpj\Models\KJPP;
|
||||
use Modules\Lpj\Models\PenawaranDetailTender;
|
||||
use Modules\Lpj\Models\PenawaranDetailTenderLog;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
|
||||
class OtorisasiPenawaranController extends Controller
|
||||
{
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
class OtorisasiPenawaranController extends Controller
|
||||
{
|
||||
// dd('hai otorisasi');
|
||||
return view('lpj::otorisasipenawaran.index');
|
||||
}
|
||||
|
||||
public function dataForDatatables(Request $request)
|
||||
{
|
||||
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||
public $user;
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
// dd('hai otorisasi');
|
||||
return view('lpj::otorisasipenawaran.index');
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
$query =PenawaranTender::query()
|
||||
->select('penawaran.*',
|
||||
'debitures.name as debitures_name',
|
||||
'permohonan.tanggal_permohonan',
|
||||
'users.name as user_pemohon',
|
||||
'branches.name as branches_name',
|
||||
'tujuan_penilaian.name as tujuan_penilaian_name',
|
||||
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name')
|
||||
->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')
|
||||
->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id')
|
||||
->leftJoin('users', 'users.id', '=', 'permohonan.user_id')
|
||||
->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id')
|
||||
->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id')
|
||||
->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id')
|
||||
->where('penawaran.status','=','proposal-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->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();
|
||||
|
||||
// format date
|
||||
$i = 0;
|
||||
foreach ($data as $obj) {
|
||||
|
||||
// tanggal_permohonan
|
||||
if ($obj->tanggal_permohonan) {
|
||||
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
|
||||
public function dataForDatatables(Request $request)
|
||||
{
|
||||
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||
}
|
||||
|
||||
// date_range
|
||||
$data[$i]->date_range = "-";
|
||||
if ($obj->start_date && $obj->end_date)
|
||||
{
|
||||
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' .
|
||||
Carbon::parse($obj->end_date)->format('d M Y');
|
||||
// Retrieve data from the database
|
||||
$query = PenawaranTender::query()->select(
|
||||
'penawaran.*',
|
||||
'debitures.name as debitures_name',
|
||||
'permohonan.tanggal_permohonan',
|
||||
'users.name as user_pemohon',
|
||||
'branches.name as branches_name',
|
||||
'tujuan_penilaian.name as tujuan_penilaian_name',
|
||||
'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name',
|
||||
)->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi')->leftJoin(
|
||||
'debitures',
|
||||
'debitures.id',
|
||||
'=',
|
||||
'permohonan.debiture_id',
|
||||
)->leftJoin('users', 'users.id', '=', 'permohonan.user_id')->leftJoin(
|
||||
'branches',
|
||||
'branches.id',
|
||||
'=',
|
||||
'permohonan.branch_id',
|
||||
)->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id', '=', 'permohonan.tujuan_penilaian_id')->leftJoin(
|
||||
'tujuan_penilaian_kjpp',
|
||||
'tujuan_penilaian_kjpp.id',
|
||||
'=',
|
||||
'penawaran.tujuan_penilaian_kjpp_id',
|
||||
)->where('penawaran.status', '=', 'proposal-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->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||
});
|
||||
}
|
||||
|
||||
$i++;
|
||||
}
|
||||
// format date
|
||||
// Apply sorting if provided
|
||||
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||
$order = $request->get('sortOrder');
|
||||
$column = $request->get('sortField');
|
||||
$query->orderBy($column, $order);
|
||||
}
|
||||
|
||||
// Calculate the page count
|
||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||
// Get the total count of records
|
||||
$totalRecords = $query->count();
|
||||
|
||||
// Calculate the current page number
|
||||
$currentPage = 0 + 1;
|
||||
// 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
|
||||
|
||||
// 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
|
||||
]);
|
||||
}
|
||||
$query->skip($offset)->take($size);
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
// id ==> penawaran.id
|
||||
return view('lpj::otorisasipenawaran.edit', compact('id'));
|
||||
}
|
||||
// Get the filtered count of records
|
||||
$filteredRecords = $query->count();
|
||||
|
||||
public function setData(Request $request): JsonResponse
|
||||
{
|
||||
$data = array();
|
||||
$penawaran = array();
|
||||
$penawrandetails = array();
|
||||
$penawarandetailLogs = array();
|
||||
|
||||
if (request()->ajax()) {
|
||||
$id = $request->id;
|
||||
$penawaran = PenawaranTender::where('status','=','proposal-tender')->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)
|
||||
{
|
||||
// tgl_proposal
|
||||
if ($obj1->tgl_proposal) {
|
||||
$penawarandetailLogs[$h]->tgl_proposal = Carbon::parse($obj1->tgl_proposal)->format('d M Y');
|
||||
}
|
||||
|
||||
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++;
|
||||
}
|
||||
// Get the data for the current page
|
||||
//$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||
$data = $query->get();
|
||||
|
||||
// format date
|
||||
$i = 0;
|
||||
foreach ($data as $obj) {
|
||||
// tanggal_permohonan
|
||||
if ($obj->tanggal_permohonan) {
|
||||
$data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y');
|
||||
}
|
||||
|
||||
$i=0;
|
||||
foreach($penawrandetails as $obj)
|
||||
{
|
||||
// tgl_proposal
|
||||
if ($obj->tgl_proposal) {
|
||||
$penawrandetails[$i]->tgl_proposal = Carbon::parse($obj->tgl_proposal)->format('d M Y');
|
||||
}
|
||||
|
||||
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++;
|
||||
// date_range
|
||||
$data[$i]->date_range = "-";
|
||||
if ($obj->start_date && $obj->end_date) {
|
||||
$data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . Carbon::parse(
|
||||
$obj->end_date,
|
||||
)->format('d M Y');
|
||||
}
|
||||
|
||||
$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");
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_ajax'] = array("no ajax request");
|
||||
// format date
|
||||
|
||||
// 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)
|
||||
{
|
||||
// id ==> penawaran.id
|
||||
return view('lpj::otorisasipenawaran.edit', compact('id'));
|
||||
}
|
||||
|
||||
public function setData(Request $request): JsonResponse
|
||||
{
|
||||
$data = [];
|
||||
$penawaran = [];
|
||||
$penawrandetails = [];
|
||||
$penawarandetailLogs = [];
|
||||
|
||||
return response()->json($data);
|
||||
}
|
||||
if (request()->ajax()) {
|
||||
$id = $request->id;
|
||||
$penawaran = PenawaranTender::where('status','=','proposal-tender')->find($id);
|
||||
|
||||
public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse
|
||||
{
|
||||
$data = array();
|
||||
$dataDetailPenawaranLog=[];
|
||||
if (request()->ajax()) {
|
||||
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();
|
||||
|
||||
// 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 {
|
||||
if(sizeof($penawarandetailLogs)>0)
|
||||
{
|
||||
$h=0;
|
||||
foreach($penawarandetailLogs as $obj1)
|
||||
{
|
||||
// tgl_proposal
|
||||
if ($obj1->tgl_proposal) {
|
||||
$penawarandetailLogs[$h]->tgl_proposal = Carbon::parse($obj1->tgl_proposal)->format('d M Y');
|
||||
}
|
||||
|
||||
// update status KJPP yg tidak terpilih menjadi 2 -> kalah
|
||||
// update status Penawaran menjadi SPK
|
||||
// update status Permohonan menjadi SPK
|
||||
// insert detail_permohonan_log
|
||||
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++;
|
||||
}
|
||||
|
||||
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()
|
||||
]);
|
||||
$i=0;
|
||||
foreach($penawrandetails as $obj)
|
||||
{
|
||||
// tgl_proposal
|
||||
if ($obj->tgl_proposal) {
|
||||
$penawrandetails[$i]->tgl_proposal = Carbon::parse($obj->tgl_proposal)->format('d M Y');
|
||||
}
|
||||
|
||||
Permohonan::where('nomor_registrasi',$request->noReg)
|
||||
->update(['status'=>'spk',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
if($obj->dokumen_persetujuan && Storage::disk('public')->exists($obj->dokumen_persetujuan))
|
||||
{
|
||||
$penawrandetails_path = Storage::url($obj->dokumen_persetujuan);
|
||||
$penawrandetails[$i]->dokumen_persetujuan = $penawrandetails_path;
|
||||
|
||||
// log
|
||||
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
|
||||
if(sizeof($detailPenawaran)>0)
|
||||
{
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
foreach ($detailPenawaran as $model) {
|
||||
array_push($dataDetailPenawaranLog, [
|
||||
'detail_penawaran_id' =>$model->id,
|
||||
'kjpp_rekanan_id' =>$model->kjpp_rekanan_id,
|
||||
'penawaran_id' =>$model->penawaran_id,
|
||||
'no_proposal' =>$model->no_proposal,
|
||||
'tgl_proposal' =>$model->tgl_proposal,
|
||||
'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
|
||||
]);
|
||||
$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");
|
||||
}
|
||||
|
||||
PenawaranDetailTenderLog::insert($dataDetailPenawaranLog);
|
||||
}
|
||||
// log
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
public function otorisasiPenawaranKJPP(Request $request, $id): JsonResponse
|
||||
{
|
||||
$data = [];
|
||||
$dataDetailPenawaranLog = [];
|
||||
if (request()->ajax()) {
|
||||
|
||||
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']['message_error'] = array("Penawaran sudah di tutup");
|
||||
}
|
||||
// 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 {
|
||||
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("no ajax request");
|
||||
}
|
||||
return response()->json($data);
|
||||
}
|
||||
// update status KJPP yg tidak terpilih menjadi 2 -> kalah
|
||||
// update status Penawaran menjadi SPK
|
||||
// update status Permohonan menjadi SPK
|
||||
// insert detail_permohonan_log
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$prosespenawaran = PenawaranTender::find($id);
|
||||
return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran'));
|
||||
}
|
||||
PenawaranDetailTender::where('status', 1)
|
||||
->where('penawaran_id', $request->penawaran_id)
|
||||
->whereNotIn('id', [$id])
|
||||
->update(['status' => 2,
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
public function penawaranulang(Request $request, $id): JsonResponse
|
||||
{
|
||||
// $id ==> penawaran.id
|
||||
$data = array();
|
||||
$dataDetailPenawaranLog=[];
|
||||
if (request()->ajax()) {
|
||||
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()
|
||||
]);
|
||||
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
Permohonan::where('nomor_registrasi',$request->noReg)
|
||||
->update(['status'=>'persetujuan-penawaran',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
// update detail_penawaran => detail_penawaran.status = 1 (untuk all KJPP)
|
||||
// update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by
|
||||
// update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by
|
||||
// insert detail_permohonan_log
|
||||
|
||||
PenawaranDetailTender::where('penawaran_id', $id)
|
||||
->update(['status' => 1,
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
PenawaranTender::where('id', $id)
|
||||
->update(['status'=>'tender',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
Permohonan::where('nomor_registrasi',$request->noReg)
|
||||
->update(['status'=>'tender',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $id)
|
||||
->distinct()
|
||||
->get();
|
||||
// log
|
||||
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $request->penawaran_id)->get();
|
||||
if(sizeof($detailPenawaran)>0)
|
||||
{
|
||||
|
||||
// log
|
||||
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,
|
||||
'no_proposal' =>$model->no_proposal,
|
||||
'tgl_proposal' =>$model->tgl_proposal,
|
||||
'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
|
||||
]);
|
||||
|
||||
foreach ($detailPenawaran as $model) {
|
||||
array_push($dataDetailPenawaranLog, [
|
||||
'detail_penawaran_id' =>$model->id,
|
||||
'kjpp_rekanan_id' =>$model->kjpp_rekanan_id,
|
||||
'penawaran_id' =>$model->penawaran_id,
|
||||
'no_proposal' =>$model->no_proposal,
|
||||
'tgl_proposal' =>$model->tgl_proposal,
|
||||
'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
|
||||
|
||||
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']['message_error'] = array("Penawaran sudah di tutup");
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
$data['detailPenawaran'] = $detailPenawaran;
|
||||
$data['status'] = 'success';
|
||||
$data['message']['message_success'] = array('Penawaran ulang successfully');
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("Penawaran ulang failed.");
|
||||
}
|
||||
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("no ajax request");
|
||||
}
|
||||
return response()->json($data);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
{
|
||||
$prosespenawaran = PenawaranTender::find($id);
|
||||
return view('lpj::otorisasipenawaran.show', compact('id','prosespenawaran'));
|
||||
}
|
||||
|
||||
public function penawaranulang(Request $request, $id): JsonResponse
|
||||
{
|
||||
// $id ==> penawaran.id
|
||||
$data = [];
|
||||
$dataDetailPenawaranLog=[];
|
||||
if (request()->ajax()) {
|
||||
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("no ajax request");
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
|
||||
return response()->json($data);
|
||||
}
|
||||
}
|
||||
// update detail_penawaran => detail_penawaran.status = 1 (untuk all KJPP)
|
||||
// update penawaran => penawaran.status ="tender", penawaran.updated_at, penawaran.updated_by
|
||||
// update permohonan => permohonan.status ="tender", permohonan.updated_at, permohonan.updated_by
|
||||
// insert detail_permohonan_log
|
||||
|
||||
PenawaranDetailTender::where('penawaran_id', $id)
|
||||
->update(['status' => 1,
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
PenawaranTender::where('id', $id)
|
||||
->update(['status'=>'tender',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
Permohonan::where('nomor_registrasi',$request->noReg)
|
||||
->update(['status'=>'tender',
|
||||
'updated_by' => Auth::id(),
|
||||
'updated_at' => now()
|
||||
]);
|
||||
|
||||
$detailPenawaran = PenawaranDetailTender::where('penawaran_id', $id)
|
||||
->distinct()
|
||||
->get();
|
||||
|
||||
// log
|
||||
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,
|
||||
'no_proposal' =>$model->no_proposal,
|
||||
'tgl_proposal' =>$model->tgl_proposal,
|
||||
'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['detailPenawaran'] = $detailPenawaran;
|
||||
$data['status'] = 'success';
|
||||
$data['message']['message_success'] = array('Penawaran ulang successfully');
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("Penawaran ulang failed..");
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
$data['status'] = 'error';
|
||||
$data['message']['message_error'] = array("no ajax request");
|
||||
}
|
||||
return response()->json($data);
|
||||
}
|
||||
}
|
||||
@@ -39,8 +39,9 @@ class PenilaiController extends Controller
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$permohonan = Permohonan::with('debiture.documents.jenisjaminan')->find($id);
|
||||
$permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id);
|
||||
|
||||
// return response()->json(['permohonan' => $permohonan]);
|
||||
return view('lpj::penilai.show', compact('permohonan'));
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ class PenilaianController extends Controller
|
||||
|
||||
if (isset($validatedData['penilai_surveyor_id'])) {
|
||||
$user_ids[] = $validatedData['penilai_surveyor_id'];
|
||||
}else {
|
||||
} else {
|
||||
$user_ids[] = $validatedData['penilai_id'];
|
||||
}
|
||||
|
||||
@@ -126,11 +126,11 @@ class PenilaianController extends Controller
|
||||
]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
|
||||
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return redirect()->route('penilaian.index')->with('error', $e->getMessage());
|
||||
|
||||
return response()->json(['error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -179,10 +179,10 @@ class PenilaianController extends Controller
|
||||
'status' => 'assign',
|
||||
]);
|
||||
DB::commit();
|
||||
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
|
||||
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan'], 200);
|
||||
} catch (Exception $e) {
|
||||
DB::rollBack();
|
||||
return redirect()->route('penilaian.index')->with('error', $e->getMessage());
|
||||
return response()->json([ 'success' => false, 'error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
147
app/Http/Controllers/PersetujuanPenawaranController.php
Normal file
147
app/Http/Controllers/PersetujuanPenawaranController.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Modules\Lpj\Http\Requests\PersetujuanPenawaranRequest;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\PersetujuanPenawaran;
|
||||
|
||||
class PersetujuanPenawaranController extends Controller
|
||||
{
|
||||
public $user;
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$persetujuanPenawarans = PersetujuanPenawaran::all();
|
||||
return view('lpj::persetujuan_penawaran.index', compact('persetujuanPenawarans'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*/
|
||||
public function store(PersetujuanPenawaranRequest $request)
|
||||
{
|
||||
$validated = $request->validated();
|
||||
$validated['created_by'] = Auth::id();
|
||||
|
||||
PersetujuanPenawaran::create($validated);
|
||||
|
||||
return redirect()
|
||||
->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran created successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for creating a new resource.
|
||||
*/
|
||||
public function create()
|
||||
{
|
||||
return view('lpj::persetujuan_penawaran.create');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the specified resource.
|
||||
*/
|
||||
public function show(PersetujuanPenawaran $persetujuanPenawaran)
|
||||
{
|
||||
return view('lpj::persetujuan_penawaran.show', compact('persetujuanPenawaran'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*/
|
||||
public function edit(PersetujuanPenawaran $persetujuanPenawaran)
|
||||
{
|
||||
return view('lpj::persetujuan_penawaran.edit', compact('persetujuanPenawaran'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*/
|
||||
public function update(PersetujuanPenawaranRequest $request, PersetujuanPenawaran $persetujuanPenawaran)
|
||||
{
|
||||
$validated = $request->validated();
|
||||
$validated['updated_by'] = Auth::id();
|
||||
|
||||
$persetujuanPenawaran->update($validated);
|
||||
|
||||
return redirect()
|
||||
->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran updated successfully');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(PersetujuanPenawaran $persetujuanPenawaran)
|
||||
{
|
||||
$persetujuanPenawaran->delete();
|
||||
|
||||
return redirect()
|
||||
->route('persetujuan-penawaran.index')->with('success', 'Persetujuan Penawaran deleted successfully');
|
||||
}
|
||||
|
||||
public function dataForDatatables(Request $request)
|
||||
{
|
||||
if (is_null($this->user) || !$this->user->can('persetujuan_penawaran.view')) {
|
||||
//abort(403, 'Sorry! You are not allowed to view persetujuan penawaran.');
|
||||
}
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = Permohonan::query()->where(['status' => 'persetujuan-penawaran']);
|
||||
|
||||
// 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%");
|
||||
});
|
||||
}
|
||||
|
||||
// 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(['debiture','penawaranTender.detail'])->get();
|
||||
|
||||
// Calculate the page count
|
||||
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||
|
||||
// Calculate the current page number
|
||||
$currentPage = $request->get('page', 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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,10 @@ use Modules\Lpj\Models\Lantai;
|
||||
use Modules\Lpj\Models\Inspeksi;
|
||||
use Modules\Lpj\Models\ViewUnit;
|
||||
use Modules\Lpj\Models\ObjekJaminan;
|
||||
use Modules\Lpj\Models\ModelAlatBerat;
|
||||
use Modules\Lpj\Models\JenisPesawat;
|
||||
use Modules\Lpj\Models\JenisKapal;
|
||||
use Modules\Lpj\Models\JenisKendaraan;
|
||||
use Modules\Lpj\Models\RuteJaminan;
|
||||
use Modules\Lpj\Models\AnalisaUnit;
|
||||
use Modules\Lpj\Models\GolonganMasySekitar;
|
||||
@@ -48,6 +52,8 @@ use Modules\Lpj\Models\LaluLintasLokasi;
|
||||
use Modules\Lpj\Models\SpekBagunanAnalisaDetail;
|
||||
use Modules\Lpj\Http\Requests\SurveyorRequest;
|
||||
use Modules\Lpj\Http\Requests\FormSurveyorRequest;
|
||||
use Modules\Lpj\Emails\SendEmail;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
class SurveyorController extends Controller
|
||||
{
|
||||
@@ -93,6 +99,10 @@ class SurveyorController extends Controller
|
||||
$spekBangunan = SpekBangunan::all();
|
||||
$saranaPelengkap = SaranaPelengkap::all();
|
||||
$arahMataAngin = ArahMataAngin::all();
|
||||
$jenisKendaraan = JenisKendaraan::all();
|
||||
$jenisKapal = JenisKapal::all();
|
||||
$jenisPesawat = JenisPesawat::all();
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
|
||||
|
||||
|
||||
@@ -146,7 +156,11 @@ class SurveyorController extends Controller
|
||||
'forminspeksi',
|
||||
'formDenah',
|
||||
'formFoto',
|
||||
'jaminanId'
|
||||
'jaminanId',
|
||||
'jenisKendaraan',
|
||||
'jenisKapal',
|
||||
'jenisPesawat',
|
||||
'modelAlatBerat'
|
||||
));
|
||||
}
|
||||
/**
|
||||
@@ -167,7 +181,7 @@ class SurveyorController extends Controller
|
||||
$rules = $this->getActionSpecificRules($data, $action, $request);
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) {
|
||||
if ($inspeksi) {
|
||||
$inspeksi->update(['data_form' => json_encode($rules)]);
|
||||
} else {
|
||||
Inspeksi::create([
|
||||
@@ -210,7 +224,7 @@ class SurveyorController extends Controller
|
||||
foreach ($pisah as $act) {
|
||||
if (isset($allRules[$act])) {
|
||||
$rules = array_merge($rules, $allRules[$act]);
|
||||
if ($act == 'tanah' || $act == 'bangunan') {
|
||||
if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') {
|
||||
$hasAssetDescriptionRules = true;
|
||||
}
|
||||
}
|
||||
@@ -226,7 +240,6 @@ class SurveyorController extends Controller
|
||||
|
||||
public function storeDenah(Request $request)
|
||||
{
|
||||
|
||||
try {
|
||||
$validatedData = $request->validate([
|
||||
'foto_denah' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
||||
@@ -237,31 +250,33 @@ class SurveyorController extends Controller
|
||||
|
||||
$validatedData['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah');
|
||||
|
||||
|
||||
$formatJsonDenah = [
|
||||
'foto_denah' => $validatedData['foto_denah'],
|
||||
'luas' => $validatedData['luas'],
|
||||
];
|
||||
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) {
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
||||
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
|
||||
->first();
|
||||
|
||||
if ($inspeksi) {
|
||||
$inspeksi->update([
|
||||
'denah_form' => json_encode($formatJsonDenah)
|
||||
]);
|
||||
} else {
|
||||
Inspeksi::create([
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'denah_form' => json_encode($formatFotojson)
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id'),
|
||||
'denah_form' => json_encode($formatJsonDenah)
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json(['success' => true, 'message' => 'Data berhasil disimpan',
|
||||
'data' => $formatJsonDenah], 200);
|
||||
'data' => $formatJsonDenah], 200);
|
||||
} catch (Exception $e) {
|
||||
return response()->json(['success' => false, 'message' => 'Data gagal disimpan: ' . $e->getMessage()], 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -368,20 +383,22 @@ class SurveyorController extends Controller
|
||||
,'foto_lantai_unit' => $foto_lantai_unit,
|
||||
'foto_lantai_lainnya' => $foto_lantai_lainnya,
|
||||
'foto_rute_lainnya' => $foto_rute_lainnya,
|
||||
'basement' => $basement,
|
||||
'gerbang' => $gerbang,
|
||||
'foto_basement' => $basement,
|
||||
'foto_gerbang' => $gerbang,
|
||||
'pendamping' => $pendamping
|
||||
];
|
||||
|
||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))->first();
|
||||
if ($request->input('permohonan_id') == $inspeksi->permohonan_id && $request->input('jenis_jaminan_id') == $inspeksi->jenis_jaminan_id) {
|
||||
|
||||
if ($inspeksi) {
|
||||
$inspeksi->update([
|
||||
'foto_form' => json_encode($formatFotojson)
|
||||
]);
|
||||
} else {
|
||||
Inspeksi::create([
|
||||
'permohonan_id' => $request->input('permohonan_id'),
|
||||
'foto_form' => json_encode($formatFotojson)
|
||||
'foto_form' => json_encode($formatFotojson),
|
||||
'jenis_jaminan_id' => $request->input('jenis_jaminan_id')
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -391,19 +408,21 @@ class SurveyorController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function submitSurveyor($id,$jaminanId)
|
||||
|
||||
|
||||
public function submitSurveyor($id)
|
||||
{
|
||||
try {
|
||||
$cekButton = $this->checkButtonStatus($id)->getData();
|
||||
if (!$cekButton->buttonDisable) {
|
||||
// $cekButton = $this->checkButtonStatus($id);
|
||||
// if (!$cekButton->buttonDisable) {
|
||||
$permohonan = Permohonan::find($id);
|
||||
$permohonan->update([
|
||||
'status' => 'done',
|
||||
]);
|
||||
return response()->json(['success' => true, 'message' => 'Form surveyor submitted successfully'], 200);
|
||||
} else {
|
||||
return response()->json(['error' => 'Something went wrong'], 400);
|
||||
}
|
||||
// } else {
|
||||
// return response()->json(['error' => 'Something went wrong'], 400);
|
||||
// }
|
||||
} catch (Exception $e) {
|
||||
return response()->json(['error' => 'Something went wrong', 'message' => $e->getMessage()], 500);
|
||||
}
|
||||
@@ -436,7 +455,11 @@ class SurveyorController extends Controller
|
||||
return response()->json(['buttonDisable' => true]);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return response()->json(['buttonDisable' => true]);
|
||||
// return response()->json(['buttonDisable' => true]);
|
||||
return response()->json([
|
||||
'error' => 'Something went wrong',
|
||||
'message' => $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -445,35 +468,40 @@ class SurveyorController extends Controller
|
||||
public function storeJadwal(Request $request)
|
||||
{
|
||||
try {
|
||||
|
||||
$validate = $request->validate([
|
||||
'id' => 'required',
|
||||
'waktu_penilaian' => 'required',
|
||||
'deskripsi_penilaian' => 'required'
|
||||
]);
|
||||
|
||||
// return response()->json([
|
||||
// 'daa'=>$validate
|
||||
// ]);
|
||||
// $user = ['user' => 'rustammajid76@gmail.com'];
|
||||
|
||||
// $emailData = [
|
||||
// 'email' => 'rustammajid76@gmail.com',
|
||||
// 'subject' => 'Test',
|
||||
// 'emailData' => '<h2>Hello, World!</h2><h2>This is the email content. Waktu Penilaian:</h2>'
|
||||
// ];
|
||||
|
||||
// $this->sendMessage($emailData, $user);
|
||||
|
||||
$id = $request->input('id');
|
||||
$penilaian = Penilaian::findOrFail($id);
|
||||
|
||||
$penilaian->update([
|
||||
'waktu_penilaian' => $validate['waktu_penilaian'],
|
||||
'deskripsi_penilaian' => $validate['deskripsi_penilaian'],
|
||||
|
||||
]);
|
||||
|
||||
return redirect()
|
||||
->route('surveyor.index')
|
||||
->with('success', 'Jadwal berhasil dibuat.');
|
||||
} catch (\Exception $e) {
|
||||
return redirect()
|
||||
->route('surveyor.index')
|
||||
->with('error', 'Gagal membuat jadwal: ' . $e->getMessage());
|
||||
return response()->json(['buttonDisable' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function storeAproved($id)
|
||||
{
|
||||
try {
|
||||
@@ -534,7 +562,10 @@ class SurveyorController extends Controller
|
||||
$tingkatKeramaian = TingkatKeramaian::all();
|
||||
$laluLintasLokasi = LaluLintasLokasi::all();
|
||||
$perkerasanJalan = PerkerasanJalan::all();
|
||||
|
||||
$jenisKendaraan = JenisKendaraan::all();
|
||||
$jenisKapal = JenisKapal::all();
|
||||
$jenisPesawat = JenisPesawat::all();
|
||||
$modelAlatBerat = ModelAlatBerat::all();
|
||||
|
||||
// return response()->json([
|
||||
// 'per'=>
|
||||
@@ -571,7 +602,11 @@ class SurveyorController extends Controller
|
||||
'laluLintasLokasi',
|
||||
'perkerasanJalan',
|
||||
'link_url_region',
|
||||
'forminspeksi'
|
||||
'forminspeksi',
|
||||
'jenisKendaraan',
|
||||
'jenisKapal',
|
||||
'jenisPesawat',
|
||||
'modelAlatBerat'
|
||||
));
|
||||
}
|
||||
|
||||
@@ -628,7 +663,7 @@ class SurveyorController extends Controller
|
||||
* Data pembanding.
|
||||
*/
|
||||
|
||||
public function dataPembanding($id)
|
||||
public function dataPembanding($id, $jaminanId)
|
||||
{
|
||||
$permohonan = Permohonan::with(
|
||||
[
|
||||
@@ -646,7 +681,16 @@ class SurveyorController extends Controller
|
||||
$branches = Branch::all();
|
||||
$provinces = Province::all();
|
||||
|
||||
return view('lpj::surveyor.detail', compact('permohonan', 'surveyor', 'branches', 'provinces'));
|
||||
|
||||
$inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||
$forminspeksi = null;
|
||||
if ($inpeksi) {
|
||||
$forminspeksi = $inpeksi;
|
||||
// $forminspeksi = json_decode($inpeksi->data_form, true);
|
||||
}
|
||||
|
||||
// return response()->json($forminspeksi);
|
||||
return view('lpj::surveyor.components.data-pembanding', compact('permohonan', 'surveyor', 'branches', 'provinces','forminspeksi'));
|
||||
}
|
||||
|
||||
|
||||
@@ -731,6 +775,10 @@ class SurveyorController extends Controller
|
||||
'lantai-unit' => ['Lantai Unit', 'lantai-unit', Lantai::class],
|
||||
'view-unit' => ['View Unit', 'view-unit', ViewUnit::class],
|
||||
'gol-mas-sekitar' => ['Golongan Masyarakat Sekitar', 'gol-mas-sekitar', GolonganMasySekitar::class],
|
||||
'jenis-pesawat' => ['Jenis Pasawat', 'jenis-pesawat', JenisPesawat::class],
|
||||
'model-alat-berat' => ['Model Alat Berat', 'model-alat-berat', ModelAlatBerat::class],
|
||||
'jenis-kapal' => ['Jenis Kapal', 'jenis-kapal', JenisKapal::class],
|
||||
'jenis-kendaraan' => ['Jenis Kendaraan', 'jenis-kendaraan', JenisKendaraan::class],
|
||||
];
|
||||
|
||||
|
||||
@@ -878,7 +926,11 @@ class SurveyorController extends Controller
|
||||
'Golongan Masyarakat Sekitar' => GolonganMasySekitar::class,
|
||||
'Lantai Unit' => Lantai::class,
|
||||
'View Unit' => ViewUnit::class,
|
||||
'Perkerasan jalan' => PerkerasanJalan::class
|
||||
'Perkerasan jalan' => PerkerasanJalan::class,
|
||||
'Jenis pesawat' => JenisPesawat::class,
|
||||
'Model alat berat' => ModelAlatBerat::class,
|
||||
'Jenis kapal' => JenisKapal::class,
|
||||
'Jenis kendaraan' => JenisKendaraan::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -1011,6 +1063,10 @@ class SurveyorController extends Controller
|
||||
'spek-bangunan' => SpekBangunan::class,
|
||||
'lantai-unit' => Lantai::class,
|
||||
'view-unit' => ViewUnit::class,
|
||||
'jenis-pesawat' => JenisPesawat::class,
|
||||
'model-alat-berat' => ModelAlatBerat::class,
|
||||
'jenis-kapal' => JenisKapal::class,
|
||||
'jenis-kendaraan' => JenisKendaraan::class,
|
||||
];
|
||||
|
||||
|
||||
@@ -1038,6 +1094,10 @@ class SurveyorController extends Controller
|
||||
'golMasySekitar' => GolonganMasySekitar::all(),
|
||||
'tingkatKeramaian' => TingkatKeramaian::all(),
|
||||
'laluLintasLokasi' => LaluLintasLokasi::all(),
|
||||
'jenisPesawat' => JenisPesawat::all(),
|
||||
'modelAlatBerat' => ModelAlatBerat::all(),
|
||||
'jenisKapal' => JenisKapal::all(),
|
||||
'jenisKendaraan' => JenisKendaraan::all(),
|
||||
|
||||
];
|
||||
}
|
||||
@@ -1060,8 +1120,12 @@ class SurveyorController extends Controller
|
||||
'spek-bangunan' => ['Spek Bangunan', 'spek-bangunan'],
|
||||
'lantai-unit' => ['Lantai Unit', 'lantai-unit'],
|
||||
'view-unit' => ['View Unit', 'view-unit'],
|
||||
'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan']
|
||||
];
|
||||
'perkerasan-jalan' => ['Perkerasan jalan', 'perkerasan-jalan'],
|
||||
'jenis-pesawat' => ['Jenis pesawat', 'jenis-pesawat'],
|
||||
'model-alat-berat' => ['Model alat berat', 'model-alat-berat'],
|
||||
'jenis-kapal' => ['Jenis kapal', 'jenis-kapal'],
|
||||
'jenis-kendaraan' => ['Jenis kendaraan', 'jenis-kendaraan'],
|
||||
];
|
||||
|
||||
private function getAssetData($data)
|
||||
{
|
||||
@@ -1107,14 +1171,25 @@ class SurveyorController extends Controller
|
||||
|
||||
private function getBangunanData($data, $request): array
|
||||
{
|
||||
// $kategori_bangunan = [];
|
||||
// if ($request->has('spek_kategori_bagunan')) {
|
||||
// foreach ($request->input('spek_kategori_bagunan', []) as $value) {
|
||||
// $kategori_bangunan[] = [
|
||||
// 'value' => [
|
||||
// 'data' => $data['spek_bangunan'] ?? [],
|
||||
// ],
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
|
||||
return [
|
||||
'luas_tanah_bagunan' => $data['luas_tanah_bagunan'] ?? null,
|
||||
'jenis_bangunan' => $data['jenis_bangunan'] ?? null,
|
||||
'kondisi_bangunan' => $data['kondisi_bangunan'] ?? null,
|
||||
'sifat_bangunan' => $data['sifat_bangunan'] ?? null,
|
||||
'sifat_bangunan_input' => $data['sifat_bagunan_input'] ?? null,
|
||||
'sifat_bangunan_input' => $data['sifat_bangunan_input'] ?? null,
|
||||
'spek_kategori_bagunan' => $data['spek_kategori_bagunan'] ?? null,
|
||||
'spek_bangunan' => $data['spek_bangunan'] ?? null,
|
||||
'spek_bangunan' => $data['spek_bangunan'] ?? [],
|
||||
'sarana_pelengkap' => $data['sarana_pelengkap'] ?? [],
|
||||
'sarana_pelengkap_input' => $data['sarana_pelengkap_input'] ?? null,
|
||||
];
|
||||
@@ -1154,6 +1229,7 @@ class SurveyorController extends Controller
|
||||
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
||||
'rute_menuju' => $data['rute_menuju'] ?? null,
|
||||
'batas_batas' => $data['batas_batas'] ?? null,
|
||||
'batas_batas_input' => $data['batas_batas_input'] ?? null,
|
||||
'kondisi_lingkungan' => $data['kondisi_lingkungan'] ?? null,
|
||||
'kondisi_lain_bangunan' => $data['kondisi_lain_bangunan'] ?? null,
|
||||
'informasi_dokument' => $data['informasi_dokument'] ?? null,
|
||||
@@ -1210,47 +1286,361 @@ class SurveyorController extends Controller
|
||||
unlink($fullPath);
|
||||
}
|
||||
}
|
||||
private function getKapalData($data): array
|
||||
|
||||
|
||||
private function getKapalData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
'action' => $data['action'] ?? null,
|
||||
'nama_wakil_debitur' => $data['nama_wakil_debitur'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
'dermaga' => $data['dermaga'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_madya' => $data['kota_madya'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'jenis' => $data['jenis'] ?? null,
|
||||
'size' => $data['size'] ?? null,
|
||||
'kondisi' => $data['kondisi'] ?? null,
|
||||
'klasifikasi' => $data['klasifikasi'] ?? null,
|
||||
|
||||
'nama_kapal' => $data['nama_kapal'] ?? null,
|
||||
'pemilik_kapal' => $data['pemilik_kapal'] ?? null,
|
||||
'bendera' => $data['bendera'] ?? null,
|
||||
'nomor_selar' => $data['nomor_selar'] ?? null,
|
||||
'kapal' => $data['kapal'] ?? null,
|
||||
'galangan_kapal' => $data['galangan_kapal'] ?? null,
|
||||
'kapal_shipyard' => $data['kapal_shipyard'] ?? null,
|
||||
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
||||
'tahun_launcing' => $data['tahun_launcing'] ?? null,
|
||||
'dwt' => $data['dwt'] ?? null,
|
||||
'lwt' => $data['lwt'] ?? null,
|
||||
'gross_tonnage' => $data['gross_tonnage'] ?? null,
|
||||
'net_tonnage' => $data['net_tonnage'] ?? null,
|
||||
'tenaga_mesin' => $data['tenaga_mesin'] ?? null,
|
||||
'loa' => $data['loa'] ?? null,
|
||||
'lbp' => $data['lbp'] ?? null,
|
||||
'beam' => $data['beam'] ?? null,
|
||||
'depth' => $data['depth'] ?? null,
|
||||
'draft' => $data['draft'] ?? null,
|
||||
|
||||
'lambung_kapal' => $data['lambung_kapal'] ?? null,
|
||||
'dek' => $data['dek'] ?? null,
|
||||
'struktur_rangka' => $data['struktur_rangka'] ?? null,
|
||||
'palka' => $data['palka'] ?? null,
|
||||
'pondasi_mesin' => $data['pondasi_mesin'] ?? null,
|
||||
'area_mesin' => $data['area_mesin'] ?? null,
|
||||
'cat_dan_korosi' => $data['cat_dan_korosi'] ?? null,
|
||||
'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null,
|
||||
'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null,
|
||||
|
||||
'sekoci' => $data['sekoci'] ?? null,
|
||||
'jaket_pelampung' => $data['jaket_pelampung'] ?? null,
|
||||
'alat_pemadaman' => $data['alat_pemadaman'] ?? null,
|
||||
'rambu_darurat' => $data['rambu_darurat'] ?? null,
|
||||
'sistem_alarm' => $data['sistem_alarm'] ?? null,
|
||||
'sistem_pencegah' => $data['sistem_pencegah'] ?? null,
|
||||
'kebakaran' => $data['kebakaran'] ?? null,
|
||||
'lampu_darurat' => $data['lampu_darurat'] ?? null,
|
||||
'deskripsi_peralatan' => $data['deskripsi_peralatan'] ?? null,
|
||||
|
||||
'gps' => $data['gps'] ?? null,
|
||||
'radar' => $data['radar'] ?? null,
|
||||
'radio_komunikasi' => $data['radio_komunikasi'] ?? null,
|
||||
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
||||
'sistem_kendali_otomatis' => $data['sistem_kendali_otomatis'] ?? null,
|
||||
'kompas' => $data['kompas'] ?? null,
|
||||
'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null,
|
||||
|
||||
'mesin_utama' => $data['mesin_utama'] ?? null,
|
||||
'mesin_bantu' => $data['mesin_bantu'] ?? null,
|
||||
'pompa_pendingin' => $data['pompa_pendingin'] ?? null,
|
||||
'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null,
|
||||
'propeller' => $data['propeller'] ?? null,
|
||||
'sistem_kelistrikan' => $data['sistem_kelistrikan'] ?? null,
|
||||
'deskripsi_mesin_penggerak' => $data['deskripsi_mesin_penggerak'] ?? null,
|
||||
|
||||
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
||||
'sistem_penerangan' => $data['sistem_penerangan'] ?? null,
|
||||
'sistem_panel_distribusi' => $data['sistem_panel_distribusi'] ?? null,
|
||||
'kabel_perangkat' => $data['kabel_perangkat'] ?? null,
|
||||
'deskripsi_kelistrikan' => $data['deskripsi_kelistrikan'] ?? null,
|
||||
|
||||
'kebersihan_dek_luar' => $data['kebersihan_dek_luar'] ?? null,
|
||||
'tangki_limbah' => $data['tangki_limbah'] ?? null,
|
||||
'sistem_pengelolaan_limbah' => $data['sistem_pengelolaan_limbah'] ?? null,
|
||||
'pengelolaan_air_ballast' => $data['pengelolaan_air_ballast'] ?? null,
|
||||
'deskripsi_kebersihan' => $data['deskripsi_kebersihan'] ?? null,
|
||||
|
||||
'fakta_positif' => $data['fakta_positif'] ?? null,
|
||||
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
||||
'analisa_makro' => $data['analisa_makro'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
];
|
||||
}
|
||||
public function getKendaraanData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'action' => $data['action'] ?? null,
|
||||
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
||||
'nama_wakil' => $data['nama_wakil'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
'nama_jalan' => $data['nama_jalan'] ?? null,
|
||||
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
||||
'blok_nomor' => $data['blok_nomor'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_madya' => $data['kota_madya'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'kondisi' => $data['kondisi'] ?? null,
|
||||
'nomor_polisi' => $data['nomor_polisi'] ?? null,
|
||||
'nomor_polis_tidak_sesuai' => $data['nomor_polis_tidak_sesuai'] ?? null,
|
||||
'merek' => $data['merek'] ?? null,
|
||||
'merek_tidak_sesuai' => $data['merek_tidak_sesuai'] ?? null,
|
||||
'warna' => $data['warna'] ?? null,
|
||||
'warna_tidak_sesuai' => $data['warna_tidak_sesuai'] ?? null,
|
||||
'nomor_rangka' => $data['nomor_rangka'] ?? null,
|
||||
'nomor_rangka_tidak_sesuai' => $data['nomor_rangka_tidak_sesuai'] ?? null,
|
||||
'nomor_mesin' => $data['nomor_mesin'] ?? null,
|
||||
'nomor_mesin_tidak_sesuai' => $data['nomor_mesin_tidak_sesuai'] ?? null,
|
||||
'posisi_kilometer' => $data['posisi_kilometer'] ?? null,
|
||||
'transmisi' => $data['transmisi'] ?? null,
|
||||
|
||||
|
||||
'mesin_panel_instrument' => $data['mesin_panel_instrument'] ?? null,
|
||||
'fungsi_mesin_panel_instrument' => $data['fungsi_mesin_panel_instrument'] ?? null,
|
||||
'interior' => $data['interior'] ?? null,
|
||||
'interior' => $data['interior'] ?? null,
|
||||
|
||||
'jumlah_pintu' => $data['jumlah_pintu'] ?? null,
|
||||
'rangka_karoseri' => $data['rangka_karoseri'] ?? null,
|
||||
'ban' => $data['ban'] ?? null,
|
||||
'velg' => $data['velg'] ?? null,
|
||||
'bamper_depan' => $data['bamper_depan'] ?? null,
|
||||
'bamper_belakang' => $data['bamper_belakang'] ?? null,
|
||||
'lampu_depan' => $data['lampu_depan'] ?? null,
|
||||
'lampu_belakang' => $data['lampu_belakang'] ?? null,
|
||||
'kaca_kendaraan' => $data['kaca_kendaraan'] ?? null,
|
||||
'air_conditioner' => $data['air_conditioner'] ?? null,
|
||||
'tape_radio_cd' => $data['tape_radio_cd'] ?? null,
|
||||
'sensor_parkir' => $data['sensor_parkir'] ?? null,
|
||||
'sensor_camera_recorder' => $data['sensor_camera_recorder'] ?? null,
|
||||
'lcd' => $data['lcd'] ?? null,
|
||||
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
|
||||
'airbag' => $data['airbag'] ?? null,
|
||||
'asuransi' => $data['asuransi'] ?? null,
|
||||
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
|
||||
'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
|
||||
|
||||
|
||||
'fakta_positif' => $data['fakta_positif'] ?? null,
|
||||
'fakta_negatif' => $data['fakta_negatif'] ?? null,
|
||||
'analisa_makro' => $data['analisa_makro'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
private function getKendaraanData($data): array
|
||||
public function getMesinData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
'action' => $data['action'] ?? null,
|
||||
'nama_wakil' => $data['nama_wakil'] ?? null,
|
||||
'nama_jalan' => $data['nama_jalan'] ?? null,
|
||||
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
||||
'blok' => $data['blok'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_madya' => $data['kota_madya'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
'tipe_model' => $data['tipe_model'] ?? null,
|
||||
'merek' => $data['merek'] ?? null,
|
||||
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
||||
'negara_pembuat' => $data['negara_pembuat'] ?? null,
|
||||
'kondisi_mesin' => $data['kondisi_mesin'] ?? null,
|
||||
'faktor_positif' => $data['faktor_positif'] ?? null,
|
||||
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
private function getMesinData($data): array
|
||||
public function getAlatBeratData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
'action' => $data['action'] ?? null,
|
||||
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
||||
'nama_wakil' => $data['nama_wakil'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
'dengan_wadeb' => $data['dengan_wadeb'] ?? null,
|
||||
'nama_jalan' => $data['nama_jalan'] ?? null,
|
||||
'perumahan_gang' => $data['perumahan_gang'] ?? null,
|
||||
'blok' => $data['blok'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_madya' => $data['kota_madya'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
'jenis_model' => $data['jenis_model'] ?? null,
|
||||
'nomor_lambung' => $data['nomor_lambung'] ?? null,
|
||||
'model_unit' => $data['model_unit'] ?? null,
|
||||
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
||||
'merk' => $data['merk'] ?? null,
|
||||
'negara_pembuat' => $data['negara_pembuat'] ?? null,
|
||||
'tahun_pembelian' => $data['tahun_pembelian'] ?? null,
|
||||
'nomor_faktur' => $data['nomor_faktur'] ?? null,
|
||||
'nomor_kontrak' => $data['nomor_kontrak'] ?? null,
|
||||
'nama_pemilik' => $data['nama_pemilik'] ?? null,
|
||||
'alamat_pemilik' => $data['alamat_pemilik'] ?? null,
|
||||
'nomor_asuransi' => $data['nomor_asuransi'] ?? null,
|
||||
'nomor_rangka' => $data['nomor_rangka'] ?? null,
|
||||
'nomor_mesin' => $data['nomor_mesin'] ?? null,
|
||||
'hour_mesters' => $data['hour_mesters'] ?? null,
|
||||
'overhaul_mesin' => $data['overhaul_mesin'] ?? null,
|
||||
|
||||
'mesin_panel' => $data['mesin_panel'] ?? null,
|
||||
'fungsi_panel' => $data['fungsi_panel'] ?? null,
|
||||
'interior' => $data['interior'] ?? null,
|
||||
'rangka_Karoseri' => $data['rangka_Karoseri'] ?? null,
|
||||
'ban' => $data['ban'] ?? null,
|
||||
'velg' => $data['velg'] ?? null,
|
||||
'air_conditioner' => $data['air_conditioner'] ?? null,
|
||||
'aksesoris' => $data['aksesoris'] ?? null,
|
||||
'lcd' => $data['lcd'] ?? null,
|
||||
'perlengkapan' => $data['perlengkapan'] ?? null,
|
||||
'asuransi' => $data['asuransi'] ?? null,
|
||||
'perusahaan_asuransi' => $data['perusahaan_asuransi'] ?? null,
|
||||
'tahun_berakhir' => $data['tahun_berakhir'] ?? null,
|
||||
'sensor_kamera' => $data['sensor_kamera'] ?? null,
|
||||
'sabuk_keselamatan' => $data['sabuk_keselamatan'] ?? null,
|
||||
'air_bag' => $data['air_bag'] ?? null,
|
||||
|
||||
'faktor_positif' => $data['faktor_positif'] ?? null,
|
||||
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
private function getPesawatData($data): array
|
||||
private function getPesawatData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
'action' => $data['action'] ?? null,
|
||||
'tanggal_survey' => $data['tanggal_survey'] ?? null,
|
||||
'nama_wakil' => $data['nama_wakil'] ?? null,
|
||||
'hub_calon_debitur' => $data['hub_calon_debitur'] ?? null,
|
||||
'bandara' => $data['bandara'] ?? null,
|
||||
'desa_kelurahan' => $data['desa_kelurahan'] ?? null,
|
||||
'kecamatan' => $data['kecamatan'] ?? null,
|
||||
'kota_madya' => $data['kota_madya'] ?? null,
|
||||
'provinsi' => $data['provinsi'] ?? null,
|
||||
|
||||
'jenis_pesawat' => $data['jenis_pesawat'] ?? null,
|
||||
'size' => $data['size'] ?? null,
|
||||
'kondisi' => $data['kondisi'] ?? null,
|
||||
'nama_pesawat' => $data['nama_pesawat'] ?? null,
|
||||
'model' => $data['model'] ?? null,
|
||||
'nomor_registrasi' => $data['nomor_registrasi'] ?? null,
|
||||
'tahun_pembuatan' => $data['tahun_pembuatan'] ?? null,
|
||||
'certificate_of_airworthines' => $data['certificate_of_airworthines'] ?? null,
|
||||
'certificate_of_registration' => $data['certificate_of_registration'] ?? null,
|
||||
'total_service_hours' => $data['total_service_hours'] ?? null,
|
||||
'total_service_cycles' => $data['total_service_cycles'] ?? null,
|
||||
|
||||
'last_a_check' => $data['last_a_check'] ?? null,
|
||||
'next_a_check' => $data['next_a_check'] ?? null,
|
||||
'last_b_check' => $data['last_b_check'] ?? null,
|
||||
'next_b_check' => $data['next_b_check'] ?? null,
|
||||
'last_c_check' => $data['last_c_check'] ?? null,
|
||||
'next_c_check' => $data['next_c_check'] ?? null,
|
||||
'next_d_check' => $data['next_d_check'] ?? null,
|
||||
'last_d_check' => $data['last_d_check'] ?? null,
|
||||
'deskripsi_maintenence' => $data['deskripsi_maintenence'] ?? null,
|
||||
|
||||
'instrument_landing_system' => $data['instrument_landing_system'] ?? null,
|
||||
'traffic_collision_avoidance_system' => $data['traffic_collision_avoidance_system'] ?? null,
|
||||
'windshear' => $data['windshear'] ?? null,
|
||||
'electronic_flight' => $data['electronic_flight'] ?? null,
|
||||
'winglets' => $data['winglets'] ?? null,
|
||||
'deskripsi_konfigurasi' => $data['deskripsi_konfigurasi'] ?? null,
|
||||
|
||||
'maksimal_penumpang' => $data['maksimal_penumpang'] ?? null,
|
||||
'jumlah_kursi' => $data['jumlah_kursi'] ?? null,
|
||||
'kursi_pramugari_pramugara' => $data['kursi_pramugari_pramugara'] ?? null,
|
||||
'kartu_fitur_keselamatan' => $data['kartu_fitur_keselamatan'] ?? null,
|
||||
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
|
||||
'lampu_kabin' => $data['lampu_kabin'] ?? null,
|
||||
'lampu_pintu_keluar' => $data['lampu_pintu_keluar'] ?? null,
|
||||
'intercom_kabin' => $data['intercom_kabin'] ?? null,
|
||||
'deskripsi_kabin' => $data['deskripsi_kabin'] ?? null,
|
||||
|
||||
'badan_pesawat' => $data['badan_pesawat'] ?? null,
|
||||
'sayap_pesawat' => $data['sayap_pesawat'] ?? null,
|
||||
'ekor_pesawat' => $data['ekor_pesawat'] ?? null,
|
||||
'landing_gear' => $data['landing_gear'] ?? null,
|
||||
'sistem_pengelasan' => $data['sistem_pengelasan'] ?? null,
|
||||
'deskripsi_struktur' => $data['deskripsi_struktur'] ?? null,
|
||||
|
||||
'gps' => $data['gps'] ?? null,
|
||||
'radar' => $data['radar'] ?? null,
|
||||
'radio_komunikasi' => $data['radio_komunikasi'] ?? null,
|
||||
'lampu_navigasi' => $data['lampu_navigasi'] ?? null,
|
||||
'sistem_autopilot' => $data['sistem_autopilot'] ?? null,
|
||||
'deskripsi_navigasi' => $data['deskripsi_navigasi'] ?? null,
|
||||
|
||||
'tangki_bahan_bakar' => $data['tangki_bahan_bakar'] ?? null,
|
||||
'saluran_pipa_bahan_bakar' => $data['saluran_pipa_bahan_bakar'] ?? null,
|
||||
'pompa_bahan_bakar' => $data['pompa_bahan_bakar'] ?? null,
|
||||
'sistem_hidrolik_utama' => $data['sistem_hidrolik_utama'] ?? null,
|
||||
'sistem_pendigin_hidrolik' => $data['sistem_pendigin_hidrolik'] ?? null,
|
||||
'deskripsi_hidrolik' => $data['deskripsi_hidrolik'] ?? null,
|
||||
|
||||
'mesin_utama' => $data['mesin_utama'] ?? null,
|
||||
'sistem_pendorong' => $data['sistem_pendorong'] ?? null,
|
||||
'sistem_pendigin_mesin' => $data['sistem_pendigin_mesin'] ?? null,
|
||||
'sistem_pelumasan' => $data['sistem_pelumasan'] ?? null,
|
||||
'filter_dan_perangkat_pendukung' => $data['filter_dan_perangkat_pendukung'] ?? null,
|
||||
'deskripsi_kondisi_mesin' => $data['deskripsi_kondisi_mesin'] ?? null,
|
||||
|
||||
'jaket_pelampung' => $data['jaket_pelampung'] ?? null,
|
||||
'pintu_darurat' => $data['pintu_darurat'] ?? null,
|
||||
'alat_pemadaman_kebakaran' => $data['alat_pemadaman_kebakaran'] ?? null,
|
||||
'sistem_alaram_darurat' => $data['sistem_alaram_darurat'] ?? null,
|
||||
'sekoci' => $data['sekoci'] ?? null,
|
||||
'masker_oxigen' => $data['masker_oxigen'] ?? null,
|
||||
'sabuk_pengaman' => $data['sabuk_pengaman'] ?? null,
|
||||
'deskripsi_fungsi_keselamatan' => $data['deskripsi_fungsi_keselamatan'] ?? null,
|
||||
|
||||
'sistem_ventilasi_ac' => $data['sistem_ventilasi_ac'] ?? null,
|
||||
'sistem_penerangan_kabin' => $data['sistem_penerangan_kabin'] ?? null,
|
||||
'panel_informasi_penumpang' => $data['panel_informasi_penumpang'] ?? null,
|
||||
'sistem_hiburan_kabin' => $data['sistem_hiburan_kabin'] ?? null,
|
||||
'deskripsi_Interior' => $data['deskripsi_Interior'] ?? null,
|
||||
|
||||
// Validasi untuk faktor dan kesimpulan
|
||||
'faktor_positif' => $data['faktor_positif'] ?? null,
|
||||
'faktor_negatif' => $data['faktor_negatif'] ?? null,
|
||||
'kesimpulan' => $data['kesimpulan'] ?? null,
|
||||
'catatan' => $data['catatan'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
private function getAlatBeratData($data): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
private function getUnitData($data): array
|
||||
private function getUnitData($data, $request): array
|
||||
{
|
||||
return [
|
||||
'keterangan' => $data['keterangan']
|
||||
'action' => $data['action'] ?? null,
|
||||
'luas_unit' => $data['luas_unit'] ?? null,
|
||||
'luas_unit_tidak_sesuai' => $data['luas_unit_tidak_sesuai'] ?? null,
|
||||
'jenis_unit' => $data['jenis_unit'] ?? null,
|
||||
'kondisi_unit' => $data['kondisi_unit'] ?? null,
|
||||
'posisi_unit' => $data['posisi_unit'] ?? null,
|
||||
'lantai' => $data['lantai'] ?? null,
|
||||
'view' => $data['view'] ?? null,
|
||||
'bentuk_unit' => $data['bentuk_unit'] ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ use Modules\Lpj\Exports\PenawaranTenderExport;
|
||||
use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
|
||||
use Modules\Lpj\Jobs\SendPenawaranKJPPTenderJob;
|
||||
use Modules\Lpj\Jobs\SendPenawaranTenderJob;
|
||||
use Modules\Lpj\Models\PenawaranEmailTenderLog;
|
||||
|
||||
class TenderController extends Controller
|
||||
{
|
||||
@@ -618,7 +619,9 @@ class TenderController extends Controller
|
||||
$penawaran = PenawaranTender::where('nomor_registrasi', '=', $noreg)->first();
|
||||
|
||||
// Retrieve data from the database
|
||||
$query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'emailTenderLog']);
|
||||
$query = PenawaranDetailTender::query()->where('penawaran_id', '=', $penawaran->id)->with(['kjpp', 'penawaran', 'penawaran.emailTenderLog']);
|
||||
|
||||
// dd($query);
|
||||
|
||||
// Apply sorting if provided
|
||||
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||
@@ -641,23 +644,8 @@ class TenderController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
// 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(['kjpp', 'penawaran', 'emailTenderLog'])->get();
|
||||
$data = $query->get();
|
||||
|
||||
// add column "No"
|
||||
$i = 0;
|
||||
@@ -670,20 +658,9 @@ class TenderController extends Controller
|
||||
$j++;
|
||||
}
|
||||
|
||||
// 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,
|
||||
]);
|
||||
}
|
||||
@@ -800,8 +777,6 @@ class TenderController extends Controller
|
||||
|
||||
$dp1 = PenawaranDetailTender::with('kjpp')->where('kjpp_rekanan_id', '=', $id)->first();
|
||||
|
||||
// dd($dp1->kjpp);
|
||||
|
||||
foreach ($permohonan->debiture->documents as $document) {
|
||||
$village_permohonan = $document->village_code;
|
||||
$district_permohonan = $document->district_code;
|
||||
@@ -814,21 +789,89 @@ class TenderController extends Controller
|
||||
$cities = City::where('code', $city_permohonan)->get();
|
||||
$provinces = Province::where('code', $province_permohonan)->get();
|
||||
|
||||
try {
|
||||
$balikan = SendPenawaranKJPPTenderJob::dispatch(
|
||||
$kjpps,
|
||||
$dp1,
|
||||
$penawaran,
|
||||
$permohonan,
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with('error', 'Email Penawaran Gagal Terkirim!');
|
||||
}
|
||||
$subject = 'Send Penawaran K J P P Email';
|
||||
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
|
||||
$body_pdf = view('lpj::penawaran.kirimEmailKJPP', [
|
||||
'dp1' => $dp1,
|
||||
'penawaran' => $penawaran,
|
||||
'permohonan' => $permohonan,
|
||||
'kjpps' => $kjpps,
|
||||
'villages' => $villages,
|
||||
'districts' => $districts,
|
||||
'cities' => $cities,
|
||||
'provinces' => $provinces
|
||||
])->render();
|
||||
|
||||
SendPenawaranKJPPTenderJob::dispatch(
|
||||
$kjpps,
|
||||
$dp1,
|
||||
$penawaran,
|
||||
$permohonan,
|
||||
$villages,
|
||||
$districts,
|
||||
$cities,
|
||||
$provinces
|
||||
);
|
||||
|
||||
try {
|
||||
// Proses log email
|
||||
foreach ($kjpps as $email) {
|
||||
// Cek apakah sudah ada log dengan status 'failed' untuk email ini
|
||||
$log = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
|
||||
->where('to_email', $email)
|
||||
->where('status', 'failed')
|
||||
->first();
|
||||
|
||||
$log1 = PenawaranEmailTenderLog::where('penawaran_id', $penawaran->id)
|
||||
->where('to_email', $email)
|
||||
->where('status', 'success')
|
||||
->first();
|
||||
|
||||
if ($log) {
|
||||
// Jika log ditemukan dan statusnya 'failed', update status menjadi 'success'
|
||||
$log->update([
|
||||
'status' => 'success',
|
||||
'error_message' => null, // Reset error_message saat status diubah menjadi success
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else if ($log1) {
|
||||
// Jika log ditemukan dan statusnya 'success' biarkan saja
|
||||
$log1->update([ // Reset error_message saat status diubah menjadi success
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
} else {
|
||||
// Jika tidak ada log gagal, buat log baru dengan status 'success'
|
||||
PenawaranEmailTenderLog::create([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'success',
|
||||
'error_message' => null, // Tidak ada error message
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->route('tender.penawaran.ulang.index')->with('success', 'Email Penawaran Berhasil Terkirim!');
|
||||
} catch (\Exception $e) {
|
||||
// Log email gagal
|
||||
foreach ($kjpps as $email) {
|
||||
PenawaranEmailTenderLog::create([
|
||||
'penawaran_id' => $penawaran->id,
|
||||
'kjpp' => $dp1->kjpp->code . ' | ' . $dp1->kjpp->name,
|
||||
'to_email' => $email,
|
||||
'subject' => $subject,
|
||||
'body_pdf' => $body_pdf,
|
||||
'status' => 'failed',
|
||||
'error_message' => $e->getMessage(),
|
||||
'created_at' => now(),
|
||||
'updated_at' => now(),
|
||||
]);
|
||||
}
|
||||
return redirect()->route('tender.penawaran.showKirimEmail', ['noreg' => $noreg])->with('error', 'Email Penawaran Gagal Terkirim!');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,8 +38,8 @@ class FormSurveyorRequest extends FormRequest
|
||||
'kapal' => $this->getKapalRules(),
|
||||
'kendaraan' => $this->getKendaraanRules(),
|
||||
'mesin' => $this->getMesinRules(),
|
||||
'pesawat' => $this->getLinkunganRules(),
|
||||
'alat-berat' => $this->getLinkunganRules(),
|
||||
'pesawat' => $this->getPesawatRules(),
|
||||
'alat-berat' => $this->getAlatBeratRules(),
|
||||
'apartemen-kantor' => $this->getUnitRules(),
|
||||
'lingkungan' => $this->getLinkunganRules(),
|
||||
'fakta' => $this->getCommonRules(),
|
||||
@@ -51,7 +51,7 @@ class FormSurveyorRequest extends FormRequest
|
||||
foreach ($pisah as $act) {
|
||||
if (isset($allRules[$act])) {
|
||||
$rules = array_merge($rules, $allRules[$act]);
|
||||
if ($act == 'tanah' || $act == 'bangunan') {
|
||||
if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') {
|
||||
$hasAssetDescriptionRules = true;
|
||||
}
|
||||
}
|
||||
@@ -162,8 +162,91 @@ class FormSurveyorRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'action' => 'required',
|
||||
'kondisi_kapal' => 'required',
|
||||
'kondisi_kapal_lain' => 'required',
|
||||
'nama_wakil_debitur' => 'required',
|
||||
'hub_calon_debitur' => 'required',
|
||||
'dermaga' => 'required',
|
||||
'desa_kelurahan' => 'required',
|
||||
'kecamatan' => 'required',
|
||||
'kota_madya' => 'required',
|
||||
'provinsi' => 'required',
|
||||
'jenis.*' => 'required',
|
||||
'size.*' => 'required',
|
||||
'kondisi.*' => 'required',
|
||||
'klasifikasi.*' => 'required',
|
||||
|
||||
'nama_kapal' => 'required',
|
||||
'pemilik_kapal' => 'required',
|
||||
'bendera' => 'required',
|
||||
'nomor_selar' => 'required',
|
||||
'kapal' => 'required',
|
||||
'galangan_kapal' => 'required',
|
||||
'kapal_shipyard' => 'required',
|
||||
'tahun_pembuatan' => 'required',
|
||||
'tahun_launcing' => 'required',
|
||||
'dwt' => 'required',
|
||||
'lwt' => 'required',
|
||||
'gross_tonnage' => 'required',
|
||||
'net_tonnage' => 'required',
|
||||
'tenaga_mesin' => 'required',
|
||||
'loa' => 'required',
|
||||
'lbp' => 'required',
|
||||
'beam' => 'required',
|
||||
'depth' => 'required',
|
||||
'draft' => 'required',
|
||||
|
||||
'lambung_kapal' => 'required',
|
||||
'dek' => 'required',
|
||||
'struktur_rangka' => 'required',
|
||||
'palka' => 'required',
|
||||
'pondasi_mesin' => 'required',
|
||||
'area_mesin' => 'required',
|
||||
'cat_dan_korosi' => 'required',
|
||||
'sistem_pengelasan' => 'required',
|
||||
'deskripsi_struktur' => 'required',
|
||||
|
||||
'sekoci' => 'required',
|
||||
'jaket_pelampung' => 'required',
|
||||
'alat_pemadaman' => 'required',
|
||||
'rambu_darurat' => 'required',
|
||||
'sistem_alarm' => 'required',
|
||||
'sistem_pencegah' => 'required',
|
||||
'kebakaran' => 'required',
|
||||
'lampu_darurat' => 'required',
|
||||
'deskripsi_peralatan' => 'required',
|
||||
|
||||
'gps' => 'required',
|
||||
'radar' => 'required',
|
||||
'radio_komunikasi' => 'required',
|
||||
'lampu_navigasi' => 'required',
|
||||
'sistem_kendali_otomatis' => 'required',
|
||||
'kompas' => 'required',
|
||||
'deskripsi_navigasi' => 'required',
|
||||
|
||||
'mesin_utama' => 'required',
|
||||
'mesin_bantu' => 'required',
|
||||
'pompa_pendingin' => 'required',
|
||||
'sistem_pelumasan' => 'required',
|
||||
'propeller' => 'required',
|
||||
'sistem_kelistrikan' => 'required',
|
||||
'deskripsi_mesin_penggerak' => 'required',
|
||||
|
||||
'lampu_navigasi' => 'required',
|
||||
'sistem_penerangan' => 'required',
|
||||
'sistem_panel_distribusi' => 'required',
|
||||
'kabel_perangkat' => 'required',
|
||||
'deskripsi_kelistrikan' => 'required',
|
||||
|
||||
'kebersihan_dek_luar' => 'required',
|
||||
'tangki_limbah' => 'required',
|
||||
'sistem_pengelolaan_limbah' => 'required',
|
||||
'pengelolaan_air_ballast' => 'required',
|
||||
'deskripsi_kebersihan' => 'required',
|
||||
|
||||
'fakta_positif.*' => 'nullable',
|
||||
'fakta_negatif.*' => 'nullable',
|
||||
'analisa_makro.*' => 'nullable',
|
||||
'kesimpulan.*' => 'nullable',
|
||||
'catatan.*' => 'nullable',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -171,8 +254,56 @@ class FormSurveyorRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'action' => 'required',
|
||||
'kondisi_kendaraan' => 'required',
|
||||
'kondisi_kendaraan_lain' => 'required',
|
||||
'tanggal_survey' => 'required',
|
||||
'nama_wakil' => 'required',
|
||||
'hub_calon_debitur' => 'required',
|
||||
'nama_jalan' => 'required',
|
||||
'perumahan_gang' => 'required',
|
||||
'blok_nomor' => 'required',
|
||||
'desa_kelurahan' => 'required',
|
||||
'kecamatan' => 'required',
|
||||
'kota_madya' => 'required',
|
||||
'provinsi' => 'required',
|
||||
'kondisi' => 'required',
|
||||
'nomor_polisi' => 'required',
|
||||
'nomor_polis_tidak_sesuai' => 'nullable',
|
||||
'merek' => 'required',
|
||||
'merek_tidak_sesuai' => 'nullable',
|
||||
'warna' => 'required',
|
||||
'warna_tidak_sesuai' => 'nullable',
|
||||
'nomor_rangka' => 'required',
|
||||
'nomor_rangka_tidak_sesuai' => 'nullable',
|
||||
'nomor_mesin' => 'required',
|
||||
'nomor_mesin_tidak_sesuai' => 'nullable',
|
||||
'posisi_kilometer' => 'required',
|
||||
'transmisi' => 'required',
|
||||
'mesin_panel_instrument.*' => 'required',
|
||||
'fungsi_mesin_panel_instrument.*' => 'required',
|
||||
'interior.*' => 'required',
|
||||
'jumlah_pintu.*' => 'required',
|
||||
'rangka_karoseri.*' => 'required',
|
||||
'ban.*' => 'required',
|
||||
'velg.*' => 'required',
|
||||
'bamper_depan.*' => 'required',
|
||||
'bamper_belakang.*' => 'required',
|
||||
'lampu_depan.*' => 'required',
|
||||
'lampu_belakang.*' => 'required',
|
||||
'kaca_kendaraan.*' => 'required',
|
||||
'air_conditioner.*' => 'required',
|
||||
'tape_radio_cd.*' => 'required',
|
||||
'sensor_parkir.*' => 'required',
|
||||
'sensor_camera_recorder.*' => 'required',
|
||||
'lcd.*' => 'required',
|
||||
'sabuk_keselamatan.*' => 'required',
|
||||
'airbag.*' => 'required',
|
||||
'asuransi.*' => 'required',
|
||||
'perusahaan_asuransi' => 'required',
|
||||
'tahun_berakhir' => 'required',
|
||||
'fakta_positif.*' => 'nullable',
|
||||
'fakta_negatif.*' => 'nullable',
|
||||
'analisa_makro.*' => 'nullable',
|
||||
'kesimpulan.*' => 'nullable',
|
||||
'catatan.*' => 'nullable',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -181,8 +312,24 @@ class FormSurveyorRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'action' => 'required',
|
||||
'kondisi_mesin' => 'required',
|
||||
'kondisi_mesin_lain' => 'required',
|
||||
'nama_wakil' => 'required',
|
||||
'nama_jalan' => 'required',
|
||||
'perumahan_gang' => 'required',
|
||||
'blok' => 'required',
|
||||
'desa_kelurahan' => 'required',
|
||||
'kecamatan' => 'required',
|
||||
'kota_madya' => 'required',
|
||||
'provinsi' => 'required',
|
||||
'hub_calon_debitur' => 'required',
|
||||
'tipe_model' => 'required',
|
||||
'merek' => 'required',
|
||||
'tahun_pembuatan' => 'required',
|
||||
'negara_pembuat' => 'required',
|
||||
'kondisi_mesin' => 'required',
|
||||
'faktor_positif' => 'nullable',
|
||||
'faktor_negatif' => 'nullable',
|
||||
'kesimpulan' => 'nullable',
|
||||
'catatan' => 'nullable',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -191,12 +338,173 @@ class FormSurveyorRequest extends FormRequest
|
||||
{
|
||||
return [
|
||||
'action' => 'required',
|
||||
'kondisi_alat_berat' => 'required',
|
||||
'kondisi_alat_berat_lain' => 'required',
|
||||
'tanggal_survey' => 'required',
|
||||
'nama_wakil' => 'required',
|
||||
'hub_calon_debitur' => 'required',
|
||||
'dengan_wadeb' => 'required',
|
||||
'nama_jalan' => 'required',
|
||||
'perumahan_gang' => 'required',
|
||||
'blok' => 'required',
|
||||
'desa_kelurahan' => 'required',
|
||||
'kecamatan' => 'required',
|
||||
'kota_madya' => 'required',
|
||||
'provinsi' => 'required',
|
||||
'jenis_model' => 'required',
|
||||
'nomor_lambung' => 'required',
|
||||
'model_unit' => 'required',
|
||||
'tahun_pembuatan' => 'required',
|
||||
'merk' => 'required',
|
||||
'negara_pembuat' => 'required',
|
||||
'tahun_pembelian' => 'required',
|
||||
'nomor_faktur' => 'nullable',
|
||||
'nomor_kontrak' => 'nullable',
|
||||
'nama_pemilik' => 'nullable',
|
||||
'alamat_pemilik' => 'nullable',
|
||||
'nomor_asuransi' => 'nullable',
|
||||
'nomor_rangka' => 'nullable',
|
||||
'nomor_mesin' => 'nullable',
|
||||
'hour_mesters' => 'nullable',
|
||||
'overhaul_mesin' => 'nullable',
|
||||
'mesin_panel.*' => 'nullable',
|
||||
'fungsi_panel.*' => 'nullable',
|
||||
'interior.*' => 'nullable',
|
||||
'rangka_Karoseri.*' => 'nullable',
|
||||
'ban.*' => 'nullable',
|
||||
'velg.*' => 'nullable',
|
||||
'air_conditioner.*' => 'nullable',
|
||||
'aksesoris.*' => 'nullable',
|
||||
'lcd.*' => 'nullable',
|
||||
'perlengkapan.*' => 'nullable',
|
||||
'asuransi.*' => 'nullable',
|
||||
'perusahaan_asuransi.*' => 'nullable',
|
||||
'tahun_berakhir.*' => 'nullable',
|
||||
'sensor_kamera.*' => 'nullable',
|
||||
'lcd.*' => 'nullable',
|
||||
'sabuk_keselamatan.*' => 'nullable',
|
||||
'air_bag.*' => 'nullable',
|
||||
'asuransi.*' => 'nullable',
|
||||
'perusahan_asuransi' => 'nullable',
|
||||
'tahun_berakhir' => 'nullable',
|
||||
'faktor_positif' => 'nullable',
|
||||
'faktor_negatif' => 'nullable',
|
||||
'kesimpulan' => 'nullable',
|
||||
'catatan' => 'nullable',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
private function getPesawatRules(): array
|
||||
{
|
||||
return [
|
||||
'action' => 'required',
|
||||
'tanggal_survey' => 'required',
|
||||
'nama_wakil' => 'required',
|
||||
'hub_calon_debitur' => 'required',
|
||||
'bandara' => 'required',
|
||||
'desa_kelurahan' => 'required',
|
||||
'kecamatan' => 'required',
|
||||
'kota_madya' => 'required',
|
||||
'provinsi' => 'required',
|
||||
|
||||
'jenis_pesawat' => 'required',
|
||||
'size' => 'required',
|
||||
'kondisi' => 'required',
|
||||
'nama_pesawat' => 'required',
|
||||
'model' => 'required',
|
||||
'nomor_registrasi' => 'required',
|
||||
'tahun_pembuatan' => 'required',
|
||||
'certificate_of_airworthines' => 'required',
|
||||
'certificate_of_registration' => 'required',
|
||||
'total_service_hours' => 'required',
|
||||
'total_service_cycles' => 'required',
|
||||
|
||||
'last_a_check' => 'required',
|
||||
'next_a_check' => 'required',
|
||||
'last_b_check' => 'required',
|
||||
'next_b_check' => 'required',
|
||||
'last_c_check' => 'required',
|
||||
'next_c_check' => 'required',
|
||||
'next_d_check' => 'required',
|
||||
'last_d_check' => 'required',
|
||||
'deskripsi_maintenence' => 'nullable',
|
||||
|
||||
'instrument_landing_system' => 'required',
|
||||
'traffic_collision_avoidance_system' => 'required',
|
||||
'windshear' => 'required',
|
||||
'electronic_flight' => 'required',
|
||||
'winglets' => 'required',
|
||||
'deskripsi_konfigurasi' => 'required',
|
||||
|
||||
|
||||
'maksimal_penumpang' => 'required',
|
||||
'jumlah_kursi' => 'required',
|
||||
'kursi_pramugari_pramugara' => 'required',
|
||||
'kartu_fitur_keselamatan' => 'required',
|
||||
'sabuk_pengaman' => 'required',
|
||||
'lampu_kabin' => 'required',
|
||||
'lampu_pintu_keluar' => 'required',
|
||||
'intercom_kabin' => 'required',
|
||||
'deskripsi_kabin' => 'required',
|
||||
|
||||
|
||||
'badan_pesawat' => 'required',
|
||||
'sayap_pesawat' => 'required',
|
||||
'ekor_pesawat' => 'required',
|
||||
'landing_gear' => 'required',
|
||||
'sabuk_pengaman' => 'required',
|
||||
'sistem_pengelasan' => 'required',
|
||||
'deskripsi_struktur' => 'required',
|
||||
|
||||
'gps' => 'required',
|
||||
'radar' => 'required',
|
||||
'radio_komunikasi' => 'required',
|
||||
'lampu_navigasi' => 'required',
|
||||
'sistem_autopilot' => 'required',
|
||||
'deskripsi_navigasi' => 'required',
|
||||
|
||||
'tangki_bahan_bakar' => 'required',
|
||||
'saluran_pipa_bahan_bakar' => 'required',
|
||||
'pompa_bahan_bakar' => 'required',
|
||||
'sistem_hidrolik_utama' => 'required',
|
||||
'sistem_pendigin_hidrolik' => 'required',
|
||||
'deskripsi_hidrolik' => 'required',
|
||||
|
||||
'mesin_utama' => 'required',
|
||||
'sistem_pendorong' => 'required',
|
||||
'sistem_pendigin_mesin' => 'required',
|
||||
'sistem_pelumasan' => 'required',
|
||||
'filter_dan_perangkat_pendukung' => 'required',
|
||||
'deskripsi_kondisi_mesin' => 'required',
|
||||
|
||||
|
||||
'jaket_pelampung' => 'required',
|
||||
'pintu_darurat' => 'required',
|
||||
'alat_pemadaman_kebakaran' => 'required',
|
||||
'sistem_alaram_darurat' => 'required',
|
||||
'sekoci' => 'required',
|
||||
'masker_oxigen' => 'required',
|
||||
'sabuk_pengaman' => 'required',
|
||||
'deskripsi_fungsi_keselamatan' => 'required',
|
||||
|
||||
|
||||
'sistem_ventilasi_ac' => 'required',
|
||||
'sistem_penerangan_kabin' => 'required',
|
||||
'panel_informasi_penumpang' => 'required',
|
||||
'sistem_hiburan_kabin' => 'required',
|
||||
'deskripsi_Interior' => 'required',
|
||||
|
||||
|
||||
|
||||
'faktor_positif.*' => 'nullable',
|
||||
'faktor_negatif.*' => 'nullable',
|
||||
'kesimpulan.*' => 'nullable',
|
||||
'catatan.*' => 'nullable',
|
||||
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
private function getAssetDescriptionRules(): array
|
||||
{
|
||||
return [
|
||||
@@ -229,6 +537,7 @@ class FormSurveyorRequest extends FormRequest
|
||||
'fakta_negatif' => 'nullable|array',
|
||||
'rute_menuju' => 'nullable',
|
||||
'batas_batas' => 'nullable|array',
|
||||
'batas_batas_input' => 'nullable|array',
|
||||
'kondisi_lingkungan' => 'nullable|array',
|
||||
'kondisi_lain_bangunan' => 'nullable|array',
|
||||
'informasi_dokument' => 'nullable',
|
||||
|
||||
76
app/Http/Requests/PersetujuanPenawaranRequest.php
Normal file
76
app/Http/Requests/PersetujuanPenawaranRequest.php
Normal file
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\app\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class PersetujuanPenawaranRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*/
|
||||
public function authorize()
|
||||
: bool
|
||||
{
|
||||
return true; // Adjust this based on your authorization logic
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*/
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*/
|
||||
public function rules()
|
||||
: array
|
||||
{
|
||||
return [
|
||||
'penawaran_id' => 'required|exists:penawaran_tender,id',
|
||||
'nomor_proposal_penawaran' => 'nullable|string|max:255',
|
||||
'tanggal_proposal_penawaran' => 'nullable|date',
|
||||
'biaya_final' => 'nullable|numeric|min:0',
|
||||
'sla_resume' => 'nullable|date',
|
||||
'sla_final' => 'nullable|date|after_or_equal:sla_resume',
|
||||
'catatan' => 'nullable|string',
|
||||
'attachment' => 'nullable|file|mimes:pdf,doc,docx|max:10240', // Max 10MB
|
||||
'region_id' => 'nullable|exists:regions,id',
|
||||
'status' => 'nullable|boolean',
|
||||
'authorized_status' => 'nullable|boolean',
|
||||
'authorized_at' => 'nullable|date',
|
||||
'authorized_by' => 'nullable|exists:users,id',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get custom messages for validator errors.
|
||||
*/
|
||||
public function messages()
|
||||
: array
|
||||
{
|
||||
return [
|
||||
'penawaran_id.required' => 'Penawaran ID wajib diisi.',
|
||||
'penawaran_id.exists' => 'Penawaran ID tidak valid.',
|
||||
'nomor_proposal_penawaran.required' => 'Nomor proposal penawaran wajib diisi.',
|
||||
'tanggal_proposal_penawaran.required' => 'Tanggal proposal penawaran wajib diisi.',
|
||||
'tanggal_proposal_penawaran.date' => 'Tanggal proposal penawaran harus berupa tanggal yang valid.',
|
||||
'biaya_final.required' => 'Biaya final wajib diisi.',
|
||||
'biaya_final.numeric' => 'Biaya final harus berupa angka.',
|
||||
'biaya_final.min' => 'Biaya final tidak boleh kurang dari 0.',
|
||||
'sla_resume.required' => 'SLA Resume wajib diisi.',
|
||||
'sla_resume.date' => 'SLA Resume harus berupa tanggal yang valid.',
|
||||
'sla_final.required' => 'SLA Final wajib diisi.',
|
||||
'sla_final.date' => 'SLA Final harus berupa tanggal yang valid.',
|
||||
'sla_final.after_or_equal' => 'SLA Final harus sama dengan atau setelah SLA Resume.',
|
||||
'attachment.file' => 'Attachment harus berupa file.',
|
||||
'attachment.mimes' => 'Attachment harus berupa file PDF, DOC, atau DOCX.',
|
||||
'attachment.max' => 'Ukuran attachment tidak boleh lebih dari 10MB.',
|
||||
'region_id.required' => 'Region ID wajib diisi.',
|
||||
'region_id.exists' => 'Region ID tidak valid.',
|
||||
'status.required' => 'Status wajib diisi.',
|
||||
'status.boolean' => 'Status harus berupa nilai boolean.',
|
||||
'authorized_status.boolean' => 'Status otorisasi harus berupa nilai boolean.',
|
||||
'authorized_at.date' => 'Tanggal otorisasi harus berupa tanggal yang valid.',
|
||||
'authorized_by.exists' => 'ID pengguna yang mengotorisasi tidak valid.',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,10 @@ class SurveyorRequest extends FormRequest
|
||||
'spek-bangunan' => 'spek_bangunan',
|
||||
'lantai-unit' => 'lantai',
|
||||
'view-unit' => 'view_unit',
|
||||
'jenis-pesawat' => 'jenis_pesawat',
|
||||
'model-alat-berat' => 'model_alat_berat',
|
||||
'jenis-kapal' => 'jenis_kapal',
|
||||
'jenis-kendaraan' => 'jenis_kendaraan',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
24
app/Models/JenisKapal.php
Normal file
24
app/Models/JenisKapal.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\JenisKapalFactory;
|
||||
|
||||
class JenisKapal extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'jenis_kapal';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
|
||||
|
||||
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
|
||||
// protected static function newFactory(): JenisKapalFactory
|
||||
// {
|
||||
// // return JenisKapalFactory::new();
|
||||
// }
|
||||
}
|
||||
23
app/Models/JenisKendaraan.php
Normal file
23
app/Models/JenisKendaraan.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\JenisKendaraanFactory;
|
||||
|
||||
class JenisKendaraan extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'jenis_kendaraan';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
|
||||
|
||||
// protected static function newFactory(): JenisKendaraanFactory
|
||||
// {
|
||||
// // return JenisKendaraanFactory::new();
|
||||
// }
|
||||
}
|
||||
23
app/Models/JenisPesawat.php
Normal file
23
app/Models/JenisPesawat.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\JenisPesawatFactory;
|
||||
|
||||
class JenisPesawat extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'jenis_pesawat';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
|
||||
|
||||
// protected static function newFactory(): JenisPesawatFactory
|
||||
// {
|
||||
// // return JenisPesawatFactory::new();
|
||||
// }
|
||||
}
|
||||
23
app/Models/ModelAlatBerat.php
Normal file
23
app/Models/ModelAlatBerat.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Modules\Lpj\Database\Factories\ModelAlatBeratFactory;
|
||||
|
||||
class ModelAlatBerat extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $table = 'model_alat_berat';
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $fillable = ['name', 'code', 'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_by', 'updated_by', 'deleted_by'];
|
||||
|
||||
// protected static function newFactory(): ModelAlatBeratFactory
|
||||
// {
|
||||
// // return ModelAlatBeratFactory::new();
|
||||
// }
|
||||
}
|
||||
@@ -27,9 +27,4 @@ class PenawaranDetailTender extends Model
|
||||
{
|
||||
return $this->belongsTo(KJPP::class, 'kjpp_rekanan_id', 'id');
|
||||
}
|
||||
|
||||
public function emailTenderLog(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(PenawaranEmailTenderLog::class, 'penawaran_id', 'id', PenawaranTender::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,4 +15,9 @@ class PenawaranEmailTenderLog extends Model
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected $guarded = ['id'];
|
||||
|
||||
public function penawaran()
|
||||
{
|
||||
return $this->belongsTo(PenawaranTender::class, 'penawaran_id', 'id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,17 @@ class PenawaranTender extends Model
|
||||
{
|
||||
return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id', 'id')->where('status', '=', 1);
|
||||
}
|
||||
|
||||
public function detail(){
|
||||
return $this->belongsTo(PenawaranDetailTender::class, 'id', 'penawaran_id')->where('status', 1);
|
||||
}
|
||||
// andy add
|
||||
|
||||
public function emailTenderLog(): HasMany
|
||||
{
|
||||
return $this->hasMany(PenawaranEmailTenderLog::class, 'penawaran_id', 'id');
|
||||
}
|
||||
|
||||
public function penawaranKjpp()
|
||||
{
|
||||
return $this->hasMany(PenawaranDetailTender::class, 'penawaran_id');
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Modules\Usermanagement\Models\User;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Modules\Lpj\Database\Factories\PenilaianTeamFactory;
|
||||
@@ -24,7 +25,7 @@ class PenilaianTeam extends Model
|
||||
|
||||
public function team(){
|
||||
|
||||
return $this->belongsTo(Team::class, 'team_id', 'id');
|
||||
return $this->belongsTo(Teams::class, 'team_id', 'id');
|
||||
}
|
||||
|
||||
public function penilaian(){
|
||||
|
||||
@@ -136,7 +136,7 @@
|
||||
|
||||
public function penawaranTender()
|
||||
{
|
||||
return $this->hasMany(PenawaranTender::class, 'nomor_registrasi');
|
||||
return $this->belongsTo(PenawaranTender::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||
}
|
||||
|
||||
public function region()
|
||||
|
||||
56
app/Models/PersetujuanPenawaran.php
Normal file
56
app/Models/PersetujuanPenawaran.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Modules\Lpj\Models\Base;
|
||||
use Modules\Lpj\Models\PenawaranTender;
|
||||
use Modules\Lpj\Models\Region;
|
||||
use Modules\Usermanagemenet\Models\User;
|
||||
|
||||
class PersetujuanPenawaran extends Base
|
||||
{
|
||||
|
||||
protected $table = 'persetujuan_penawaran';
|
||||
|
||||
protected $fillable = [
|
||||
'penawaran_id',
|
||||
'nomor_proposal_penawaran',
|
||||
'tanggal_proposal_penawaran',
|
||||
'biaya_final',
|
||||
'sla_resume',
|
||||
'sla_final',
|
||||
'catatan',
|
||||
'attachment',
|
||||
'region_id',
|
||||
'status',
|
||||
'authorized_status',
|
||||
'authorized_at',
|
||||
'authorized_by',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'tanggal_proposal_penawaran' => 'date',
|
||||
'sla_resume' => 'datetime',
|
||||
'sla_final' => 'datetime',
|
||||
'status' => 'boolean',
|
||||
'authorized_at' => 'datetime',
|
||||
];
|
||||
|
||||
// Relationship with Penawaran
|
||||
public function penawaran()
|
||||
{
|
||||
return $this->belongsTo(PenawaranTender::class, 'penawaran_id');
|
||||
}
|
||||
|
||||
// Relationship with Region
|
||||
public function region()
|
||||
{
|
||||
return $this->belongsTo(Region::class);
|
||||
}
|
||||
|
||||
// Relationship with User (for authorized_by)
|
||||
public function authorizedBy()
|
||||
{
|
||||
return $this->belongsTo(User::class, 'authorized_by');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user