memperbaiki konflik dari branch staging
This commit is contained in:
47
app/Exports/IjinUsahaExport.php
Normal file
47
app/Exports/IjinUsahaExport.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\IjinUsaha;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class IjinUsahaExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return IjinUsaha::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Name',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'B' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'E' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
46
app/Exports/JenisLaporanExport.php
Normal file
46
app/Exports/JenisLaporanExport.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class JenisLaporanExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return JenisLaporan::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Name',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'D' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
46
app/Exports/JenisPenilaianExport.php
Normal file
46
app/Exports/JenisPenilaianExport.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class JenisPenilaianExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return JenisPenilaian::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Jenis Penilaian',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'D' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
89
app/Exports/KJPPExport.php
Normal file
89
app/Exports/KJPPExport.php
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\KJPP;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return KJPP::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->jenis_kantor,
|
||||||
|
$row->nomor_ijin_usaha,
|
||||||
|
$row->province_code,
|
||||||
|
$row->city_code,
|
||||||
|
$row->district_code,
|
||||||
|
$row->village_code,
|
||||||
|
$row->address,
|
||||||
|
$row->postal_code,
|
||||||
|
$row->nomor_telepon_kantor,
|
||||||
|
$row->email_kantor,
|
||||||
|
$row->nama_pimpinan,
|
||||||
|
$row->nomor_hp_pimpinan,
|
||||||
|
$row->nama_pic_reviewer,
|
||||||
|
$row->nomor_hp_pic_reviewer,
|
||||||
|
$row->nama_pic_admin,
|
||||||
|
$row->nomor_hp_pic_admin,
|
||||||
|
$row->nama_pic_marketing,
|
||||||
|
$row->nomor_hp_pic_marketing,
|
||||||
|
$row->ijin_usaha_id,
|
||||||
|
$row->jenis_aset_id,
|
||||||
|
$row->attachment,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Name',
|
||||||
|
'Jenis Kantor',
|
||||||
|
'Nomor Ijin Usaha',
|
||||||
|
'Province Code',
|
||||||
|
'City Code',
|
||||||
|
'District Code',
|
||||||
|
'Village Code',
|
||||||
|
'Address',
|
||||||
|
'Postal Code',
|
||||||
|
'Nomor Telepon Kantor',
|
||||||
|
'Email Kantor',
|
||||||
|
'Nama Pimpinan',
|
||||||
|
'Nomor HP Pimpinan',
|
||||||
|
'Nama PIC Reviewer',
|
||||||
|
'Nomor HP PIC Reviewer',
|
||||||
|
'Nama PIC Admin',
|
||||||
|
'Nomor HP PIC Admin',
|
||||||
|
'Nama PIC Marketing',
|
||||||
|
'Nomor HP PIC Marketing',
|
||||||
|
'Ijin Usaha ID',
|
||||||
|
'Jenis Aset ID',
|
||||||
|
'Attachment',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'B' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'E' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
63
app/Exports/PenawaranTenderExport.php
Normal file
63
app/Exports/PenawaranTenderExport.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class PenawaranTenderExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return PenawaranTender::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->nama_kjpp_sebelumnya,
|
||||||
|
$row->biaya_kjpp_sebelumnya,
|
||||||
|
$row->tanggal_penilaian_sebelumnya,
|
||||||
|
$row->nomor_registrasi,
|
||||||
|
$row->tujuan_penilaian_kjpp_id,
|
||||||
|
$row->jenis_laporan_id,
|
||||||
|
$row->start_date,
|
||||||
|
$row->end_date,
|
||||||
|
$row->catatan,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Nomor Penawaran',
|
||||||
|
'Nama KJPP Sebelumnya',
|
||||||
|
'Biaya KJPP Sebelumnya',
|
||||||
|
'Tanggal Penilaian Sebelumnya',
|
||||||
|
'Nomor Registrasi',
|
||||||
|
'Tujuan Penilaian KJPP ID',
|
||||||
|
'Jenis Laporan ID',
|
||||||
|
'Start Date',
|
||||||
|
'End Date',
|
||||||
|
'Catatan',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'B' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'E' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,6 +28,8 @@
|
|||||||
$row->branch->name,
|
$row->branch->name,
|
||||||
$row->tujuanPenilaian->name,
|
$row->tujuanPenilaian->name,
|
||||||
$row->debiture->name,
|
$row->debiture->name,
|
||||||
|
$row->fasilitasKredit->name,
|
||||||
|
$row->plafond->name,
|
||||||
$row->status,
|
$row->status,
|
||||||
$row->authorized_at,
|
$row->authorized_at,
|
||||||
$row->authorized_status,
|
$row->authorized_status,
|
||||||
@@ -47,7 +49,9 @@
|
|||||||
'Branch Pemohon',
|
'Branch Pemohon',
|
||||||
'Tujuan Penilaian',
|
'Tujuan Penilaian',
|
||||||
'Debitur',
|
'Debitur',
|
||||||
'Status',
|
'Jenis Fasilitas Kredit',
|
||||||
|
'Nilai Plafond',
|
||||||
|
'Status Permohonan',
|
||||||
'Tanggal Pengesahan',
|
'Tanggal Pengesahan',
|
||||||
'Status Pengesahan',
|
'Status Pengesahan',
|
||||||
'Pengesah',
|
'Pengesah',
|
||||||
@@ -61,7 +65,8 @@
|
|||||||
return [
|
return [
|
||||||
'A' => NumberFormat::FORMAT_NUMBER,
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
'C' => NumberFormat::FORMAT_DATE_DATETIME,
|
'C' => NumberFormat::FORMAT_DATE_DATETIME,
|
||||||
'L' => NumberFormat::FORMAT_DATE_DATETIME
|
'K' => NumberFormat::FORMAT_DATE_DATETIME,
|
||||||
|
'N' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
49
app/Exports/RegionExport.php
Normal file
49
app/Exports/RegionExport.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class RegionExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return Regions::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row)
|
||||||
|
: array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings()
|
||||||
|
: array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Name',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats()
|
||||||
|
: array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'D' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
57
app/Exports/TeamPenilaianExport.php
Normal file
57
app/Exports/TeamPenilaianExport.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
|
||||||
|
class TeamPenilaianExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return Teams::select(
|
||||||
|
'teams.id as id',
|
||||||
|
'teams.name as team_name',
|
||||||
|
'regions.name as region_name',
|
||||||
|
DB::raw('STRING_AGG(users.name, \', \') as team_group')
|
||||||
|
)
|
||||||
|
->join('regions', 'teams.regions_id', '=', 'regions.id')
|
||||||
|
->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id')
|
||||||
|
->leftJoin('users', 'teams_users.user_id', '=', 'users.id')
|
||||||
|
->groupBy('teams.id', 'teams.name', 'regions.name')
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->team_name,
|
||||||
|
$row->region_name,
|
||||||
|
$row->team_group,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'Name',
|
||||||
|
'Region',
|
||||||
|
'Anggota Team',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_TEXT,
|
||||||
|
'B' => NumberFormat::FORMAT_TEXT,
|
||||||
|
'C' => NumberFormat::FORMAT_TEXT,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
46
app/Exports/TujuanPenilaianKJPPExport.php
Normal file
46
app/Exports/TujuanPenilaianKJPPExport.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
|
use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
|
use Maatwebsite\Excel\Concerns\WithMapping;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
|
||||||
|
|
||||||
|
class TujuanPenilaianKJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
|
||||||
|
{
|
||||||
|
public function collection()
|
||||||
|
{
|
||||||
|
return TujuanPenilaianKJPP::all();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function map($row): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
$row->id,
|
||||||
|
$row->code,
|
||||||
|
$row->name,
|
||||||
|
$row->created_at
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function headings(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'ID',
|
||||||
|
'Code',
|
||||||
|
'Name',
|
||||||
|
'Created At'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function columnFormats(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'A' => NumberFormat::FORMAT_NUMBER,
|
||||||
|
'D' => NumberFormat::FORMAT_DATE_DATETIME
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
152
app/Http/Controllers/ActivityController.php
Normal file
152
app/Http/Controllers/ActivityController.php
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
|
|
||||||
|
class ActivityController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$status_permohonan = StatusPermohonan::all();
|
||||||
|
return view('lpj::activity.index', compact('status_permohonan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(Request $request): RedirectResponse
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$status_permohonan = StatusPermohonan::orderBy('id')->get();
|
||||||
|
|
||||||
|
$permohonan = Permohonan::with(
|
||||||
|
[
|
||||||
|
'user',
|
||||||
|
'debiture.province',
|
||||||
|
'debiture.city',
|
||||||
|
'debiture.district',
|
||||||
|
'debiture.village',
|
||||||
|
'branch',
|
||||||
|
'tujuanPenilaian',
|
||||||
|
'penilaian'
|
||||||
|
],
|
||||||
|
)->findOrFail($id);
|
||||||
|
|
||||||
|
return view('lpj::activity.activitydetail', compact('id', 'status_permohonan', 'permohonan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('lpj::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
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.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = Permohonan::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply status filter if provided
|
||||||
|
if ($request->has('status') && !empty($request->get('status'))) {
|
||||||
|
$status = $request->get('status');
|
||||||
|
$query->where('status', '=', $status);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default sorting if no sort provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
} else {
|
||||||
|
$query->orderBy('nomor_registrasi', 'asc'); // Default order by nomor_registrasi
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records before paginating
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = (int) $request->get('page', 1); // Default page is 1
|
||||||
|
$size = (int) $request->get('size', 10); // Default size is 10
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
// Limit results based on pagination
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records (after search & filters applied)
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
|
|
||||||
|
// Calculate the total number of pages
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size', 10));
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $request->get('page', 1),
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Download the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function download($id)
|
||||||
|
{
|
||||||
|
$document = Permohonan::find($id);
|
||||||
|
return response()->download(storage_path('app/public/' . $document->dokumen));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -71,6 +71,7 @@
|
|||||||
|
|
||||||
public function update(DebitureRequest $request, $id)
|
public function update(DebitureRequest $request, $id)
|
||||||
{
|
{
|
||||||
|
//print_r($request->all());exit;
|
||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
@@ -174,10 +175,4 @@
|
|||||||
{
|
{
|
||||||
return Excel::download(new DebitureExport, 'debitur.xlsx');
|
return Excel::download(new DebitureExport, 'debitur.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function download($id)
|
|
||||||
{
|
|
||||||
$document = DokumenJaminan::find($id);
|
|
||||||
return response()->download(storage_path('app/public/' . $document->dokumen_jaminan));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,15 @@
|
|||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Exception;
|
use Exception;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Modules\Location\Models\City;
|
use Modules\Location\Models\City;
|
||||||
use Modules\Location\Models\District;
|
use Modules\Location\Models\District;
|
||||||
use Modules\Location\Models\Province;
|
use Modules\Location\Models\Province;
|
||||||
use Modules\Location\Models\Village;
|
use Modules\Location\Models\Village;
|
||||||
use Modules\Lpj\Http\Requests\DokumenJaminanRequest;
|
use Modules\Lpj\Http\Requests\DokumenJaminanRequest;
|
||||||
use Modules\Lpj\Models\Debiture;
|
use Modules\Lpj\Models\Debiture;
|
||||||
|
use Modules\Lpj\Models\DetailDokumenJaminan;
|
||||||
use Modules\Lpj\Models\DokumenJaminan;
|
use Modules\Lpj\Models\DokumenJaminan;
|
||||||
use Modules\Lpj\Models\JenisJaminan;
|
use Modules\Lpj\Models\JenisJaminan;
|
||||||
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
@@ -23,7 +26,7 @@
|
|||||||
public function index($id)
|
public function index($id)
|
||||||
{
|
{
|
||||||
$debitur = Debiture::find($id);
|
$debitur = Debiture::find($id);
|
||||||
$documents = DokumenJaminan::with('pemilik')->where('debiture_id', $id)->get();
|
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
|
||||||
|
|
||||||
return view(
|
return view(
|
||||||
'lpj::debitur.edit',
|
'lpj::debitur.edit',
|
||||||
@@ -36,8 +39,10 @@
|
|||||||
$debitur = Debiture::find($id);
|
$debitur = Debiture::find($id);
|
||||||
|
|
||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
try {
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
$validate['debiture_id'] = $id;
|
$validate['debiture_id'] = $id;
|
||||||
|
|
||||||
if ($validate['pemilik_jaminan_id'] == 0) {
|
if ($validate['pemilik_jaminan_id'] == 0) {
|
||||||
@@ -61,22 +66,53 @@
|
|||||||
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
|
$validate['pemilik_jaminan_id'] = $pemilikJaminan->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->hasFile('dokumen_jaminan')) {
|
$document = DokumenJaminan::create($validate);
|
||||||
$file = $request->file('dokumen_jaminan');
|
|
||||||
$file_name = $file->getClientOriginalName();
|
try {
|
||||||
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
|
foreach ($request->dokumen_jaminan as $key => $value) {
|
||||||
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
|
$file_name = $value->getClientOriginalName();
|
||||||
|
|
||||||
|
if ($file_name) {
|
||||||
|
try {
|
||||||
|
$file_name = $value->getClientOriginalName();
|
||||||
|
$value->storeAs(
|
||||||
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
|
$file_name,
|
||||||
|
);
|
||||||
|
|
||||||
|
$detail = [
|
||||||
|
'dokumen_jaminan_id' => $document->id,
|
||||||
|
'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
|
||||||
|
'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
|
||||||
|
'name' => $request->name[$key],
|
||||||
|
'keterangan' => $request->keterangan[$key],
|
||||||
|
];
|
||||||
|
DetailDokumenJaminan::create($detail);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
|
'error',
|
||||||
|
'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DB::commit();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
|
'error',
|
||||||
|
'gg' . $e->getMessage(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DokumenJaminan::create($validate);
|
|
||||||
|
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
'success',
|
'success',
|
||||||
'Dokumen Jaminan berhasil ditambahkan',
|
'Dokumen Jaminan berhasil ditambahkan',
|
||||||
);
|
);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage());
|
DB::rollBack();
|
||||||
|
return redirect()->route('debitur.jaminan.index', $id)->with('error', 'ggl' . $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,6 +138,7 @@
|
|||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
try {
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
$validate['debiture_id'] = $id;
|
$validate['debiture_id'] = $id;
|
||||||
|
|
||||||
if ($validate['pemilik_jaminan_id'] == 0) {
|
if ($validate['pemilik_jaminan_id'] == 0) {
|
||||||
@@ -124,29 +161,77 @@
|
|||||||
], $pemilik_jaminan);
|
], $pemilik_jaminan);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->hasFile('dokumen_jaminan')) {
|
|
||||||
$file = $request->file('dokumen_jaminan');
|
|
||||||
$file_name = $file->getClientOriginalName();
|
|
||||||
$file->storeAs('public/jaminan/' . $debitur->id, $file_name);
|
|
||||||
$validate['dokumen_jaminan'] = 'jaminan/' . $debitur->id . '/' . $file_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
$document = DokumenJaminan::find($jaminan);
|
$document = DokumenJaminan::find($jaminan);
|
||||||
$document->update($validate);
|
$document->update($validate);
|
||||||
|
|
||||||
|
if ($request->detail_dokumen_jaminan_id) {
|
||||||
|
foreach ($request->detail_dokumen_jaminan_id as $key => $value) {
|
||||||
|
if (isset($request->dokumen_jaminan[$key])) {
|
||||||
|
$file = $request->dokumen_jaminan[$key];
|
||||||
|
if ($file) {
|
||||||
|
$file_name = $file->getClientOriginalName();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($file_name)) {
|
||||||
|
$file->storeAs(
|
||||||
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
|
$file_name,
|
||||||
|
);
|
||||||
|
|
||||||
|
$detail = [
|
||||||
|
'dokumen_jaminan_id' => $document->id,
|
||||||
|
'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
|
||||||
|
'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
|
||||||
|
'name' => $request->name[$key],
|
||||||
|
'keterangan' => $request->keterangan[$key],
|
||||||
|
];
|
||||||
|
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||||
|
$detailDocument = DetailDokumenJaminan::find(
|
||||||
|
$request->detail_dokumen_jaminan_id[$key],
|
||||||
|
);
|
||||||
|
|
||||||
|
$detailDocument->update($detail);
|
||||||
|
$detailDocument->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$detail = [
|
||||||
|
'dokumen_jaminan_id' => $document->id,
|
||||||
|
'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
|
||||||
|
'name' => $request->name[$key],
|
||||||
|
'keterangan' => $request->keterangan[$key],
|
||||||
|
];
|
||||||
|
|
||||||
|
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||||
|
$detailDocument = DetailDokumenJaminan::find(
|
||||||
|
$request->detail_dokumen_jaminan_id[$key],
|
||||||
|
);
|
||||||
|
$detailDocument->update($detail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
'success',
|
'success',
|
||||||
'Dokumen Jaminan berhasil diubah',
|
'Dokumen Jaminan berhasil diubah',
|
||||||
);
|
);
|
||||||
} catch (Exception $e) {
|
} catch
|
||||||
|
(Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage());
|
return redirect()->route('debitur.jaminan.index', $id)->with('error', $e->getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit($id, $jaminan)
|
public
|
||||||
{
|
function edit(
|
||||||
|
$id,
|
||||||
|
$jaminan,
|
||||||
|
) {
|
||||||
$document = DokumenJaminan::find($jaminan);
|
$document = DokumenJaminan::find($jaminan);
|
||||||
|
$details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get();
|
||||||
$debitur = Debiture::find($document->debiture_id);
|
$debitur = Debiture::find($document->debiture_id);
|
||||||
$provinces = Province::all();
|
$provinces = Province::all();
|
||||||
$cities = City::where('province_code', $document->province_code)->get();
|
$cities = City::where('province_code', $document->province_code)->get();
|
||||||
@@ -164,6 +249,7 @@
|
|||||||
'jenisJaminan',
|
'jenisJaminan',
|
||||||
'jenisLegalitasJaminan',
|
'jenisLegalitasJaminan',
|
||||||
'document',
|
'document',
|
||||||
|
'details',
|
||||||
'cities',
|
'cities',
|
||||||
'districts',
|
'districts',
|
||||||
'villages',
|
'villages',
|
||||||
@@ -172,14 +258,30 @@
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy($id, $jaminan_id)
|
public
|
||||||
{
|
function destroy(
|
||||||
|
$id,
|
||||||
|
$jaminan_id,
|
||||||
|
) {
|
||||||
try {
|
try {
|
||||||
$jaminan = DokumenJaminan::find($jaminan_id);
|
$jaminan = DokumenJaminan::find($jaminan_id);
|
||||||
|
$details = DetailDokumenJaminan::where('dokumen_jaminan_id',$jaminan->id)->get();
|
||||||
|
foreach ($details as $detail){
|
||||||
|
Storage::delete('public/'. $detail->dokumen_jaminan);
|
||||||
|
$detail->delete();
|
||||||
|
}
|
||||||
$jaminan->delete();
|
$jaminan->delete();
|
||||||
echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']);
|
echo json_encode(['success' => true, 'message' => 'Dokumen Jaminan deleted successfully']);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']);
|
echo json_encode(['success' => false, 'message' => 'Failed to delete Dokumen Jaminan']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public
|
||||||
|
function download(
|
||||||
|
$id,
|
||||||
|
) {
|
||||||
|
$document = DetailDokumenJaminan::find($id);
|
||||||
|
return response()->download(storage_path('app/public/' . $document->dokumen_jaminan));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
174
app/Http/Controllers/IjinUsahaController.php
Normal file
174
app/Http/Controllers/IjinUsahaController.php
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Exports\IjinUsahaExport;
|
||||||
|
use Modules\Lpj\Http\Requests\IjinUsahaRequest;
|
||||||
|
use Modules\Lpj\Models\IjinUsaha;
|
||||||
|
|
||||||
|
class IjinUsahaController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::Ijin_usaha.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::Ijin_usaha.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(IjinUsahaRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
IjinUsaha::create($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.ijin_usaha.index')
|
||||||
|
->with('success', 'Ijin Usaha created successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.ijin_usaha.create')
|
||||||
|
->with('error', 'Failed to create ijin Usaha');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
// return view('lpj::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$ijin_usaha = IjinUsaha::find($id);
|
||||||
|
return view('lpj::Ijin_usaha.create', compact('ijin_usaha'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(IjinUsahaRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
// Update in database
|
||||||
|
$ijin_usaha = IjinUsaha::find($id);
|
||||||
|
$ijin_usaha->update($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.ijin_usaha.index')
|
||||||
|
->with('success', 'Ijin Usaha updated successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.ijin_usaha.edit', $id)
|
||||||
|
->with('error', 'Failed to update ijin$ijin_usaha');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$ijin_usaha = IjinUsaha::find($id);
|
||||||
|
$ijin_usaha->delete();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Ijin Usaha deleted successfully']);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete Ijin Usaha']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('Ijin_usaha.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = IjinUsaha::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new IjinUsahaExport, 'ijin_usaha.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@
|
|||||||
use Modules\Lpj\Exports\JenisJaminanExport;
|
use Modules\Lpj\Exports\JenisJaminanExport;
|
||||||
use Modules\Lpj\Http\Requests\JenisJaminanRequest;
|
use Modules\Lpj\Http\Requests\JenisJaminanRequest;
|
||||||
use Modules\Lpj\Models\JenisJaminan;
|
use Modules\Lpj\Models\JenisJaminan;
|
||||||
|
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
|
|
||||||
class JenisJaminanController extends Controller
|
class JenisJaminanController extends Controller
|
||||||
{
|
{
|
||||||
@@ -40,13 +41,15 @@
|
|||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
return view('lpj::jenis_jaminan.create');
|
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
|
||||||
|
return view('lpj::jenis_jaminan.create', compact('jenisLegalitasJaminan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
$jenisJaminan = JenisJaminan::find($id);
|
$jenisJaminan = JenisJaminan::find($id);
|
||||||
return view('lpj::jenis_jaminan.create', compact('jenisJaminan'));
|
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
|
||||||
|
return view('lpj::jenis_jaminan.create', compact('jenisJaminan', 'jenisLegalitasJaminan'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(JenisJaminanRequest $request, $id)
|
public function update(JenisJaminanRequest $request, $id)
|
||||||
@@ -147,4 +150,13 @@
|
|||||||
{
|
{
|
||||||
return Excel::download(new JenisJaminanExport, 'jenis_jaminan.xlsx');
|
return Excel::download(new JenisJaminanExport, 'jenis_jaminan.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function legalitasJaminan($id)
|
||||||
|
{
|
||||||
|
$jenisJaminan = JenisJaminan::find($id);
|
||||||
|
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
|
||||||
|
|
||||||
|
$legalitas = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
|
||||||
|
echo json_encode($legalitas);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
174
app/Http/Controllers/JenisLaporanController.php
Normal file
174
app/Http/Controllers/JenisLaporanController.php
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
|
use Modules\Lpj\Exports\JenisLaporanExport;
|
||||||
|
use Modules\Lpj\Http\Requests\JenisLaporanRequest;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
class JenisLaporanController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::jenis_laporan.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::jenis_laporan.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(JenisLaporanRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
JenisLaporan::create($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.jenis_laporan.index')
|
||||||
|
->with('success', 'Jenis Laporan created successfully');
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.jenis_laporan.create')
|
||||||
|
->with('success', 'Failed to create Jenis Laporan: ' . $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
// return view('lpj::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$jenisLaporan = JenisLaporan::find($id);
|
||||||
|
return view('lpj::jenis_laporan.create', compact('jenisLaporan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(JenisLaporanRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
$jenisLaporan = JenisLaporan::find($id);
|
||||||
|
$jenisLaporan->update($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.jenis_laporan.index')
|
||||||
|
->with('success', 'Jenis Laporan updated successfully');
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.jenis_laporan.edit', $id)
|
||||||
|
->with('success', 'Failed to update Jenis Laporan: ' . $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// Delete from database
|
||||||
|
$jenisLaporan = JenisLaporan::find($id);
|
||||||
|
$jenisLaporan->delete();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Jenis Laporan deleted successfully']);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete jenis Laporan']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('jenis_jaminan.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = JenisLaporan::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new JenisLaporanExport, 'jenis_laporan.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
156
app/Http/Controllers/JenisPenilaianController.php
Normal file
156
app/Http/Controllers/JenisPenilaianController.php
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use Modules\Lpj\Http\Requests\JenisPenilaianRequest;
|
||||||
|
use Modules\Lpj\Exports\JenisPenilaianExport;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
|
class JenisPenilaianController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::jenis_penilaian.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::jenis_penilaian.form');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(JenisPenilaianRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
try {
|
||||||
|
JenisPenilaian::create($validate);
|
||||||
|
return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian created successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()->route('basicdata.jenis-penilaian.create')->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$jenisPenilaian = JenisPenilaian::find($id);
|
||||||
|
return view('lpj::jenis_penilaian.form', compact('jenisPenilaian'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(JenisPenilaianRequest $request, $id)
|
||||||
|
{
|
||||||
|
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
|
||||||
|
if ($validated) {
|
||||||
|
try {
|
||||||
|
$jenisPenilaian = JenisPenilaian::find($id);
|
||||||
|
$jenisPenilaian->update($validated);
|
||||||
|
return redirect()->route('basicdata.jenis-penilaian.index')->with('success', 'Jenis Penilaian updated successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()->route('basicdata.jenis-penilaian.edit', $id)->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$jenisPenilaian = JenisPenilaian::find($id);
|
||||||
|
$jenisPenilaian->delete();
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Jenis Penilaian deleted successfully']);
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete Jenis Penilaian']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('jenis_penilaian.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = JenisPenilaian::query();
|
||||||
|
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
|
||||||
|
$size = $request->get('size');
|
||||||
|
$pageCount = 1;
|
||||||
|
|
||||||
|
if ($size > 0) {
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$offset = ($page - 1) * $size;
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
$pageCount = ceil($totalRecords / $size);
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = $query->get();
|
||||||
|
} else {
|
||||||
|
$filteredRecords = $totalRecords;
|
||||||
|
$data = $query->get();
|
||||||
|
}
|
||||||
|
|
||||||
|
$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
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new JenisPenilaianExport(), 'jenis-penilaian.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
255
app/Http/Controllers/KJPPController.php
Normal file
255
app/Http/Controllers/KJPPController.php
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Throwable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Models\KJPP;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Modules\Lpj\Models\Branch;
|
||||||
|
use Modules\Location\Models\City;
|
||||||
|
use Modules\Lpj\Models\IjinUsaha;
|
||||||
|
use Modules\Lpj\Exports\KJPPExport;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Location\Models\Village;
|
||||||
|
use Modules\Lpj\Models\JenisJaminan;
|
||||||
|
use Modules\Location\Models\District;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
use Modules\Lpj\Http\Requests\KJPPRequest;
|
||||||
|
|
||||||
|
class KJPPController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::kjpp.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
$branch = Branch::all();
|
||||||
|
$ijin_usaha = IjinUsaha::all();
|
||||||
|
$jenis_aset = JenisJaminan::all();
|
||||||
|
$provinces = Province::all();
|
||||||
|
|
||||||
|
// Generate KJPP Number
|
||||||
|
$lastKjpp = KJPP::orderBy('code', 'desc')->first();
|
||||||
|
$nextNumber = $lastKjpp ? intval(substr($lastKjpp->code, 1, 6)) + 1 : 1;
|
||||||
|
$kjppNumber = 'K' . str_pad($nextNumber, 6, '0', STR_PAD_LEFT);
|
||||||
|
|
||||||
|
// Combine KJPP number with branch code
|
||||||
|
$fullKjppNumber = $kjppNumber;
|
||||||
|
|
||||||
|
return view('lpj::kjpp.create', compact('branch', 'ijin_usaha', 'jenis_aset', 'provinces', 'fullKjppNumber'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(KJPPRequest $request)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
if ($validated) {
|
||||||
|
$file = $request->file('attachment');
|
||||||
|
$filename = $file ? time() . '.' . $file->getClientOriginalExtension() : 'default.pdf';
|
||||||
|
|
||||||
|
if ($file) {
|
||||||
|
// Simpan file yang diunggah
|
||||||
|
$file->storeAs('public/uploads_pdf', $filename);
|
||||||
|
} else {
|
||||||
|
// Salin file default ke lokasi yang diinginkan
|
||||||
|
Storage::copy('public/test/default.pdf', 'public/uploads_pdf/' . $filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
$validated['ijin_usaha_id'] = json_encode($request->input('ijin_usaha_id'));
|
||||||
|
$validated['jenis_aset_id'] = json_encode($request->input('jenis_aset_id'));
|
||||||
|
|
||||||
|
// Tambahkan nama file ke data yang divalidasi
|
||||||
|
$validated['attachment'] = $filename;
|
||||||
|
|
||||||
|
// Simpan data ke database
|
||||||
|
KJPP::create($validated);
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.kjpp.index')
|
||||||
|
->with('success', 'KJPP created successfully');
|
||||||
|
} else {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.kjpp.create')
|
||||||
|
->with('error', 'Validation failed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$kjpp = KJPP::find($id);
|
||||||
|
$ijin_usaha = IjinUsaha::where('code', $kjpp->nomor_ijin_usaha)->get();
|
||||||
|
$ijin_usahas = IjinUsaha::all();
|
||||||
|
$jenis_jaminan = JenisJaminan::all();
|
||||||
|
$branches = Branch::where('name', $kjpp->jenis_kantor)->get();
|
||||||
|
$provinces = Province::where('code', $kjpp->province_code)->get();
|
||||||
|
$cities = City::where('code', $kjpp->city_code)->get();
|
||||||
|
$districts = District::where('code', $kjpp->district_code)->get();
|
||||||
|
$villages = Village::where('code', $kjpp->village_code)->get();
|
||||||
|
// dd($branches);
|
||||||
|
return view('lpj::kjpp.show', compact('jenis_jaminan', 'ijin_usahas', 'ijin_usaha', 'branches', 'kjpp', 'provinces', 'cities', 'districts', 'villages'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$kjpp = KJPP::find($id);
|
||||||
|
$branch = Branch::all();
|
||||||
|
$ijin_usaha = IjinUsaha::all();
|
||||||
|
$jenis_aset = JenisJaminan::all();
|
||||||
|
$provinces = Province::all();
|
||||||
|
$cities = City::where('province_code', $kjpp->province_code)->get();
|
||||||
|
$districts = District::where('city_code', $kjpp->city_code)->get();
|
||||||
|
$villages = Village::where('district_code', $kjpp->district_code)->get();
|
||||||
|
|
||||||
|
return view('lpj::kjpp.create', compact('kjpp', 'branch', 'ijin_usaha', 'jenis_aset', 'provinces', 'cities', 'districts', 'villages'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(KJPPRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
if ($validated) {
|
||||||
|
$file = $request->file('attachment');
|
||||||
|
$filename = $file ? time() . '.' . $file->getClientOriginalExtension() : null;
|
||||||
|
|
||||||
|
if ($file !== null) {
|
||||||
|
// Jika ada file dari database maka hapus file yang lama ke file yang baru
|
||||||
|
$kjpp = KJPP::find($id);
|
||||||
|
// Jika filenya ada default.pdf jangan dihapus
|
||||||
|
if ($kjpp->attachment !== 'default.pdf') {
|
||||||
|
Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
|
||||||
|
}
|
||||||
|
// Simpan file yang diunggah
|
||||||
|
$file->storeAs('public/uploads_pdf', $filename);
|
||||||
|
$validated['attachment'] = $filename;
|
||||||
|
} else {
|
||||||
|
// Jika tidak ada file yang diunggah, gunakan file yang sudah ada atau file default
|
||||||
|
$kjpp = KJPP::find($id);
|
||||||
|
$validated['attachment'] = $kjpp->attachment ?? 'default.pdf';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Perbarui data di database
|
||||||
|
KJPP::where('id', $id)->update($validated);
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.kjpp.index')
|
||||||
|
->with('success', 'KJPP updated successfully');
|
||||||
|
} else {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.kjpp.edit', $id)
|
||||||
|
->with('error', 'Validation failed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$kjpp = KJPP::find($id);
|
||||||
|
|
||||||
|
// Jangan hapus file default.pdf
|
||||||
|
if ($kjpp->attachment && $kjpp->attachment !== 'default.pdf') {
|
||||||
|
Storage::delete('public/uploads_pdf/' . $kjpp->attachment);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hapus data dari database
|
||||||
|
$kjpp->delete();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'KJPP deleted successfully']);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete branch: ' . $e]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('kjpp.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = KJPP::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('jenis_kantor', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new KJPPExport, 'kjpp.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
225
app/Http/Controllers/PenilaianController.php
Normal file
225
app/Http/Controllers/PenilaianController.php
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Exception;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Modules\Lpj\Http\Requests\PenilaianRequest;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use Modules\Lpj\Models\Penilaian;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
use Modules\Lpj\Models\TeamsUsers;
|
||||||
|
use Modules\Usermanagement\Models\User;
|
||||||
|
|
||||||
|
class PenilaianController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$status_permohonan = StatusPermohonan::all();
|
||||||
|
|
||||||
|
return view('lpj::penilaian.index', compact('status_permohonan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(PenilaianRequest $request)
|
||||||
|
{
|
||||||
|
//print_r($request->all());exit;
|
||||||
|
$validatedData = $request->validated();
|
||||||
|
if ($validatedData) {
|
||||||
|
try {
|
||||||
|
$penilaian = Penilaian::create($validatedData);
|
||||||
|
|
||||||
|
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
|
||||||
|
$permohonan->update([
|
||||||
|
'status' => 'assign',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil disimpan');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
|
||||||
|
return redirect()->route('penilaian.index')->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create($id)
|
||||||
|
{
|
||||||
|
return view('lpj::penilaian.form');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(PenilaianRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
$penilaian = Penilaian::where('nomor_registrasi', $request->nomor_registrasi)->firstOrFail();
|
||||||
|
$penilaian->update($validate);
|
||||||
|
$permohonan = Permohonan::where('nomor_registrasi', $request->nomor_registrasi);
|
||||||
|
$permohonan->update([
|
||||||
|
'status' => 'assign',
|
||||||
|
]);
|
||||||
|
|
||||||
|
return redirect()->route('penilaian.index', $id)->with('success', 'Penilaian berhasil diubah');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()->route('penilaian.index', $id)->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function assignment($id)
|
||||||
|
{
|
||||||
|
$permohonan = Permohonan::with(
|
||||||
|
[
|
||||||
|
'user',
|
||||||
|
'debiture.province',
|
||||||
|
'debiture.city',
|
||||||
|
'debiture.district',
|
||||||
|
'debiture.village',
|
||||||
|
'branch',
|
||||||
|
'tujuanPenilaian',
|
||||||
|
],
|
||||||
|
)->findOrFail($id);
|
||||||
|
|
||||||
|
$jenisPenilaian = JenisPenilaian::all();
|
||||||
|
$teamPenilai = Teams::with(['regions', 'teamsUsers'])->get();
|
||||||
|
|
||||||
|
$penilaian = Penilaian::where('nomor_registrasi', $permohonan->nomor_registrasi)->first();
|
||||||
|
|
||||||
|
return view('lpj::penilaian.form', compact('permohonan', 'teamPenilai', 'jenisPenilaian', 'penilaian'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public function revisi(PenilaianRequest $request, $nomor_registrasi)
|
||||||
|
{
|
||||||
|
$validatedData = $request->validated();
|
||||||
|
if ($validatedData) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
if (isset($validatedData['dokumen']) && $request->hasFile('dokumen')) {
|
||||||
|
$file_name = $validatedData['dokumen']->getClientOriginalName();
|
||||||
|
$validatedData['dokumen']->storeAs('public/dokumen_revisi', $file_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
$dataToUpdate = [
|
||||||
|
'keterangan' => $validatedData['keterangan'],
|
||||||
|
'dokumen' => 'dokumen_revisi/' . $file_name,
|
||||||
|
'status' => 'revisi',
|
||||||
|
];
|
||||||
|
|
||||||
|
// dump($dataToUpdate);
|
||||||
|
|
||||||
|
$permohonan = Permohonan::where('nomor_registrasi', $nomor_registrasi)->first();
|
||||||
|
|
||||||
|
$permohonan->update($dataToUpdate);
|
||||||
|
return redirect()->route('penilaian.index')->with('success', 'Penilaian berhasil direvisi');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
dump($e->getMessage());
|
||||||
|
// return redirect()->route('penilaian.index')->with('error', $e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = Permohonan::query();
|
||||||
|
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$query->whereRaw('LOWER(status) = ?', ['register']);
|
||||||
|
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
$size = $request->get('size', 10);
|
||||||
|
if ($size == 0) {
|
||||||
|
$size = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page', 1);
|
||||||
|
$offset = ($page - 1) * $size;
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
|
||||||
|
|
||||||
|
$pageCount = ceil($totalRecords / $size);
|
||||||
|
|
||||||
|
$currentPage = max(1, $request->get('page', 1));
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function getUserTeams($id)
|
||||||
|
{
|
||||||
|
$teamsUser = TeamsUsers::where('teams_id', $id)->get();
|
||||||
|
$userIds = $teamsUser->pluck('user_id');
|
||||||
|
$users = User::whereIn('id', $userIds)
|
||||||
|
->with('roles')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
|
||||||
|
if ($users->isNotEmpty()) {
|
||||||
|
return response()->json($users, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([], 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,11 +6,19 @@
|
|||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Maatwebsite\Excel\Facades\Excel;
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Location\Models\City;
|
||||||
|
use Modules\Location\Models\District;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
use Modules\Location\Models\Village;
|
||||||
use Modules\Lpj\Exports\PermohonanExport;
|
use Modules\Lpj\Exports\PermohonanExport;
|
||||||
use Modules\Lpj\Http\Requests\PermohonanRequest;
|
use Modules\Lpj\Http\Requests\PermohonanRequest;
|
||||||
use Modules\Lpj\Models\Branch;
|
use Modules\Lpj\Models\Branch;
|
||||||
use Modules\Lpj\Models\Debiture;
|
use Modules\Lpj\Models\Debiture;
|
||||||
|
use Modules\Lpj\Models\DokumenJaminan;
|
||||||
|
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||||
|
use Modules\Lpj\Models\NilaiPlafond;
|
||||||
use Modules\Lpj\Models\Permohonan;
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
use Modules\Lpj\Models\TujuanPenilaian;
|
use Modules\Lpj\Models\TujuanPenilaian;
|
||||||
|
|
||||||
class PermohonanController extends Controller
|
class PermohonanController extends Controller
|
||||||
@@ -26,7 +34,6 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
$validate = $request->validated();
|
$validate = $request->validated();
|
||||||
|
|
||||||
if ($validate) {
|
if ($validate) {
|
||||||
try {
|
try {
|
||||||
// Save to database
|
// Save to database
|
||||||
@@ -37,7 +44,7 @@
|
|||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('permohonan.create')
|
->route('permohonan.create')
|
||||||
->with('error', 'Failed to create permohonan'. $e->getMessage());
|
->with('error', 'Failed to create permohonan' . $e->getMessage());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return redirect()
|
return redirect()
|
||||||
@@ -49,49 +56,56 @@
|
|||||||
|
|
||||||
public function create()
|
public function create()
|
||||||
{
|
{
|
||||||
$branches = Branch::all();
|
return view('lpj::permohonan.create');
|
||||||
$debitures = Debiture::all();
|
}
|
||||||
$tujuanPenilaian = TujuanPenilaian::all();
|
|
||||||
$status = [
|
|
||||||
'order' => 'Order',
|
|
||||||
'revisi' => 'Revisi',
|
|
||||||
'register' => 'Register',
|
|
||||||
'assign' => 'Assign',
|
|
||||||
'survey' => 'Survey',
|
|
||||||
'finalisasi' => 'Proses Laporan',
|
|
||||||
'approved' => 'Diterima',
|
|
||||||
'rejected' => 'Ditolak',
|
|
||||||
'cancel' => 'Dibatalkan',
|
|
||||||
'finished' => 'Selesai',
|
|
||||||
'not_started' => 'Belum dimulai',
|
|
||||||
];
|
|
||||||
|
|
||||||
return view('lpj::permohonan.form', compact('branches', 'debitures', 'tujuanPenilaian','status'));
|
public function createPermohonan($debitur)
|
||||||
|
{
|
||||||
|
$branches = Branch::all();
|
||||||
|
$debitur = Debiture::find($debitur);
|
||||||
|
$tujuanPenilaian = TujuanPenilaian::all();
|
||||||
|
$status = StatusPermohonan::all();
|
||||||
|
$fasilitasKredit = JenisFasilitasKredit::all();
|
||||||
|
$plafond = NilaiPlafond::all();
|
||||||
|
|
||||||
|
return view(
|
||||||
|
'lpj::permohonan.form',
|
||||||
|
compact('branches', 'debitur', 'tujuanPenilaian', 'status', 'fasilitasKredit', 'plafond'),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
$permohonan = Permohonan::find($id);
|
$permohonan = Permohonan::find($id);
|
||||||
$branches = Branch::all();
|
$branches = Branch::all();
|
||||||
$debitures = Debiture::all();
|
$debitur = Debiture::find($permohonan->debiture_id);
|
||||||
$tujuanPenilaian = TujuanPenilaian::all();
|
$tujuanPenilaian = TujuanPenilaian::all();
|
||||||
$status = [
|
$status = StatusPermohonan::all();
|
||||||
'order' => 'Order',
|
$provinces = Province::all();
|
||||||
'revisi' => 'Revisi',
|
$cities = City::where('province_code', $debitur->province_code)->get();
|
||||||
'register' => 'Register',
|
$districts = District::where('city_code', $debitur->city_code)->get();
|
||||||
'assign' => 'Assign',
|
$villages = Village::where('district_code', $debitur->district_code)->get();
|
||||||
'survey' => 'Survey',
|
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
|
||||||
'finalisasi' => 'Proses Laporan',
|
|
||||||
'approved' => 'Diterima',
|
$fasilitasKredit = JenisFasilitasKredit::all();
|
||||||
'rejected' => 'Ditolak',
|
$plafond = NilaiPlafond::all();
|
||||||
'cancel' => 'Dibatalkan',
|
|
||||||
'finished' => 'Selesai',
|
|
||||||
'not_started' => 'Belum dimulai',
|
|
||||||
];
|
|
||||||
|
|
||||||
return view(
|
return view(
|
||||||
'lpj::permohonan.form',
|
'lpj::permohonan.form',
|
||||||
compact('permohonan', 'branches', 'debitures', 'tujuanPenilaian','status'),
|
compact(
|
||||||
|
'permohonan',
|
||||||
|
'branches',
|
||||||
|
'debitur',
|
||||||
|
'tujuanPenilaian',
|
||||||
|
'status',
|
||||||
|
'provinces',
|
||||||
|
'cities',
|
||||||
|
'districts',
|
||||||
|
'villages',
|
||||||
|
'documents',
|
||||||
|
'fasilitasKredit',
|
||||||
|
'plafond',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,4 +212,96 @@
|
|||||||
{
|
{
|
||||||
return Excel::download(new PermohonanExport, 'permohonan.xlsx');
|
return Excel::download(new PermohonanExport, 'permohonan.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function authorization()
|
||||||
|
{
|
||||||
|
return view('lpj::permohonan.authorization.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForAuthorization(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('debitur.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = Permohonan::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('nomor_registrasi', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%');
|
||||||
|
$q->orWhere('status', 'LIKE', '%' . $search . '%');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->where('status', '=', 'order')->get(
|
||||||
|
);
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showAuthorization($id)
|
||||||
|
{
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
return view('lpj::permohonan.authorization.show', compact('permohonan'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateAuthorization(Request $request, $id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
$permohonan->status = $request->status;
|
||||||
|
$permohonan->keterangan = $request->keterangan;
|
||||||
|
$permohonan->save();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()->route('authorization.show', $id)->with('error', 'Failed to update permohonan');
|
||||||
|
}
|
||||||
|
|
||||||
|
return redirect()->route('authorization.index')->with('success', 'Permohonan updated successfully');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
164
app/Http/Controllers/RegionController.php
Normal file
164
app/Http/Controllers/RegionController.php
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
use Modules\Lpj\Http\Requests\RegionRequest;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Exports\RegionExport;
|
||||||
|
|
||||||
|
|
||||||
|
class RegionController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::region.index');
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::region.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(RegionRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
// Save to database
|
||||||
|
Regions::create($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.region.index')
|
||||||
|
->with('success', 'region created successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.region.create')
|
||||||
|
->with('error', 'Failed to create region');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$region = Regions::find($id);
|
||||||
|
return view('lpj::region.create', compact('region'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(RegionRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
// Update in database
|
||||||
|
$region = Regions::find($id);
|
||||||
|
$region->update($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.region.index')
|
||||||
|
->with('success', 'Region updated successfully');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.region.edit', $id)
|
||||||
|
->with('error', 'Failed to update region');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// Delete from database
|
||||||
|
$region = Regions::find($id);
|
||||||
|
$region->delete();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Region deleted successfully']);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete region']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if (is_null($this->user) || !$this->user->can('region.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = Regions::query();
|
||||||
|
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if($request->has('sortOrder') && !empty($request->get('sortOrder'))){
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// dump($data);
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new RegionExport, 'region.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
260
app/Http/Controllers/TeamsController.php
Normal file
260
app/Http/Controllers/TeamsController.php
Normal file
@@ -0,0 +1,260 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Http\RedirectResponse;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
use Modules\Usermanagement\Models\User;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
use Modules\Lpj\Models\TeamsUsers;
|
||||||
|
use Modules\Lpj\Http\Requests\TeamsRequest;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Modules\Lpj\Exports\TeamPenilaianExport;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
|
||||||
|
class TeamsController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::teams.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
|
||||||
|
// cek region apakah sudah ada di tabel teams
|
||||||
|
$regionTeam = Teams::pluck('regions_id')->toArray();
|
||||||
|
$region = Regions::whereNotIn('id', $regionTeam)->get();
|
||||||
|
|
||||||
|
// cek user apakah sudah ada di tabel teams_users
|
||||||
|
$userTeam = TeamsUsers::pluck('user_id')->toArray();
|
||||||
|
$user = User::whereNotIn('id', $userTeam)
|
||||||
|
->with('roles')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return view('lpj::teams.form', compact('region', 'user'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(TeamsRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
try {
|
||||||
|
$teams = Teams::create($validate);
|
||||||
|
|
||||||
|
$users = $request->input('user', []);
|
||||||
|
|
||||||
|
// loop untuk insert data users ke tabel teams_users
|
||||||
|
foreach ($users as $user) {
|
||||||
|
TeamsUsers::create([
|
||||||
|
'teams_id' => $teams->id,
|
||||||
|
'user_id' => $user
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.teams.index')
|
||||||
|
->with('success', 'Data saved successfully. ');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.teams.create')
|
||||||
|
->with('error', 'Failed to save data. ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
return view('lpj::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$teams = Teams::find($id);
|
||||||
|
|
||||||
|
|
||||||
|
$region = Regions::all();
|
||||||
|
$usedUsers = TeamsUsers::where('teams_id', '!=', $id)->pluck('user_id')->toArray();
|
||||||
|
$user = User::whereNotIn('id', $usedUsers)
|
||||||
|
->with('roles')
|
||||||
|
->get();
|
||||||
|
// Ambil user yang sudah ada di tim ini
|
||||||
|
$selectedUsers = $teams->teamsUsers->pluck('user_id')->toArray();
|
||||||
|
|
||||||
|
return view('lpj::teams.form', compact('teams', 'region', 'user', 'selectedUsers'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(TeamsRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
try {
|
||||||
|
$teams = Teams::findOrFail($id);
|
||||||
|
|
||||||
|
// Update data tim
|
||||||
|
$teams->update($validate);
|
||||||
|
$userIds = $request->input('user', []);
|
||||||
|
|
||||||
|
$teams->teamsUsers()->delete();
|
||||||
|
|
||||||
|
|
||||||
|
foreach ($userIds as $userId) {
|
||||||
|
TeamsUsers::create([
|
||||||
|
'teams_id' => $teams->id,
|
||||||
|
'user_id' => $userId
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.teams.index')
|
||||||
|
->with('success', 'Data updated successfully. ');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
|
||||||
|
DB::rollBack();
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.teams.create')
|
||||||
|
->with('error', 'Failed to update data. ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
DB::beginTransaction();
|
||||||
|
try {
|
||||||
|
|
||||||
|
$teams = Teams::findOrFail($id);
|
||||||
|
$teams->teamsUsers()->delete();
|
||||||
|
|
||||||
|
// Hapus tim
|
||||||
|
$teams->delete();
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Team has been deleted successfully']);
|
||||||
|
|
||||||
|
} catch (Exception $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete Team']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('teams.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inisialisasi query
|
||||||
|
$query = Teams::select('teams.id as id', 'teams.name as team_name', 'regions.name as region_name')
|
||||||
|
->join('regions', 'teams.regions_id', '=', 'regions.id')
|
||||||
|
->leftJoin('teams_users', 'teams.id', '=', 'teams_users.teams_id')
|
||||||
|
->leftJoin('users', 'teams_users.user_id', '=', 'users.id')
|
||||||
|
->addSelect('users.id as user_id', 'users.name as user_name');
|
||||||
|
|
||||||
|
// Filter pencarian
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('teams.name', 'LIKE', "%$search%")
|
||||||
|
->orWhere('regions.name', 'LIKE', "%$search%")
|
||||||
|
->orWhere('users.name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sorting
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hitung total records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Pagination
|
||||||
|
$size = $request->get('size', 10);
|
||||||
|
$page = $request->get('page', 1);
|
||||||
|
$offset = ($page - 1) * $size;
|
||||||
|
|
||||||
|
// Ambil data dengan pagination
|
||||||
|
$data = $query->skip($offset)->take($size)->get();
|
||||||
|
$filteredRecords = $data->count();
|
||||||
|
$pageCount = ceil($totalRecords / $size);
|
||||||
|
|
||||||
|
// Ambil ID pengguna dari hasil query
|
||||||
|
$userIds = $data->pluck('user_id')->unique();
|
||||||
|
|
||||||
|
// Ambil data pengguna dengan peran mereka
|
||||||
|
$users = User::whereIn('id', $userIds)
|
||||||
|
->with('roles')
|
||||||
|
->get()
|
||||||
|
->keyBy('id');
|
||||||
|
|
||||||
|
// Format data
|
||||||
|
$formattedData = $data->groupBy('id')->map(function ($group) use ($users) {
|
||||||
|
$team = $group->first();
|
||||||
|
$team->user_team = $group->map(function ($item) use ($users) {
|
||||||
|
$user = $users->get($item->user_id);
|
||||||
|
return [
|
||||||
|
'nama' => $item->user_name,
|
||||||
|
'roles' => $user ? $user->roles->pluck('name')->toArray() : [],
|
||||||
|
];
|
||||||
|
})->toArray();
|
||||||
|
return $team;
|
||||||
|
})->values();
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $page,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $formattedData
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new TeamPenilaianExport(), 'team-penilai.xlsx');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
179
app/Http/Controllers/TenderController.php
Normal file
179
app/Http/Controllers/TenderController.php
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Modules\Lpj\Models\Penawaran;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Models\PenawaranTender;
|
||||||
|
use Modules\Lpj\Exports\PenawaranTenderExport;
|
||||||
|
use Modules\Lpj\Http\Requests\TenderPenawaranRequest;
|
||||||
|
use Modules\Lpj\Models\JenisLaporan;
|
||||||
|
use Modules\Lpj\Models\KJPP;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Lpj\Models\StatusPermohonan;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
|
|
||||||
|
class TenderController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function penawaran_index()
|
||||||
|
{
|
||||||
|
return view('lpj::penawaran/index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function penawaran_create($id)
|
||||||
|
{
|
||||||
|
$status = StatusPermohonan::all();
|
||||||
|
$tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all();
|
||||||
|
$jenis_laporan = JenisLaporan::all();
|
||||||
|
$kjpp = KJPP::all();
|
||||||
|
$permohonan = Permohonan::find($id);
|
||||||
|
$permohonanId = $permohonan->id;
|
||||||
|
$permohonanNomorRegistrasi = $permohonan->nomor_registrasi;
|
||||||
|
|
||||||
|
return view('lpj::penawaran/create', compact('status', 'tujuan_penilaian_kjpp', 'jenis_laporan', 'kjpp', 'permohonanId', 'permohonanNomorRegistrasi'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function penawaran_store(TenderPenawaranRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validated = $request->validated();
|
||||||
|
|
||||||
|
if ($validated) {
|
||||||
|
$validated['nomor_registrasi'] = $request->nomor_registrasi;
|
||||||
|
|
||||||
|
$validated['nama_kjpp_sebelumnya'] = json_encode($request->input('nama_kjpp_sebelumnya'));
|
||||||
|
|
||||||
|
PenawaranTender::create($validated);
|
||||||
|
|
||||||
|
return redirect()
|
||||||
|
->route('tender.penawaran.index')
|
||||||
|
->with('success', 'Data Penawaran created successfully');
|
||||||
|
} else {
|
||||||
|
return redirect()
|
||||||
|
->route('tender.penawaran.createPenawaran', $id)
|
||||||
|
->with('error', 'Validation failed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function penawaran_show($id)
|
||||||
|
{
|
||||||
|
return view('lpj::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
return view('lpj::edit');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(Request $request, $id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
public function datatablesPenawaran(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('penawaran.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = PenawaranTender::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('nama_kjpp_sebelumnya', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('tanggal_penilaian_sebelumnya', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function exportPenawaran()
|
||||||
|
{
|
||||||
|
return Excel::download(new PenawaranTenderExport, 'kjpp.xlsx');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function proses_penawaran_index()
|
||||||
|
{
|
||||||
|
return view('lpj::proses_penawaran/index');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function penawaran_ulang_index()
|
||||||
|
{
|
||||||
|
return view('lpj::penawaran_ulang/index');
|
||||||
|
}
|
||||||
|
}
|
||||||
174
app/Http/Controllers/TujuanPenilaianKJPPController.php
Normal file
174
app/Http/Controllers/TujuanPenilaianKJPPController.php
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Controllers;
|
||||||
|
|
||||||
|
use Throwable;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Maatwebsite\Excel\Facades\Excel;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaianKJPP;
|
||||||
|
use Modules\Lpj\Exports\TujuanPenilaianKJPPExport;
|
||||||
|
use Modules\Lpj\Http\Requests\JenisPenilaianKJPPRequest;
|
||||||
|
|
||||||
|
class TujuanPenilaianKJPPController extends Controller
|
||||||
|
{
|
||||||
|
public $user;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a listing of the resource.
|
||||||
|
*/
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
return view('lpj::tujuan_penilaian_kjpp.index');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for creating a new resource.
|
||||||
|
*/
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('lpj::tujuan_penilaian_kjpp.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Store a newly created resource in storage.
|
||||||
|
*/
|
||||||
|
public function store(JenisPenilaianKJPPRequest $request)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
TujuanPenilaianKJPP::create($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.tujuan_penilaian_kjpp.index')
|
||||||
|
->with('success', 'Tujuan Penilaian KJPP created successfully');
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.tujuan_penilaian_kjpp.create')
|
||||||
|
->with('success', 'Failed to create Tujuan Penilaian KJPP: ' . $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the specified resource.
|
||||||
|
*/
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
return view('lpj::show');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Show the form for editing the specified resource.
|
||||||
|
*/
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
|
||||||
|
return view('lpj::tujuan_penilaian_kjpp.create', compact('tujuanPenilaianKJPP'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the specified resource in storage.
|
||||||
|
*/
|
||||||
|
public function update(JenisPenilaianKJPPRequest $request, $id)
|
||||||
|
{
|
||||||
|
$validate = $request->validated();
|
||||||
|
|
||||||
|
if ($validate) {
|
||||||
|
try {
|
||||||
|
$tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
|
||||||
|
$tujuanPenilaianKJPP->update($validate);
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.tujuan_penilaian_kjpp.index')
|
||||||
|
->with('success', 'Tujuan Penilaian KJPP updated successfully');
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
return redirect()
|
||||||
|
->route('basicdata.tujuan_penilaian_kjpp.edit', $id)
|
||||||
|
->with('success', 'Failed to update Tujuan Penilaian KJPP: ' . $e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the specified resource from storage.
|
||||||
|
*/
|
||||||
|
public function destroy($id)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// Delete from database
|
||||||
|
$tujuanPenilaianKJPP = TujuanPenilaianKJPP::find($id);
|
||||||
|
$tujuanPenilaianKJPP->delete();
|
||||||
|
|
||||||
|
echo json_encode(['success' => true, 'message' => 'Tujuan Penilaian deleted successfully']);
|
||||||
|
} catch (Throwable $e) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Failed to delete deleted']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataForDatatables(Request $request)
|
||||||
|
{
|
||||||
|
if (is_null($this->user) || !$this->user->can('jenis_jaminan.view')) {
|
||||||
|
//abort(403, 'Sorry! You are not allowed to view users.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve data from the database
|
||||||
|
$query = TujuanPenilaianKJPP::query();
|
||||||
|
|
||||||
|
// Apply search filter if provided
|
||||||
|
if ($request->has('search') && !empty($request->get('search'))) {
|
||||||
|
$search = $request->get('search');
|
||||||
|
$query->where(function ($q) use ($search) {
|
||||||
|
$q->where('code', 'LIKE', "%$search%");
|
||||||
|
$q->orWhere('name', 'LIKE', "%$search%");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply sorting if provided
|
||||||
|
if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) {
|
||||||
|
$order = $request->get('sortOrder');
|
||||||
|
$column = $request->get('sortField');
|
||||||
|
$query->orderBy($column, $order);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the total count of records
|
||||||
|
$totalRecords = $query->count();
|
||||||
|
|
||||||
|
// Apply pagination if provided
|
||||||
|
if ($request->has('page') && $request->has('size')) {
|
||||||
|
$page = $request->get('page');
|
||||||
|
$size = $request->get('size');
|
||||||
|
$offset = ($page - 1) * $size; // Calculate the offset
|
||||||
|
|
||||||
|
$query->skip($offset)->take($size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the filtered count of records
|
||||||
|
$filteredRecords = $query->count();
|
||||||
|
|
||||||
|
// Get the data for the current page
|
||||||
|
$data = $query->get();
|
||||||
|
|
||||||
|
// Calculate the page count
|
||||||
|
$pageCount = ceil($totalRecords / $request->get('size'));
|
||||||
|
|
||||||
|
// Calculate the current page number
|
||||||
|
$currentPage = 0 + 1;
|
||||||
|
|
||||||
|
// Return the response data as a JSON object
|
||||||
|
return response()->json([
|
||||||
|
'draw' => $request->get('draw'),
|
||||||
|
'recordsTotal' => $totalRecords,
|
||||||
|
'recordsFiltered' => $filteredRecords,
|
||||||
|
'pageCount' => $pageCount,
|
||||||
|
'page' => $currentPage,
|
||||||
|
'totalCount' => $totalRecords,
|
||||||
|
'data' => $data,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
return Excel::download(new TujuanPenilaianKJPPExport, 'jenis_laporan.xlsx');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace Modules\Lpj\Http\Requests;
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Modules\Lpj\Rules\UniqueCifExceptZero;
|
||||||
|
|
||||||
class DebitureRequest extends FormRequest
|
class DebitureRequest extends FormRequest
|
||||||
{
|
{
|
||||||
@@ -21,7 +22,7 @@
|
|||||||
'nomor_rekening' => 'nullable|string|max:50',
|
'nomor_rekening' => 'nullable|string|max:50',
|
||||||
'name' => 'required',
|
'name' => 'required',
|
||||||
'registered_at' => 'nullable|date',
|
'registered_at' => 'nullable|date',
|
||||||
'npwp' => 'nullable|string|max:16',
|
'npwp' => 'nullable|string|min:15|max:16',
|
||||||
'email' => 'nullable|email',
|
'email' => 'nullable|email',
|
||||||
'phone' => 'nullable|string|max:15',
|
'phone' => 'nullable|string|max:15',
|
||||||
'address' => 'nullable|string',
|
'address' => 'nullable|string',
|
||||||
@@ -29,10 +30,10 @@
|
|||||||
'status' => 'nullable|boolean'
|
'status' => 'nullable|boolean'
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->method() == 'PUT') {
|
if($this->method() == 'PUT'){
|
||||||
$rules['cif'] = 'nullable|unique:debitures,cif,' . $this->id;
|
$rules['cif'] = ['required', new UniqueCifExceptZero($this->id)];
|
||||||
} else {
|
}else{
|
||||||
$rules['cif'] = 'nullable|unique:debitures,cif';
|
$rules['cif'] = ['required', new UniqueCifExceptZero(null)];
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
|
|||||||
43
app/Http/Requests/DetailDokumenJaminanRequest.php
Normal file
43
app/Http/Requests/DetailDokumenJaminanRequest.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class DokumenJaminanRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
: array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'debiture_id' => 'required|exists:debitures,id',
|
||||||
|
'pemilik_jaminan_id' => 'required',
|
||||||
|
'jenis_jaminan_id' => 'required',
|
||||||
|
'jenis_legalitas_jaminan_id' => 'required',
|
||||||
|
'dokumen_jaminan' => 'nullable|file|mimes:pdf',
|
||||||
|
'keterangan' => 'nullable|string|max:255',
|
||||||
|
'province_code' => 'nullable|exists:provinces,code',
|
||||||
|
'city_code' => 'nullable|exists:cities,code',
|
||||||
|
'district_code' => 'nullable|exists:districts,code',
|
||||||
|
'village_code' => 'nullable|exists:villages,code',
|
||||||
|
'name' => 'required',
|
||||||
|
'address' => 'nullable|string',
|
||||||
|
'postal_code' => 'nullable|string|max:10',
|
||||||
|
'status' => 'nullable|boolean',
|
||||||
|
];
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
: bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,14 +16,10 @@
|
|||||||
'debiture_id' => 'required|exists:debitures,id',
|
'debiture_id' => 'required|exists:debitures,id',
|
||||||
'pemilik_jaminan_id' => 'required',
|
'pemilik_jaminan_id' => 'required',
|
||||||
'jenis_jaminan_id' => 'required',
|
'jenis_jaminan_id' => 'required',
|
||||||
'jenis_legalitas_jaminan_id' => 'required',
|
|
||||||
'dokumen_jaminan' => 'nullable|file|mimes:pdf',
|
|
||||||
'keterangan' => 'nullable|string|max:255',
|
|
||||||
'province_code' => 'nullable|exists:provinces,code',
|
'province_code' => 'nullable|exists:provinces,code',
|
||||||
'city_code' => 'nullable|exists:cities,code',
|
'city_code' => 'nullable|exists:cities,code',
|
||||||
'district_code' => 'nullable|exists:districts,code',
|
'district_code' => 'nullable|exists:districts,code',
|
||||||
'village_code' => 'nullable|exists:villages,code',
|
'village_code' => 'nullable|exists:villages,code',
|
||||||
'name' => 'required',
|
|
||||||
'address' => 'nullable|string',
|
'address' => 'nullable|string',
|
||||||
'postal_code' => 'nullable|string|max:10',
|
'postal_code' => 'nullable|string|max:10',
|
||||||
'status' => 'nullable|boolean',
|
'status' => 'nullable|boolean',
|
||||||
|
|||||||
46
app/Http/Requests/IjinUsahaRequest.php
Normal file
46
app/Http/Requests/IjinUsahaRequest.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class IjinUsahaRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|string|not_regex:/^\d+$/|max:255'
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:50|unique:ijin_usaha,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:50|unique:ijin_usaha,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode Ijin Usaha harus diisi!',
|
||||||
|
'code.max' => 'Kode Ijin Usaha maksimal 255 huruf!',
|
||||||
|
'code.unique' => 'Kode Ijin Usaha tidak boleh sama!',
|
||||||
|
'name.required' => 'Nama Ijin Usaha harus diisi!',
|
||||||
|
'name.not_regex' => 'Nama Ijin Usaha harus berupa huruf!',
|
||||||
|
'name.max' => 'Nama Ijin Usaha maksimal 255 huruf!'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace Modules\Lpj\Http\Requests;
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use daengdeni\LaravelIdGenerator\IdGenerator;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class JenisJaminanRequest extends FormRequest
|
class JenisJaminanRequest extends FormRequest
|
||||||
{
|
{
|
||||||
@@ -12,16 +14,12 @@
|
|||||||
public function rules()
|
public function rules()
|
||||||
: array
|
: array
|
||||||
{
|
{
|
||||||
$rules = [
|
return [
|
||||||
'name' => 'required|max:255',
|
'code' => 'required|max:5',
|
||||||
|
'name' => 'required|max:255',
|
||||||
|
'slug' => 'required|max:255',
|
||||||
|
'jenis_legalitas_jaminan_id' => 'nullable',
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->method() == 'PUT') {
|
|
||||||
$rules['code'] = 'required|max:50|unique:jenis_jaminan,code,' . $this->id;
|
|
||||||
} else {
|
|
||||||
$rules['code'] = 'required|max:50|unique:jenis_jaminan,code';
|
|
||||||
}
|
|
||||||
return $rules;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,4 +30,21 @@
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function prepareForValidation()
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
if ($this->method() == 'POST') {
|
||||||
|
$this->merge([
|
||||||
|
'code' => IdGenerator::generate(
|
||||||
|
['table' => 'jenis_jaminan', 'length' => 5, 'prefix' => 'JJ', 'field' => 'code'],
|
||||||
|
)
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->merge([
|
||||||
|
'jenis_legalitas_jaminan_id' => json_encode($this->jenis_legalitas_jaminan_id),
|
||||||
|
'slug' => Str::slug($this->name),
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
46
app/Http/Requests/JenisLaporanRequest.php
Normal file
46
app/Http/Requests/JenisLaporanRequest.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class JenisLaporanRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'code' => 'required|max:5',
|
||||||
|
'name' => 'required|max:255',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:5|unique:jenis_laporan,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:5|unique:jenis_laporan,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode Jenis Laporan Wajib diisi!',
|
||||||
|
'code.max' => 'Kode Jenis Laporan maksimum 5 huruf!',
|
||||||
|
'code.unique' => 'Kode Jenis Laporan tidak boleh sama!',
|
||||||
|
'name.required' => 'Nama Jenis Laporan Wajib diisi!',
|
||||||
|
'name.max' => 'Nama Jenis Laporan Wajib diisi!'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
namespace Modules\Lpj\Http\Requests;
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use daengdeni\LaravelIdGenerator\IdGenerator;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Support\Str;
|
||||||
|
|
||||||
class JenisLegalitasJaminanRequest extends FormRequest
|
class JenisLegalitasJaminanRequest extends FormRequest
|
||||||
{
|
{
|
||||||
@@ -12,16 +14,11 @@
|
|||||||
public function rules()
|
public function rules()
|
||||||
: array
|
: array
|
||||||
{
|
{
|
||||||
$rules = [
|
return [
|
||||||
|
'code' => 'required|max:6',
|
||||||
'name' => 'required|max:255',
|
'name' => 'required|max:255',
|
||||||
|
'slug' => 'required|max:255',
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->method() == 'PUT') {
|
|
||||||
$rules['code'] = 'required|max:50|unique:jenis_legalitas_jaminan,code,' . $this->id;
|
|
||||||
} else {
|
|
||||||
$rules['code'] = 'required|max:50|unique:jenis_legalitas_jaminan,code';
|
|
||||||
}
|
|
||||||
return $rules;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -32,4 +29,20 @@
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function prepareForValidation()
|
||||||
|
{
|
||||||
|
if($this->method() == 'POST' && $this->code == null) {
|
||||||
|
$this->merge([
|
||||||
|
'code' => IdGenerator::generate(
|
||||||
|
['table' => 'jenis_legalitas_jaminan', 'length' => 6, 'prefix' => 'JLJ', 'field' => 'code'],
|
||||||
|
),
|
||||||
|
'slug' => Str::slug($this->name),
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
$this->merge([
|
||||||
|
'slug' => Str::slug($this->name),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
45
app/Http/Requests/JenisPenilaianKJPPRequest.php
Normal file
45
app/Http/Requests/JenisPenilaianKJPPRequest.php
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class JenisPenilaianKJPPRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'code' => 'required|max:5',
|
||||||
|
'name' => 'required|max:255',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:5|unique:tujuan_penilaian_kjpp,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode Tujuan Penilaian KJPP Wajib diisi!',
|
||||||
|
'code.max' => 'Kode Tujuan Penilaian KJPP maksimum 5 huruf!',
|
||||||
|
'code.unique' => 'Kode Tujuan Penilaian KJPP tidak boleh sama!',
|
||||||
|
'name.required' => 'Nama Tujuan Penilaian KJPP Wajib diisi!',
|
||||||
|
'name.max' => 'Nama Tujuan Penilaian KJPP Wajib diisi!'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
41
app/Http/Requests/JenisPenilaianRequest.php
Normal file
41
app/Http/Requests/JenisPenilaianRequest.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class JenisPenilaianRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|string|max:255',
|
||||||
|
'status' => 'nullable|boolean',
|
||||||
|
'authorized_at' => 'nullable|datetime',
|
||||||
|
'authorized_status' => 'nullable|string|max:1',
|
||||||
|
'authorized_by' => 'nullable|exists:users,id',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code,' . $this->id;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:jenis_penilaian,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
111
app/Http/Requests/KJPPRequest.php
Normal file
111
app/Http/Requests/KJPPRequest.php
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use daengdeni\LaravelIdGenerator\IdGenerator;
|
||||||
|
|
||||||
|
class KJPPRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|string|not_regex:/^\d+$/|max:255',
|
||||||
|
'jenis_kantor' => 'required',
|
||||||
|
'nomor_ijin_usaha' => 'required',
|
||||||
|
'province_code' => 'required',
|
||||||
|
'city_code' => 'required',
|
||||||
|
'district_code' => 'required',
|
||||||
|
'village_code' => 'required',
|
||||||
|
'address' => 'required',
|
||||||
|
'postal_code' => 'required|numeric',
|
||||||
|
'nomor_telepon_kantor' => 'required|numeric|digits_between:8,15',
|
||||||
|
'email_kantor' => 'required|email',
|
||||||
|
'nama_pimpinan' => 'required|string|not_regex:/^\d+$/|max:255',
|
||||||
|
'nomor_hp_pimpinan' => 'required|numeric|digits_between:10,15',
|
||||||
|
'nama_pic_reviewer' => 'required|string|not_regex:/^\d+$/|max:255',
|
||||||
|
'nomor_hp_pic_reviewer' => 'required|numeric|digits_between:10,15',
|
||||||
|
'nama_pic_admin' => 'required|string|not_regex:/^\d+$/|max:255',
|
||||||
|
'nomor_hp_pic_admin' => 'required|numeric|digits_between:10,15',
|
||||||
|
'nama_pic_marketing' => 'required|string|not_regex:/^\d+$/|max:255',
|
||||||
|
'nomor_hp_pic_marketing' => 'required|numeric|digits_between:10,15',
|
||||||
|
'ijin_usaha_id' => 'required|array',
|
||||||
|
'ijin_usaha_id.*' => 'exists:ijin_usaha,code',
|
||||||
|
'jenis_aset_id' => 'required|array',
|
||||||
|
'jenis_aset_id.*' => 'exists:jenis_jaminan,code',
|
||||||
|
'attachment' => 'nullable|mimes:pdf|max:1024'
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:50|unique:kjpp,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:50|unique:kjpp,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode KJPP Wajib diisi!',
|
||||||
|
'code.max' => 'Kode KJPP maksimal 255 huruf!',
|
||||||
|
'code.unique' => 'Kode KJPP tidak boleh sama!',
|
||||||
|
'name.required' => 'Nama KJPP Wajib diisi!',
|
||||||
|
'name.not_regex' => 'Nama KJPP harus berupa huruf!',
|
||||||
|
'name.max' => 'Nama KJPP maksimal 255 huruf!',
|
||||||
|
'jenis_kantor.required' => 'Jenis Kantor Wajib diisi!',
|
||||||
|
'nomor_ijin_usaha.required' => 'Nomor Ijin Usaha Wajib diisi!',
|
||||||
|
'nomor_ijin_usaha.max' => 'Nomor Ijin Usaha maksimal 255 huruf!',
|
||||||
|
'province_code.required' => 'Provinsi Wajib diisi!',
|
||||||
|
'city_code.required' => 'Kota / Kabupaten Wajib diisi!',
|
||||||
|
'district_code.required' => 'Kecamatan Wajib diisi!',
|
||||||
|
'village_code.required' => 'Kelurahan Wajib diisi!',
|
||||||
|
'postal_code.required' => 'Kode Pos Wajib diisi!',
|
||||||
|
'postal_code.numeric' => 'Kode Pos harus berupa angka!',
|
||||||
|
'address.required' => 'Alamat Kantor Wajib diisi!',
|
||||||
|
'nomor_telepon_kantor.required' => 'Nomor Telepon Kantor Wajib diisi!',
|
||||||
|
'nomor_telepon_kantor.numeric' => 'Nomor Telepon Kantor harus berupa angka!',
|
||||||
|
'nomor_telepon_kantor.digits_between' => 'Nomor Telepon Kantor minimum 8 digit dan maksimum 15 digit!',
|
||||||
|
'email_kantor.required' => 'Email Kantor Wajib diisi!',
|
||||||
|
'email_kantor.email' => 'Email Kantor tidak valid!',
|
||||||
|
'nama_pimpinan.required' => 'Nama Pimpinan Wajib diisi!',
|
||||||
|
'nama_pimpinan.not_regex' => 'Nama Pimpinan harus berupa huruf!',
|
||||||
|
'nomor_hp_pimpinan.required' => 'Nomor HP Pimpinan Wajib diisi!',
|
||||||
|
'nomor_hp_pimpinan.numeric' => 'Nomor HP Pimpinan harus berupa angka!',
|
||||||
|
'nomor_hp_pimpinan.digits_between' => 'Nomor HP Pimpinan minimum 10 digit dan maksimum 15 digit!',
|
||||||
|
'nama_pic_reviewer.required' => 'Nama PIC Reviewer Wajib diisi!',
|
||||||
|
'nama_pic_reviewer.not_regex' => 'Nama PIC Reviewer harus berupa huruf!',
|
||||||
|
'nomor_hp_pic_reviewer.required' => 'Nomor HP PIC Reviewer Wajib diisi!',
|
||||||
|
'nomor_hp_pic_reviewer.numeric' => 'Nomor HP PIC Reviewer harus berupa angka!',
|
||||||
|
'nomor_hp_pic_reviewer.digits_between' => 'Nomor HP PIC Reviewer minimum 10 digit dan maksimum 15 digit!',
|
||||||
|
'nama_pic_admin.required' => 'Nama PIC Admin Wajib diisi!',
|
||||||
|
'nama_pic_admin.not_regex' => 'Nama PIC Admin harus berupa huruf!',
|
||||||
|
'nomor_hp_pic_admin.required' => 'Nomor HP PIC Admin Wajib diisi!',
|
||||||
|
'nomor_hp_pic_admin.numeric' => 'Nomor HP PIC Admin harus berupa angka!',
|
||||||
|
'nomor_hp_pic_admin.digits_between' => 'Nomor HP PIC Admin minimum 10 digit dan maksimum 15 digit!',
|
||||||
|
'nama_pic_marketing.required' => 'Nama PIC Marketing Wajib diisi!',
|
||||||
|
'nama_pic_marketing.not_regex' => 'Nama PIC Marketing harus berupa huruf!',
|
||||||
|
'nomor_hp_pic_marketing.required' => 'Nomor HP PIC Marketing Wajib diisi!',
|
||||||
|
'nomor_hp_pic_marketing.numeric' => 'Nomor HP PIC Marketing harus berupa angka!',
|
||||||
|
'nomor_hp_pic_marketing.digits_between' => 'Nomor HP PIC Marketing minimum 10 digit dan maksimum 15 digit!',
|
||||||
|
'ijin_usaha_id.required' => 'Ijin Usaha Wajib diisi!',
|
||||||
|
'ijin_usaha_id.min' => 'Ijin Usaha Wajib diisi minimal satu atau lebih!',
|
||||||
|
'jenis_aset_id.required' => 'Jenis Aset Wajib diisi!',
|
||||||
|
'jenis_aset_id.min' => 'Jenis Aset Wajib diisi minimal satu atau lebih!',
|
||||||
|
'attachment.mimes' => 'Attachment harus berformat pdf!',
|
||||||
|
'attachment.max' => 'Attachment berukuran maksimum 1 MB!',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,8 +28,8 @@
|
|||||||
'status' => 'nullable|boolean',
|
'status' => 'nullable|boolean',
|
||||||
];
|
];
|
||||||
|
|
||||||
$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id;
|
//$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,nomor_id,debiture_id,' . $this->debiture_id;
|
||||||
|
$rules['nomor_id'] = 'nullable|max:16|unique:pemilik_jaminan,debiture_id,' . $this->debiture_id;
|
||||||
return $rules;
|
return $rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
59
app/Http/Requests/PenilaianRequest.php
Normal file
59
app/Http/Requests/PenilaianRequest.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class PenilaianRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
$action = $this->input('action');
|
||||||
|
|
||||||
|
if ($action === 'revisi') {
|
||||||
|
return [
|
||||||
|
'dokumen' => 'required|file|mimes:pdf',
|
||||||
|
'keterangan' => 'required|string',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return [
|
||||||
|
'jenis_penilaian_id' => 'required|max:255',
|
||||||
|
'teams_id' => 'required|max:255',
|
||||||
|
'tanggal_kunjungan' => 'required|max:255',
|
||||||
|
'status' => 'required|string',
|
||||||
|
'nomor_registrasi' => 'required|string',
|
||||||
|
'surveyor_id' => 'nullable|required_without:penilai_surveyor_id',
|
||||||
|
'penilaian_id' => 'nullable|required_without:penilai_surveyor_id',
|
||||||
|
'penilai_surveyor_id' => 'nullable|required_without_all:surveyor_id,penilaian_id',
|
||||||
|
'keterangan' => 'nullable',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function prepareForValidation()
|
||||||
|
{
|
||||||
|
// Menetapkan nilai default untuk 'status' jika tidak ada dalam request
|
||||||
|
$this->merge([
|
||||||
|
'status' => $this->status ?? 'assign',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,13 +14,17 @@
|
|||||||
: array
|
: array
|
||||||
{
|
{
|
||||||
$rules = [
|
$rules = [
|
||||||
'nomor_registrasi' => 'nullable|string|max:10',
|
'nomor_registrasi' => 'nullable|string|max:10',
|
||||||
'tanggal_permohonan' => 'nullable|date',
|
'tanggal_permohonan' => 'nullable|date',
|
||||||
'user_id' => 'nullable|exists:users,id',
|
'user_id' => 'nullable|exists:users,id',
|
||||||
'branch_id' => 'required|exists:branches,id',
|
'branch_id' => 'required|exists:branches,id',
|
||||||
'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id',
|
'tujuan_penilaian_id' => 'required|exists:tujuan_penilaian,id',
|
||||||
'debiture_id' => 'required|exists:debitures,id',
|
'debiture_id' => 'required|exists:debitures,id',
|
||||||
'status' => 'required|string',
|
'status' => 'required|string',
|
||||||
|
'jenis_fasilitas_kredit_id' => 'required|exists:jenis_fasilitas_kredit,id',
|
||||||
|
'nilai_plafond_id' => 'required|exists:nilai_plafond,id',
|
||||||
|
'status_bayar' => 'required|string',
|
||||||
|
'nilai_njop' => 'nullable|numeric'
|
||||||
];
|
];
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
@@ -40,10 +44,11 @@
|
|||||||
if (!$this->id) {
|
if (!$this->id) {
|
||||||
$this->merge([
|
$this->merge([
|
||||||
'nomor_registrasi' => IdGenerator::generate(
|
'nomor_registrasi' => IdGenerator::generate(
|
||||||
['table' => 'permohonan', 'length' => 10, 'prefix'=>'REG', 'field' => 'nomor_registrasi'],
|
['table' => 'permohonan', 'length' => 10, 'prefix' => 'REG', 'field' => 'nomor_registrasi'],
|
||||||
),
|
),
|
||||||
'tanggal_permohonan' => date('Y-m-d'),
|
'tanggal_permohonan' => date('Y-m-d'),
|
||||||
'user_id' => auth()->user()->id,
|
'user_id' => auth()->user()->id,
|
||||||
|
'branch_id' => auth()->user()->branch_id,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
38
app/Http/Requests/RegionRequest.php
Normal file
38
app/Http/Requests/RegionRequest.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class RegionRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|string|max:255',
|
||||||
|
'status' => 'nullable|boolean',
|
||||||
|
'authorized_at' => 'nullable|datetime',
|
||||||
|
'authorized_status' => 'nullable|string|max:1',
|
||||||
|
'authorized_by' => 'nullable|exists:users,id',
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:regions,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:regions,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
$rules = [
|
$rules = [
|
||||||
'description' => 'nullable|max:255',
|
'description' => 'nullable|max:255',
|
||||||
'status' => 'required|boolean',
|
'status' => 'required|boolean',
|
||||||
|
'slug' => 'nullable|max:255',
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($this->method() == 'PUT') {
|
if ($this->method() == 'PUT') {
|
||||||
@@ -37,9 +38,9 @@
|
|||||||
|
|
||||||
public function prepareForValidation()
|
public function prepareForValidation()
|
||||||
{
|
{
|
||||||
$this->merge([
|
return $this->merge([
|
||||||
'status' => isset($this->status) ? 1 : 0,
|
'status' => isset($this->status) ? 1 : 0,
|
||||||
'slug'=> Str::slug($this->name)
|
'slug' => Str::slug($this->name),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
41
app/Http/Requests/TeamsRequest.php
Normal file
41
app/Http/Requests/TeamsRequest.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class TeamsRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'name' => 'required|string|max:255',
|
||||||
|
'status' => 'nullable|boolean',
|
||||||
|
'regions_id' => 'required|nullable|exists:regions,id',
|
||||||
|
'user.*' => 'nullable|exists:users,id',
|
||||||
|
'authorized_at' => 'nullable|datetime',
|
||||||
|
'authorized_status' => 'nullable|string|max:1',
|
||||||
|
'authorized_by' => 'nullable|exists:users,id',
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:teams,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|string|max:3|unique:teams,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
75
app/Http/Requests/TenderPenawaranRequest.php
Normal file
75
app/Http/Requests/TenderPenawaranRequest.php
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Http\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class TenderPenawaranRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*/
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
$rules = [
|
||||||
|
'nama_kjpp_sebelumnya' => 'required|array',
|
||||||
|
'nama_kjpp_sebelumnya.*' => 'exists:kjpp,name',
|
||||||
|
'biaya_kjpp_sebelumnya' => 'required|numeric',
|
||||||
|
'tanggal_penilaian_sebelumnya' => 'required',
|
||||||
|
'nomor_registrasi' => 'required',
|
||||||
|
'tujuan_penilaian_kjpp_id' => 'required',
|
||||||
|
'jenis_laporan_id' => 'required',
|
||||||
|
'start_date' => 'required',
|
||||||
|
'end_date' => 'required',
|
||||||
|
'catatan' => 'nullable',
|
||||||
|
'status' => 'required'
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($this->method() == 'PUT') {
|
||||||
|
$rules['code'] = 'required|max:50|unique:penawaran,code,' . $this->id;
|
||||||
|
} else {
|
||||||
|
$rules['code'] = 'required|max:50|unique:penawaran,code';
|
||||||
|
}
|
||||||
|
|
||||||
|
return $rules;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*/
|
||||||
|
public function authorize(): bool
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function messages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'code.required' => 'Kode Penawaran Wajib diisi!',
|
||||||
|
'code.max' => 'Kode Penawaran maksimal 255 huruf!',
|
||||||
|
'code.unique' => 'Kode Penawaran tidak boleh sama!',
|
||||||
|
'nama_kjpp_sebelumnya.required' => 'Nama KJPP Sebelumnya Wajib diisi!',
|
||||||
|
'biaya_kjpp_sebelumnya.required' => 'Biaya KJPP Sebelumnya Wajib diisi!',
|
||||||
|
'biaya_kjpp_sebelumnya.numeric' => 'Biaya KJPP Sebelumnya harus berupa angka!',
|
||||||
|
'tanggal_penilaian_sebelumnya.required' => 'Tanggal Penilaian Sebelumnya Wajib diisi!',
|
||||||
|
'nomor_registrasi.required' => 'Nomor Registrasi Wajib diisi!',
|
||||||
|
'tujuan_penilaian_kjpp_id.required' => 'Tujuan Penilaian KJPP Wajib diisi!',
|
||||||
|
'jenis_laporan_id.required' => 'Jenis Laporan Wajib diisi!',
|
||||||
|
'start_date.required' => 'Tanggal Awal Wajib diisi!',
|
||||||
|
'end_date.required' => 'Tanggal Akhir Wajib diisi!',
|
||||||
|
'status.required' => 'Status Wajib diisi!'
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator($validator)
|
||||||
|
{
|
||||||
|
$validator->after(function ($validator) {
|
||||||
|
$startDate = strtotime($this->input('start_date'));
|
||||||
|
$endDate = strtotime($this->input('end_date'));
|
||||||
|
|
||||||
|
if ($endDate < $startDate) {
|
||||||
|
$validator->errors()->add('end_date', 'Tanggal Akhir tidak boleh lebih awal dari Tanggal Awal.');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
use Modules\Lpj\Database\Factories\BranchFactory;
|
use Modules\Lpj\Database\Factories\BranchFactory;
|
||||||
|
|
||||||
class Branch extends Base
|
class Branch extends Base
|
||||||
|
{
|
||||||
|
protected $table = 'branches';
|
||||||
|
protected $fillable = ['code', 'name', 'status', 'authorized_at', 'authorized_status', 'authorized_by'];
|
||||||
|
|
||||||
|
public function debitures()
|
||||||
{
|
{
|
||||||
protected $table = 'branches';
|
return $this->hasMany(Debiture::class, 'branch_id', 'id');
|
||||||
protected $fillable = ['code', 'name', 'status', 'authorized_at', 'authorized_status', 'authorized_by'];
|
|
||||||
|
|
||||||
public function debitures()
|
|
||||||
{
|
|
||||||
return $this->hasMany(Debiture::class, 'branch_id', 'id');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -56,4 +56,8 @@
|
|||||||
return $this->belongsTo(Village::class, 'village_code', 'code');
|
return $this->belongsTo(Village::class, 'village_code', 'code');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function documents(){
|
||||||
|
return $this->hasMany(DokumenJaminan::class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
34
app/Models/DetailDokumenJaminan.php
Normal file
34
app/Models/DetailDokumenJaminan.php
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Modules\Location\Models\City;
|
||||||
|
use Modules\Location\Models\District;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
use Modules\Location\Models\Village;
|
||||||
|
use Modules\Lpj\Database\Factories\DokumenJaminanFactory;
|
||||||
|
|
||||||
|
class DetailDokumenJaminan extends Base
|
||||||
|
{
|
||||||
|
protected $table = 'detail_dokumen_jaminan';
|
||||||
|
protected $fillable = [
|
||||||
|
'dokumen_jaminan_id',
|
||||||
|
'jenis_legalitas_jaminan_id',
|
||||||
|
'name',
|
||||||
|
'dokumen_jaminan',
|
||||||
|
'keterangan',
|
||||||
|
|
||||||
|
'status',
|
||||||
|
'authorized_at',
|
||||||
|
'authorized_status',
|
||||||
|
'authorized_by',
|
||||||
|
];
|
||||||
|
|
||||||
|
public function jenisLegalitasJaminan(){
|
||||||
|
return $this->belongsTo(JenisLegalitasJaminan::class, 'jenis_legalitas_jaminan_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dokumenJaminan(){
|
||||||
|
return $this->belongsTo(DokumenJaminan::class, 'dokumen_jaminan_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -16,10 +16,6 @@
|
|||||||
'permohonan_id',
|
'permohonan_id',
|
||||||
'pemilik_jaminan_id',
|
'pemilik_jaminan_id',
|
||||||
'jenis_jaminan_id',
|
'jenis_jaminan_id',
|
||||||
'jenis_legalitas_jaminan_id',
|
|
||||||
'name',
|
|
||||||
'dokumen_jaminan',
|
|
||||||
'keterangan',
|
|
||||||
'province_code',
|
'province_code',
|
||||||
'city_code',
|
'city_code',
|
||||||
'district_code',
|
'district_code',
|
||||||
@@ -64,11 +60,11 @@
|
|||||||
return $this->belongsTo(JenisJaminan::class, 'jenis_jaminan_id', 'id');
|
return $this->belongsTo(JenisJaminan::class, 'jenis_jaminan_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function jenisLegalitasJaminan(){
|
|
||||||
return $this->belongsTo(JenisLegalitasJaminan::class, 'jenis_legalitas_jaminan_id', 'id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function permohonan(){
|
public function permohonan(){
|
||||||
return $this->belongsTo(Permohonan::class, 'permohonan_id', 'id');
|
return $this->belongsTo(Permohonan::class, 'permohonan_id', 'id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function detail(){
|
||||||
|
return $this->hasMany(DetailDokumenJaminan::class, 'dokumen_jaminan_id', 'id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
18
app/Models/IjinUsaha.php
Normal file
18
app/Models/IjinUsaha.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
|
||||||
|
class IjinUsaha extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'ijin_usaha';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $fillable = ['code', 'name'];
|
||||||
|
}
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
use Modules\Lpj\Database\Factories\JenisAsetFactory;
|
use Modules\Lpj\Database\Factories\JenisAsetFactory;
|
||||||
|
|
||||||
class JenisAset extends Base
|
class JenisAset extends Base
|
||||||
{
|
{
|
||||||
protected $table = 'jenis_aset';
|
protected $table = 'jenis_aset';
|
||||||
protected $fillable = ['code', 'name'];
|
protected $fillable = ['code', 'name'];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace Modules\Lpj\Models;
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
use Modules\Lpj\Database\Factories\JenisJaminanFactory;
|
class JenisJaminan extends Base
|
||||||
|
{
|
||||||
class JenisJaminan extends Base
|
protected $table = 'jenis_jaminan';
|
||||||
{
|
protected $fillable = ['code', 'name', 'slug', 'jenis_legalitas_jaminan_id'];
|
||||||
protected $table = 'jenis_jaminan';
|
}
|
||||||
protected $fillable = ['code', 'name'];
|
|
||||||
}
|
|
||||||
|
|||||||
22
app/Models/JenisLaporan.php
Normal file
22
app/Models/JenisLaporan.php
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Lpj\Database\Factories\JenisLaporanFactory;
|
||||||
|
|
||||||
|
class JenisLaporan extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Define the table if not using default table naming
|
||||||
|
protected $table = 'jenis_laporan';
|
||||||
|
|
||||||
|
|
||||||
|
protected $fillable = ['code', 'name'];
|
||||||
|
}
|
||||||
@@ -7,5 +7,5 @@
|
|||||||
class JenisLegalitasJaminan extends Base
|
class JenisLegalitasJaminan extends Base
|
||||||
{
|
{
|
||||||
protected $table = 'jenis_legalitas_jaminan';
|
protected $table = 'jenis_legalitas_jaminan';
|
||||||
protected $fillable = ['code', 'name'];
|
protected $fillable = ['code', 'name','slug'];
|
||||||
}
|
}
|
||||||
|
|||||||
25
app/Models/JenisPenilaian.php
Normal file
25
app/Models/JenisPenilaian.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Modules\Lpj\Database\Factories\JenisPenilaianFactory;
|
||||||
|
use Modules\Lpj\Models\Penilaian;
|
||||||
|
class JenisPenilaian extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'jenis_penilaian';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'code', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by',
|
||||||
|
'created_at', 'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function penilaian(){
|
||||||
|
return $this->hasMany(Penilaian::class , 'jenis_penilaian_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
46
app/Models/KJPP.php
Normal file
46
app/Models/KJPP.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Location\Models\Province;
|
||||||
|
|
||||||
|
// use Modules\Lpj\Database\Factories\KJPPFactory;
|
||||||
|
|
||||||
|
class KJPP extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
// Define the table if not using default table naming
|
||||||
|
protected $table = 'kjpp';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'code',
|
||||||
|
'name',
|
||||||
|
'jenis_kantor',
|
||||||
|
'nomor_ijin_usaha',
|
||||||
|
'province_code',
|
||||||
|
'city_code',
|
||||||
|
'district_code',
|
||||||
|
'village_code',
|
||||||
|
'address',
|
||||||
|
'postal_code',
|
||||||
|
'nomor_telepon_kantor',
|
||||||
|
'email_kantor',
|
||||||
|
'nama_pimpinan',
|
||||||
|
'nomor_hp_pimpinan',
|
||||||
|
'nama_pic_reviewer',
|
||||||
|
'nomor_hp_pic_reviewer',
|
||||||
|
'nama_pic_admin',
|
||||||
|
'nomor_hp_pic_admin',
|
||||||
|
'nama_pic_marketing',
|
||||||
|
'nomor_hp_pic_marketing',
|
||||||
|
'ijin_usaha_id',
|
||||||
|
'jenis_aset_id',
|
||||||
|
'attachment'
|
||||||
|
];
|
||||||
|
}
|
||||||
18
app/Models/PenawaranTender.php
Normal file
18
app/Models/PenawaranTender.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
|
||||||
|
class PenawaranTender extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'penawaran';
|
||||||
|
|
||||||
|
protected $guarded = ['id'];
|
||||||
|
}
|
||||||
56
app/Models/Penilaian.php
Normal file
56
app/Models/Penilaian.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Lpj\Database\Factories\PenilaianFactory;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
use Modules\Usermanagement\Models\User;
|
||||||
|
|
||||||
|
|
||||||
|
class Penilaian extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'penilaian';
|
||||||
|
protected $fillable = [
|
||||||
|
'jenis_penilaian_id', 'teams_id', 'user_id', 'tanggal_kunjungan', 'keterangan','nomor_registrasi','penilaian_id','surveyor_id','penilai_surveyor_id',
|
||||||
|
'status', 'authorized_status', 'authorized_at', 'authorized_by', 'created_at',
|
||||||
|
'created_by', 'updated_at', 'updated_by', 'deleted_at', 'deleted_by'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function jenis_penilaian(){
|
||||||
|
return $this->belongsTo(JenisPenilaian::class, 'jenis_penilaian_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function teams(){
|
||||||
|
return $this->belongsTo(Teams::class, 'teams_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function users(){
|
||||||
|
return $this->belongsTo(User::class, 'user_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userPenilai(){
|
||||||
|
return $this->belongsTo(User::class, 'penilaian_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userSurveyor(){
|
||||||
|
return $this->belongsTo(User::class, 'surveyor_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function userPenilaiSurveyor(){
|
||||||
|
return $this->belongsTo(User::class, 'penilai_surveyor_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function permohonan(){
|
||||||
|
return $this->belongsTo(Permohonan::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,6 +6,8 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Modules\Lpj\Database\Factories\PermohonanFactory;
|
use Modules\Lpj\Database\Factories\PermohonanFactory;
|
||||||
use Modules\Usermanagement\Models\User;
|
use Modules\Usermanagement\Models\User;
|
||||||
|
use Modules\Lpj\Models\TujuanPenilaian;
|
||||||
|
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||||
|
|
||||||
class Permohonan extends Base
|
class Permohonan extends Base
|
||||||
{
|
{
|
||||||
@@ -17,6 +19,10 @@ class Permohonan extends Base
|
|||||||
'branch_id',
|
'branch_id',
|
||||||
'tujuan_penilaian_id',
|
'tujuan_penilaian_id',
|
||||||
'debiture_id',
|
'debiture_id',
|
||||||
|
'keterangan',
|
||||||
|
'dokumen',
|
||||||
|
'jenis_fasilitas_kredit_id',
|
||||||
|
'nilai_plafond_id',
|
||||||
'status',
|
'status',
|
||||||
'authorized_at',
|
'authorized_at',
|
||||||
'authorized_status',
|
'authorized_status',
|
||||||
@@ -26,7 +32,10 @@ class Permohonan extends Base
|
|||||||
'registrasi_by',
|
'registrasi_by',
|
||||||
'registrasi_at',
|
'registrasi_at',
|
||||||
'jenis_penilaian_id',
|
'jenis_penilaian_id',
|
||||||
'region_id'
|
'region_id',
|
||||||
|
// andy add
|
||||||
|
'status_bayar',
|
||||||
|
'nilai_njop'
|
||||||
];
|
];
|
||||||
|
|
||||||
public function user(){
|
public function user(){
|
||||||
@@ -48,4 +57,16 @@ class Permohonan extends Base
|
|||||||
public function documents(){
|
public function documents(){
|
||||||
return $this->hasMany(DokumenJaminan::class);
|
return $this->hasMany(DokumenJaminan::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function nilaiPlafond(){
|
||||||
|
return $this->belongsTo(NilaiPlafond::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function jenisFasilitasKredit(){
|
||||||
|
return $this->belongsTo(JenisFasilitasKredit::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function penilaian(){
|
||||||
|
return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
app/Models/Regions.php
Normal file
26
app/Models/Regions.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Lpj\Database\Factories\RegionsFactory;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
|
||||||
|
class Regions extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'regions';
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'code', 'name', 'status', 'authorized_status', 'authorized_at', 'authorized_by'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function teams(){
|
||||||
|
return $this->hasMany(Teams::class, 'regions_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
40
app/Models/Teams.php
Normal file
40
app/Models/Teams.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Lpj\Database\Factories\TeamsFactory;
|
||||||
|
use Modules\Lpj\Models\TeamsUsers;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
use Modules\Lpj\Models\Penilaian;
|
||||||
|
|
||||||
|
|
||||||
|
class Teams extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'teams';
|
||||||
|
protected $fillable = [
|
||||||
|
'regions_id', 'code', 'name', 'status', 'authorized_status', 'authorized_at',
|
||||||
|
'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by',
|
||||||
|
'deleted_at', 'deleted_by'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function regions(){
|
||||||
|
return $this->belongsTo(Regions::class, 'regions_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function teamsUsers(){
|
||||||
|
return $this->hasMany(TeamsUsers::class, 'teams_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function penilaian(){
|
||||||
|
return $this->hasMany(Penilaian::class, 'teams_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
33
app/Models/TeamsUsers.php
Normal file
33
app/Models/TeamsUsers.php
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Modules\Lpj\Database\Factories\TeamsUsersFactory;
|
||||||
|
use Modules\Usermanagement\Models\User;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
|
||||||
|
class TeamsUsers extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $table = 'teams_users';
|
||||||
|
protected $fillable = [
|
||||||
|
'teams_id', 'user_id', 'status', 'authorized_status', 'authorized_at',
|
||||||
|
'authorized_by', 'created_at', 'created_by', 'updated_at', 'updated_by',
|
||||||
|
'deleted_at', 'deleted_by'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function team()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Teams::class, 'teams_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class, 'user_id', 'id');
|
||||||
|
}
|
||||||
|
}
|
||||||
19
app/Models/TujuanPenilaianKJPP.php
Normal file
19
app/Models/TujuanPenilaianKJPP.php
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Modules\Lpj\Database\Factories\TujuanPenilaianKJPPFactory;
|
||||||
|
|
||||||
|
class TujuanPenilaianKJPP extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
|
||||||
|
protected $table = 'tujuan_penilaian_kjpp';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that are mass assignable.
|
||||||
|
*/
|
||||||
|
protected $fillable = ['code', 'name'];
|
||||||
|
}
|
||||||
25
app/Rules/UniqueCifExceptZero.php
Normal file
25
app/Rules/UniqueCifExceptZero.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Modules\Lpj\Rules;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
|
use Illuminate\Contracts\Validation\ValidationRule;
|
||||||
|
use Modules\Lpj\Models\Debiture;
|
||||||
|
|
||||||
|
class UniqueCifExceptZero implements ValidationRule
|
||||||
|
{
|
||||||
|
public function __construct($id = null)
|
||||||
|
{
|
||||||
|
$this->id = $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function validate($attribute, $value, $fail): void
|
||||||
|
{
|
||||||
|
if (Debiture::where($attribute, $value)
|
||||||
|
->where('id', '!=', $this->id)
|
||||||
|
->where($attribute, '!=', '000000')
|
||||||
|
->exists()) {
|
||||||
|
$fail('The :attribute field must be uniquse.'.$this->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\DokumenJaminan;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
|
||||||
|
return new class extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
Schema::create('permohonan_jaminan', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignIdFor(Permohonan::class)->constrained('permohonan');
|
||||||
|
$table->foreignIdFor(DokumenJaminan::class)->constrained('dokumen_jaminan');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
: void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('permohonan_jaminan');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) {
|
||||||
|
$table->string('slug')->nullable()->after('name');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('jenis_legalitas_jaminan', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('slug');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('jenis_jaminan', function (Blueprint $table) {
|
||||||
|
$table->string('slug')->after('name');
|
||||||
|
$table->string('jenis_legalitas_jaminan_id')->nullable()->after('slug');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('jenis_jaminan', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('slug');
|
||||||
|
$table->dropColumn('jenis_legalitas_jaminan_id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class () extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('regions', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->char('status')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('regions');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('jenis_penilaian', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->char('status')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('jenis_penilaian');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -18,20 +18,16 @@ use Illuminate\Support\Facades\Schema;
|
|||||||
{
|
{
|
||||||
Schema::create('dokumen_jaminan', function (Blueprint $table) {
|
Schema::create('dokumen_jaminan', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->string('name');
|
|
||||||
$table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade');
|
$table->foreignIdFor(Debiture::class)->constrained('debitures')->onDelete('cascade');
|
||||||
$table->foreignIdFor(Permohonan::class)->nullable()->constrained('permohonan')->onDelete('cascade');
|
$table->foreignIdFor(Permohonan::class)->nullable()->constrained('permohonan')->onDelete('cascade');
|
||||||
$table->foreignIdFor(JenisJaminan::class)->constrained('jenis_jaminan')->onDelete('cascade');
|
$table->foreignIdFor(JenisJaminan::class)->constrained('jenis_jaminan')->onDelete('cascade');
|
||||||
$table->foreignIdFor(PemilikJaminan::class)->constrained('pemilik_jaminan')->onDelete('cascade');
|
$table->foreignIdFor(PemilikJaminan::class)->constrained('pemilik_jaminan')->onDelete('cascade');
|
||||||
$table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade');
|
|
||||||
$table->string('province_code')->nullable()->index();
|
$table->string('province_code')->nullable()->index();
|
||||||
$table->string('city_code')->nullable()->index();
|
$table->string('city_code')->nullable()->index();
|
||||||
$table->string('district_code')->nullable()->index();
|
$table->string('district_code')->nullable()->index();
|
||||||
$table->string('village_code')->nullable()->index();
|
$table->string('village_code')->nullable()->index();
|
||||||
$table->string('postal_code', 5)->nullable();
|
$table->string('postal_code', 5)->nullable();
|
||||||
$table->text('address')->nullable();
|
$table->text('address')->nullable();
|
||||||
$table->string('dokumen_jaminan')->nullable();
|
|
||||||
$table->string('keterangan')->nullable();
|
|
||||||
|
|
||||||
$table->boolean('status')->default(true)->nullable();
|
$table->boolean('status')->default(true)->nullable();
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
41
database/migrations/2024_09_05_030405_create_teams_table.php
Normal file
41
database/migrations/2024_09_05_030405_create_teams_table.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\Regions;
|
||||||
|
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('teams', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignIdFor(Regions::class)->constrained()->onDelete('cascade');
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->char('status')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('teams');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
use Modules\Lpj\Models\Users;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('teams_users', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignIdFor(Teams::class)->constrained()->onDelete('cascade');
|
||||||
|
$table->unsignedBigInteger('user_id');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('teams_users');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\DokumenJaminan;
|
||||||
|
use Modules\Lpj\Models\JenisLegalitasJaminan;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('detail_dokumen_jaminan', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('name');
|
||||||
|
$table->foreignIdFor(DokumenJaminan::class)->constrained('dokumen_jaminan')->onDelete('cascade');
|
||||||
|
$table->foreignIdFor(JenisLegalitasJaminan::class)->constrained('jenis_legalitas_jaminan')->onDelete('cascade');
|
||||||
|
$table->string('dokumen_jaminan')->nullable();
|
||||||
|
$table->string('keterangan')->nullable();
|
||||||
|
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('detail_dokumen_jaminan');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\JenisPenilaian;
|
||||||
|
use Modules\Lpj\Models\Teams;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
|
||||||
|
return new class () extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('penilaian', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignIdFor(JenisPenilaian::class);
|
||||||
|
$table->foreignIdFor(Teams::class);
|
||||||
|
$table->datetime('tanggal_kunjungan');
|
||||||
|
$table->text('keterangan')->nullable();
|
||||||
|
$table->string('status')->nullable();
|
||||||
|
$table->unsignedBigInteger('user_id');
|
||||||
|
$table->timestamps();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
$table->unsignedBigInteger('created_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('updated_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('penilaian');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||||
|
use Modules\Lpj\Models\NilaiPlafond;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->foreignIdFor(JenisFasilitasKredit::class)->nullable()->onDelete('cascade');
|
||||||
|
$table->foreignIdFor(NilaiPlafond::class)->nullable()->onDelete('cascade');
|
||||||
|
$table->string('status')->default('order')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->dropForeign(['fasilitas_kredit_id']);
|
||||||
|
$table->dropForeign(['nilai_plafond_id']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('ijin_usaha', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('ijin_usaha');
|
||||||
|
}
|
||||||
|
};
|
||||||
57
database/migrations/2024_09_18_084905_create_kjpp_table.php
Normal file
57
database/migrations/2024_09_18_084905_create_kjpp_table.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('kjpp', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code');
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('jenis_kantor');
|
||||||
|
$table->string('nomor_ijin_usaha');
|
||||||
|
$table->string('province_code');
|
||||||
|
$table->string('city_code');
|
||||||
|
$table->string('district_code');
|
||||||
|
$table->string('village_code');
|
||||||
|
$table->string('address');
|
||||||
|
$table->string('postal_code');
|
||||||
|
$table->string('nomor_telepon_kantor');
|
||||||
|
$table->string('email_kantor');
|
||||||
|
$table->string('nama_pimpinan');
|
||||||
|
$table->string('nomor_hp_pimpinan');
|
||||||
|
$table->string('nama_pic_reviewer');
|
||||||
|
$table->string('nomor_hp_pic_reviewer');
|
||||||
|
$table->string('nama_pic_admin');
|
||||||
|
$table->string('nomor_hp_pic_admin');
|
||||||
|
$table->string('nama_pic_marketing');
|
||||||
|
$table->string('nomor_hp_pic_marketing');
|
||||||
|
$table->string('ijin_usaha_id')->nullable();
|
||||||
|
$table->string('jenis_aset_id')->nullable();
|
||||||
|
$table->string('attachment')->nullable();
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('kjpp');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->enum('status_bayar',['sudah_bayar','belum_bayar'])->default('sudah_bayar');
|
||||||
|
$table->string('nilai_njop')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('status_bayar');
|
||||||
|
$table->dropColumn('nilai_njop');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class () extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->string('dokumen')->nullable()->after('status');
|
||||||
|
$table->string('keterangan')->nullable()->after('dokumen');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('permohonan', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('dokumen');
|
||||||
|
$table->dropColumn('keterangan');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
use Modules\Lpj\Models\Permohonan;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('penilaian', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('user_id');
|
||||||
|
$table->string('nomor_registrasi')->references('nomor_registrasi')->on(Permohonan::class)->onDelete('cascade');
|
||||||
|
$table->unsignedBigInteger('penilaian_id')->unsigned()->nullable();
|
||||||
|
$table->unsignedBigInteger('surveyor_id')->unsigned()->nullable();
|
||||||
|
$table->unsignedBigInteger('penilai_surveyor_id')->unsigned()->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('penilaian', function (Blueprint $table) {
|
||||||
|
$table->unsignedBigInteger('user_id')->unsigned();
|
||||||
|
$table->dropColumn('nomor_registrasi');
|
||||||
|
$table->dropColumn('penilaian_id');
|
||||||
|
$table->dropColumn('surveyor_id');
|
||||||
|
$table->dropColumn('penilai_surveyor_id');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('tujuan_penilaian_kjpp', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('tujuan_penilaian_kjpp');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('jenis_laporan', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code')->unique()->index();
|
||||||
|
$table->string('name');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('jenis_laporan');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('penawaran', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->string('code');
|
||||||
|
$table->string('nama_kjpp_sebelumnya');
|
||||||
|
$table->string('biaya_kjpp_sebelumnya');
|
||||||
|
$table->datetime('tanggal_penilaian_sebelumnya');
|
||||||
|
$table->string('nomor_registrasi');
|
||||||
|
$table->foreignId('tujuan_penilaian_kjpp_id')->constrained('tujuan_penilaian_kjpp');
|
||||||
|
$table->foreignId('jenis_laporan_id')->constrained('jenis_laporan');
|
||||||
|
$table->date('start_date');
|
||||||
|
$table->date('end_date');
|
||||||
|
$table->text('catatan');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('penawaran');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('persetujuan_penawaran', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('penawaran_id')->constrained('penawaran');
|
||||||
|
$table->string('nomor_proposal_penawaran');
|
||||||
|
$table->date('tanggal_proposal_penawaran');
|
||||||
|
$table->string('biaya_final');
|
||||||
|
$table->datetime('sls_resume');
|
||||||
|
$table->datetime('sla_final');
|
||||||
|
$table->string('catatan');
|
||||||
|
$table->string('attachment');
|
||||||
|
$table->foreignId('region_id')->constrained('regions');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('persetujuan_penawaran');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('detail_penawaran', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->foreignId('kjpp_rekanan_id')->constrained('kjpp');
|
||||||
|
$table->foreignId('penawaran_id')->constrained('penawaran');
|
||||||
|
$table->string('biaya_penawaran');
|
||||||
|
$table->string('attachment');
|
||||||
|
$table->string('dokumen_persetujuan');
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
$table->char('authorized_status', 1)->nullable();
|
||||||
|
$table->timestamp('authorized_at')->nullable();
|
||||||
|
$table->unsignedBigInteger('authorized_by')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
$table->softDeletes();
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('deleted_by')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('detail_penawaran');
|
||||||
|
}
|
||||||
|
};
|
||||||
30
database/migrations/2024_09_30_021444_update_kjpp_table.php
Normal file
30
database/migrations/2024_09_30_021444_update_kjpp_table.php
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('kjpp', function (Blueprint $table) {
|
||||||
|
$table->string('ijin_usaha_id')->change();
|
||||||
|
$table->string('jenis_aset_id')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('kjpp', function (Blueprint $table) {
|
||||||
|
$table->string('ijin_usaha_id')->nullable()->change();
|
||||||
|
$table->string('jenis_aset_id')->nullable()->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->char('status')->change();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('penawaran', function (Blueprint $table) {
|
||||||
|
$table->boolean('status')->default(true)->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
207
module.json
207
module.json
@@ -1,12 +1,94 @@
|
|||||||
{
|
{
|
||||||
"name": "Lpj",
|
"name": "Lpj",
|
||||||
"alias": "lpj",
|
"alias": "lpj",
|
||||||
"database": "",
|
"database": "",
|
||||||
"description": "",
|
"description": "",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"priority": 0,
|
"priority": 0,
|
||||||
"providers": [
|
"providers": ["Modules\\Lpj\\Providers\\LpjServiceProvider"],
|
||||||
"Modules\\Lpj\\Providers\\LpjServiceProvider"
|
"files": [],
|
||||||
|
"menu": {
|
||||||
|
"main": [
|
||||||
|
{
|
||||||
|
"title": "Permohonan",
|
||||||
|
"path": "permohonan",
|
||||||
|
"icon": "ki-filled ki-questionnaire-tablet text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tender",
|
||||||
|
"path": "tender",
|
||||||
|
"icon": "ki-filled ki-category text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"],
|
||||||
|
"sub": [
|
||||||
|
{
|
||||||
|
"title": "Data Penawaran",
|
||||||
|
"path": "tender.penawaran",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Data Proses Penawaran",
|
||||||
|
"path": "tender.proses_penawaran",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Data Penawaran Ulang",
|
||||||
|
"path": "tender.penawaran_ulang",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Pembatalan",
|
||||||
|
"path": "",
|
||||||
|
"icon": "ki-filled ki-file-deleted text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Data Debitur",
|
||||||
|
"path": "debitur",
|
||||||
|
"icon": "ki-filled ki-people text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Authorization",
|
||||||
|
"path": "authorization",
|
||||||
|
"icon": "ki-filled ki-some-files text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Laporan",
|
||||||
|
"path": "",
|
||||||
|
"icon": "ki-filled ki-some-files text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": ["administrator"]
|
||||||
|
}
|
||||||
],
|
],
|
||||||
"files": [],
|
"files": [],
|
||||||
"menu": {
|
"menu": {
|
||||||
@@ -19,7 +101,44 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"Administrator"
|
"administrator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Tender",
|
||||||
|
"path": "tender",
|
||||||
|
"icon": "ki-filled ki-category text-lg",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator"
|
||||||
|
],
|
||||||
|
"sub": [
|
||||||
|
{
|
||||||
|
"title": "Data Penawaran",
|
||||||
|
"path": "tender.penawaran",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Data Proses Penawaran",
|
||||||
|
"path": "tender.proses_penawaran",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Data Penawaran Ulang",
|
||||||
|
"path": "tender.penawaran_ulang",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -30,7 +149,7 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"Administrator"
|
"administrator"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -53,13 +172,24 @@
|
|||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
|
"roles": [
|
||||||
|
"administrator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Assignment",
|
||||||
|
"path": "penilaian",
|
||||||
|
"icon": "ki-filled ki-badge",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"Administrator"
|
"Administrator"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Authorization",
|
"title": "Activity",
|
||||||
"path": "authorization",
|
"path": "activity",
|
||||||
"icon": "ki-filled ki-some-files text-lg",
|
"icon": "ki-filled ki-some-files text-lg",
|
||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
@@ -76,7 +206,7 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": [
|
"roles": [
|
||||||
"Administrator"
|
"administrator"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -116,14 +246,6 @@
|
|||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": []
|
"roles": []
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"title": "Jenis Jaminan",
|
|
||||||
"path": "basicdata.jenis-jaminan",
|
|
||||||
"classes": "",
|
|
||||||
"attributes": [],
|
|
||||||
"permission": "",
|
|
||||||
"roles": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"title": "Jenis Legalitas Jaminan",
|
"title": "Jenis Legalitas Jaminan",
|
||||||
"path": "basicdata.jenis-legalitas-jaminan",
|
"path": "basicdata.jenis-legalitas-jaminan",
|
||||||
@@ -134,7 +256,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Jenis Aset",
|
"title": "Jenis Aset",
|
||||||
"path": "basicdata.jenis-aset",
|
"path": "basicdata.jenis-jaminan",
|
||||||
"classes": "",
|
"classes": "",
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
@@ -195,6 +317,46 @@
|
|||||||
"attributes": [],
|
"attributes": [],
|
||||||
"permission": "",
|
"permission": "",
|
||||||
"roles": []
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Region",
|
||||||
|
"path": "basicdata.region",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Staff Appraisal",
|
||||||
|
"path": "basicdata.teams",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Jenis Penilaian",
|
||||||
|
"path": "basicdata.jenis-penilaian",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "KJPP",
|
||||||
|
"path": "basicdata.kjpp",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Ijin Usaha",
|
||||||
|
"path": "basicdata.ijin_usaha",
|
||||||
|
"classes": "",
|
||||||
|
"attributes": [],
|
||||||
|
"permission": "",
|
||||||
|
"roles": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -202,3 +364,4 @@
|
|||||||
"system": []
|
"system": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
77
resources/views/Ijin_usaha/create.blade.php
Normal file
77
resources/views/Ijin_usaha/create.blade.php
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
@if (isset($ijin_usaha->id))
|
||||||
|
<form action="{{ route('basicdata.ijin_usaha.update', $ijin_usaha->id) }}" method="POST">
|
||||||
|
<input type="hidden" name="id" value="{{ $ijin_usaha->id }}">
|
||||||
|
@method('PUT')
|
||||||
|
@else
|
||||||
|
<form method="POST" action="{{ route('basicdata.ijin_usaha.store') }}">
|
||||||
|
@endif
|
||||||
|
@csrf
|
||||||
|
<div class="card pb-2.5">
|
||||||
|
<div class="card-header" id="basic_settings">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{ isset($ijin_usaha->id) ? 'Edit' : 'Tambah' }} Ijin Usaha
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('basicdata.ijin_usaha.index') }}" class="btn btn-xs btn-info"><i
|
||||||
|
class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body grid gap-5">
|
||||||
|
@if (isset($ijin_usaha->id))
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Kode Ijin Usaha
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input readonly
|
||||||
|
class="input border-warning bg-warning-light @error('code') border-danger bg-danger-light @enderror"
|
||||||
|
type="text" name="code" value="{{ $ijin_usaha->code ?? old('code') }}">
|
||||||
|
@error('code')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Kode Ijin Usaha
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text"
|
||||||
|
name="code" value="{{ $ijin_usaha->code ?? old('code') }}">
|
||||||
|
@error('code')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama Ijin Usaha
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text"
|
||||||
|
name="name" value="{{ $ijin_usaha->name ?? old('name') }}">
|
||||||
|
@error('name')
|
||||||
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
|
@enderror
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-end">
|
||||||
|
<button type="submit" class="btn btn-primary">
|
||||||
|
Save
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
152
resources/views/Ijin_usaha/index.blade.php
Normal file
152
resources/views/Ijin_usaha/index.blade.php
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render('basicdata.ijin_usaha') }}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="grid">
|
||||||
|
<div class="card card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
|
||||||
|
data-datatable-state-save="false" id="ijin-table" data-api-url="{{ route('basicdata.ijin_usaha.datatables') }}">
|
||||||
|
<div class="card-header py-5 flex-wrap">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Ijin Usaha
|
||||||
|
</h3>
|
||||||
|
<div class="flex flex-wrap gap-2 lg:gap-5">
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm"> <i class="ki-filled ki-magnifier"> </i>
|
||||||
|
<input placeholder="Search Ijin Usaha" id="search" type="text" value="">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-wrap gap-2.5">
|
||||||
|
<div class="h-[24px] border border-r-gray-200"></div>
|
||||||
|
<a class="btn btn-sm btn-light" href="{{ route('basicdata.ijin_usaha.export') }}"> Export to Excel
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-sm btn-primary" href="{{ route('basicdata.ijin_usaha.create') }}"> Tambah Ijin
|
||||||
|
Usaha
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="scrollable-x-auto">
|
||||||
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
|
||||||
|
data-datatable-table="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="w-14">
|
||||||
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[250px]" data-datatable-column="code">
|
||||||
|
<span class="sort"> <span class="sort-label"> Kode Ijin Usaha </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[250px]" data-datatable-column="name">
|
||||||
|
<span class="sort"> <span class="sort-label"> Nama Ijin Usaha </span>
|
||||||
|
<span class="sort-icon"> </span> </span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
Show
|
||||||
|
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per page
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-4">
|
||||||
|
<span data-datatable-info="true"> </span>
|
||||||
|
<div class="pagination" data-datatable-pagination="true">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function deleteData(data) {
|
||||||
|
Swal.fire({
|
||||||
|
title: 'Are you sure?',
|
||||||
|
text: "You won't be able to revert this!",
|
||||||
|
icon: 'warning',
|
||||||
|
showCancelButton: true,
|
||||||
|
confirmButtonColor: '#3085d6',
|
||||||
|
cancelButtonColor: '#d33',
|
||||||
|
confirmButtonText: 'Yes, delete it!'
|
||||||
|
}).then((result) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
$.ajaxSetup({
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.ajax(`basic-data/ijin_usaha/${data}`, {
|
||||||
|
type: 'DELETE'
|
||||||
|
}).then((response) => {
|
||||||
|
swal.fire('Deleted!', 'Ijin Usaha has been deleted.', 'success').then(() => {
|
||||||
|
window.location.reload();
|
||||||
|
});
|
||||||
|
}).catch((error) => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
Swal.fire('Error!', 'An error occurred while deleting the file.', 'error');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<script type="module">
|
||||||
|
const element = document.querySelector('#ijin-table');
|
||||||
|
const searchInput = document.getElementById('search');
|
||||||
|
|
||||||
|
const apiUrl = element.getAttribute('data-api-url');
|
||||||
|
const dataTableOptions = {
|
||||||
|
apiEndpoint: apiUrl,
|
||||||
|
pageSize: 5,
|
||||||
|
columns: {
|
||||||
|
select: {
|
||||||
|
render: (item, data, context) => {
|
||||||
|
const checkbox = document.createElement('input');
|
||||||
|
checkbox.className = 'checkbox checkbox-sm';
|
||||||
|
checkbox.type = 'checkbox';
|
||||||
|
checkbox.value = data.id.toString();
|
||||||
|
checkbox.setAttribute('data-datatable-row-check', 'true');
|
||||||
|
return checkbox.outerHTML.trim();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
code: {
|
||||||
|
title: 'Kode Ijin Usaha',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
title: 'Nama Ijin Usaha',
|
||||||
|
},
|
||||||
|
actions: {
|
||||||
|
title: 'Status',
|
||||||
|
render: (item, data) => {
|
||||||
|
return `<div class="flex flex-nowrap justify-center">
|
||||||
|
<a class="btn btn-sm btn-icon btn-clear btn-info" href="basic-data/ijin_usaha/${data.id}/edit">
|
||||||
|
<i class="ki-outline ki-notepad-edit"></i>
|
||||||
|
</a>
|
||||||
|
<a onclick="deleteData(${data.id})" class="delete btn btn-sm btn-icon btn-clear btn-danger">
|
||||||
|
<i class="ki-outline ki-trash"></i>
|
||||||
|
</a>
|
||||||
|
</div>`;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
|
// Custom search functionality
|
||||||
|
searchInput.addEventListener('input', function() {
|
||||||
|
const searchValue = this.value.trim();
|
||||||
|
dataTable.search(searchValue, true);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
120
resources/views/activity/activitydetail.blade.php
Normal file
120
resources/views/activity/activitydetail.blade.php
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render(request()->route()->getName()) }}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
@push('styles')
|
||||||
|
<style>
|
||||||
|
.border-l-primary {
|
||||||
|
border-left-color: #0d6efd !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
@endpush
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header" id="advanced_settings_appearance">
|
||||||
|
<h3 class="card-title">
|
||||||
|
Activity Permohonan
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<a href="{{ route('activity.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i>
|
||||||
|
Back</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body lg:py-7.5 grid grid-cols-3">
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Nomor Register Permohonan:
|
||||||
|
</h3>
|
||||||
|
<span class="text-2sm text-gray-700">
|
||||||
|
{{ $permohonan->nomor_registrasi }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Pemohon:
|
||||||
|
</h3>
|
||||||
|
<span class="text-2sm text-gray-700">
|
||||||
|
{{ $permohonan->user->nik }} | {{ $permohonan->user->name }} | {{ $permohonan->user->branch->name }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-5">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Tujan Permohonan:
|
||||||
|
</h3>
|
||||||
|
<span class="text-2sm text-gray-700">
|
||||||
|
{{ $permohonan->tujuanPenilaian->name }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="card grow" id="activity_2024">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="text-md font-medium text-gray-900">
|
||||||
|
Status Activity
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="flex flex-col">
|
||||||
|
@foreach ($status_permohonan as $index => $status)
|
||||||
|
{{-- Cek apakah status adalah "Revisi" dan status permohonan tidak sama, maka tidak ditampilkan --}}
|
||||||
|
@if (strtolower($status->name) == 'revisi' && strtolower($status->name) != strtolower($permohonan->status))
|
||||||
|
@continue
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div class="flex items-start relative">
|
||||||
|
@if ($index < count($status_permohonan) - 1)
|
||||||
|
<div
|
||||||
|
class="w-9 left-0 top-9 absolute bottom-0 translate-x-1/2
|
||||||
|
{{ strtolower($status->name) == strtolower($permohonan->status) ? 'border-l border-l-primary' : 'border-l border-l-gray-300' }}">
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="flex items-center justify-center shrink-0 rounded-full
|
||||||
|
{{ strtolower($status->name) == strtolower($permohonan->status) ? ' btn-outline btn-primary' : 'bg-gray-100 border-gray-300 text-gray-600' }}
|
||||||
|
size-9">
|
||||||
|
@switch(strtolower($status->name))
|
||||||
|
@case('order')
|
||||||
|
<i class="ki-filled ki-handcart text-base"></i>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('revisi')
|
||||||
|
<i class="ki-filled ki-notepad-edit text-base"></i>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('register')
|
||||||
|
<i class="ki-filled ki-note-2 text-base"></i>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('assign')
|
||||||
|
<i class="ki-filled ki-file-added"></i>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@case('survey')
|
||||||
|
<i class="ki-filled ki-map text-base"></i>
|
||||||
|
@break
|
||||||
|
|
||||||
|
@default
|
||||||
|
<i class="ki-filled ki-people text-base"></i>
|
||||||
|
@endswitch
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@include('lpj::activity.components.status')
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer justify-center">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
94
resources/views/activity/components/status.blade.php
Normal file
94
resources/views/activity/components/status.blade.php
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<div class="pl-2.5 mb-7 text-md grow">
|
||||||
|
<div class="flex flex-col">
|
||||||
|
<div class="text-sm text-gray-800">
|
||||||
|
{{ $status->name . ' ' . $status->description }}
|
||||||
|
</div>
|
||||||
|
<span class="text-xs text-gray-600">
|
||||||
|
@if (strtolower($status->name) == 'order')
|
||||||
|
{{ $permohonan->created_at }}
|
||||||
|
@elseif (strtolower($status->name) == strtolower($permohonan->status))
|
||||||
|
{{ $permohonan->updated_at }}
|
||||||
|
@endif
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@php
|
||||||
|
$isCurrentStatus = strtolower($status->name) == strtolower($permohonan->status);
|
||||||
|
$hasKeterangan = isset($permohonan->keterangan);
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
{{-- Tampilkan keterangan jika status 'register' --}}
|
||||||
|
@if (strtolower($status->name) == 'register' && $hasKeterangan && $isCurrentStatus)
|
||||||
|
<div class="card shadow-none">
|
||||||
|
<div class="card-body">
|
||||||
|
<p class="text-xs text-gray-800 leading-[22px]">
|
||||||
|
{{ $permohonan->keterangan }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Tampilkan dokumen dan keterangan jika status 'revisi' --}}
|
||||||
|
@if (strtolower($status->name) == 'revisi' && $hasKeterangan)
|
||||||
|
<div class="card shadow-none">
|
||||||
|
<div class="card-body">
|
||||||
|
<a href="{{ route('activity.download', $permohonan->id) }}" class="badge badge-sm badge-outline">
|
||||||
|
{{ basename($permohonan->dokumen) }}
|
||||||
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
|
</a>
|
||||||
|
<p class="text-xs text-gray-800 leading-[22px]">
|
||||||
|
{{ $permohonan->keterangan }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
{{-- Tampilkan informasi assign jika status 'assign' --}}
|
||||||
|
@if (strtolower($status->name) == 'assign' && $isCurrentStatus)
|
||||||
|
<div class="card shadow-none">
|
||||||
|
<div class="card-body grid grid-cols-3 gap-5">
|
||||||
|
{{-- Informasi Penilai, Surveyor, dan Penilai Surveyor --}}
|
||||||
|
<div>
|
||||||
|
@isset($permohonan->penilaian)
|
||||||
|
@if ($penilai = $permohonan->penilaian->userPenilai->name ?? null)
|
||||||
|
<div class="mb-3">
|
||||||
|
<p class="text-md font-medium text-gray-900">Penilai:</p>
|
||||||
|
<span class="text-2sm text-gray-700">{{ $penilai }}</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($surveyor = $permohonan->penilaian->userSurveyor->name ?? null)
|
||||||
|
<div class="mb-3">
|
||||||
|
<p class="text-md font-medium text-gray-900">Surveyor:</p>
|
||||||
|
<span class="text-2sm text-gray-700">{{ $surveyor }}</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if ($penilaiSurveyor = $permohonan->penilaian->userPenilaiSurveyor->name ?? null)
|
||||||
|
<div class="mb-3">
|
||||||
|
<p class="text-md font-medium text-gray-900">Penilai Surveyor:</p>
|
||||||
|
<span class="text-2sm text-gray-700">{{ $penilaiSurveyor }}</span>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endisset
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Teams --}}
|
||||||
|
<div>
|
||||||
|
<h3 class="text-md font-medium text-gray-900">Teams:</h3>
|
||||||
|
<ul>
|
||||||
|
@foreach ($permohonan->penilaian->teams->teamsUsers as $item)
|
||||||
|
<li class="text-xs text-gray-800 leading-[22px]">{{ $item->user->name }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{-- Catatan --}}
|
||||||
|
<div>
|
||||||
|
<h3 class="text-md font-medium text-gray-900">Catatan:</h3>
|
||||||
|
<span class="text-2sm text-gray-700">{{ $permohonan->penilaian->keterangan }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
211
resources/views/activity/index.blade.php
Normal file
211
resources/views/activity/index.blade.php
Normal file
@@ -0,0 +1,211 @@
|
|||||||
|
@extends('layouts.main')
|
||||||
|
|
||||||
|
@section('breadcrumbs')
|
||||||
|
{{ Breadcrumbs::render('activity') }}
|
||||||
|
@endsection
|
||||||
|
@section('content')
|
||||||
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
<div class="card pb-2.5">
|
||||||
|
<div class="card-header" id="basic_settings">
|
||||||
|
<div class="card-title flex flex-row gap-1.5">
|
||||||
|
Activity
|
||||||
|
</div>
|
||||||
|
<div class="card-header py-5 flex-wrap">
|
||||||
|
<h3 class="card-title">
|
||||||
|
{{-- Daftar {{}} --}}
|
||||||
|
</h3>
|
||||||
|
<div class="flex flex-wrap gap-2 lg:gap-5">
|
||||||
|
<div class="flex">
|
||||||
|
<label class="input input-sm">
|
||||||
|
<i class="ki-filled ki-magnifier"></i>
|
||||||
|
<input placeholder="Search Penilaian" id="search" type="text" value="">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex">
|
||||||
|
<select class="select select-sm w-28" name="select" id="status-filter">
|
||||||
|
<option value="">Pilih Status</option>
|
||||||
|
@foreach ($status_permohonan as $item)
|
||||||
|
<option value="{{ strtolower($item->name) }}">{{ $item->name }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-wrap gap-2.5">
|
||||||
|
<div class="h-[24px] border border-r-gray-200"></div>
|
||||||
|
<a class="btn btn-sm btn-light" href="{{ route('activity.export') }}"> Export to Excel </a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card-grid min-w-full" data-datatable="false" data-datatable-page-size="5"
|
||||||
|
data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('activity.datatables') }}">
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="scrollable-x-auto">
|
||||||
|
<table class="table table-auto table-border align-middle text-gray-700 font-medium text-sm"
|
||||||
|
data-datatable-table="true">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="w-14">
|
||||||
|
<input class="checkbox checkbox-sm" data-datatable-check="true" type="checkbox" />
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="nomor_registrasi">
|
||||||
|
<span class="sort"><span class="sort-label">Nomor Registrasi</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tanggal_permohonan">
|
||||||
|
<span class="sort"><span class="sort-label">Tanggal Permohonan</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="user_id">
|
||||||
|
<span class="sort"><span class="sort-label">User Pemohon</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="branch_id">
|
||||||
|
<span class="sort"><span class="sort-label">Cabang Pemohon</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="debitur_id">
|
||||||
|
<span class="sort"><span class="sort-label">Debitur</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="tujuan_penilaian_id">
|
||||||
|
<span class="sort"><span class="sort-label">Tujuan Penilaian</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[150px]" data-datatable-column="status">
|
||||||
|
<span class="sort"><span class="sort-label">Status</span>
|
||||||
|
<span class="sort-icon"></span>
|
||||||
|
</span>
|
||||||
|
</th>
|
||||||
|
<th class="min-w-[50px] text-center" data-datatable-column="actions">Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="card-footer justify-center md:justify-between flex-col md:flex-row gap-3 text-gray-600 text-2sm font-medium">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
Show
|
||||||
|
<select class="select select-sm w-16" data-datatable-size="true" name="perpage"> </select> per
|
||||||
|
page
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-4">
|
||||||
|
<span data-datatable-info="true"></span>
|
||||||
|
<div class="pagination" data-datatable-pagination="true"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="module">
|
||||||
|
const element = document.querySelector('#permohonan-table');
|
||||||
|
const searchInput = document.getElementById('search');
|
||||||
|
const statusFilter = document.getElementById('status-filter'); // Dropdown filter element
|
||||||
|
|
||||||
|
const apiUrl = element.getAttribute('data-api-url');
|
||||||
|
const dataTableOptions = {
|
||||||
|
apiEndpoint: apiUrl,
|
||||||
|
pageSize: 5,
|
||||||
|
order: [{
|
||||||
|
column: 'nomor_registrasi',
|
||||||
|
dir: 'asc'
|
||||||
|
} // Default order by 'nomor_registrasi' ascending
|
||||||
|
],
|
||||||
|
columns: {
|
||||||
|
select: {
|
||||||
|
render: (item, data, context) => {
|
||||||
|
const checkbox = document.createElement('input');
|
||||||
|
checkbox.className = 'checkbox checkbox-sm';
|
||||||
|
checkbox.type = 'checkbox';
|
||||||
|
checkbox.value = data.id.toString();
|
||||||
|
checkbox.setAttribute('data-datatable-row-check', 'true');
|
||||||
|
return checkbox.outerHTML.trim();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nomor_registrasi: {
|
||||||
|
title: 'Nomor Registrasi',
|
||||||
|
},
|
||||||
|
tanggal_permohonan: {
|
||||||
|
title: 'Tanggal Permohonan'
|
||||||
|
},
|
||||||
|
user_id: {
|
||||||
|
title: 'User Pemohon',
|
||||||
|
render: (item, data) => `${data.user.name}`,
|
||||||
|
},
|
||||||
|
branch_id: {
|
||||||
|
title: 'Cabang Pemohon',
|
||||||
|
render: (item, data) => `${data.branch.name}`,
|
||||||
|
},
|
||||||
|
debitur_id: {
|
||||||
|
title: 'Debitur',
|
||||||
|
render: (item, data) => `${data.debiture.name}`,
|
||||||
|
},
|
||||||
|
tujuan_penilaian_id: {
|
||||||
|
title: 'Tujuan Penilaian',
|
||||||
|
render: (item, data) => `${data.tujuan_penilaian.name}`,
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
title: 'Status',
|
||||||
|
render: (item, data) => {
|
||||||
|
let badgeClass = '';
|
||||||
|
switch (data.status.toLowerCase()) {
|
||||||
|
case 'revisi':
|
||||||
|
badgeClass = 'badge badge-pill badge-outline badge-warning';
|
||||||
|
break;
|
||||||
|
case 'order':
|
||||||
|
badgeClass = 'badge badge-pill badge-outline badge-info';
|
||||||
|
break;
|
||||||
|
case 'register':
|
||||||
|
badgeClass = 'badge badge-pill badge-outline badge-success';
|
||||||
|
break;
|
||||||
|
case 'survey':
|
||||||
|
badgeClass = 'badge badge-pill badge-outline badge-primary';
|
||||||
|
break;
|
||||||
|
case 'assign':
|
||||||
|
badgeClass = 'badge badge-pill badge-outline badge-dark';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
badgeClass = 'badge badge-pill badge-outline';
|
||||||
|
}
|
||||||
|
|
||||||
|
return `<span class="badge ${badgeClass}">${data.status}</span>`;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
title: 'Action',
|
||||||
|
render: (item, data) => `
|
||||||
|
<div class="flex flex-nowrap justify-center">
|
||||||
|
<a class="btn btn-sm btn-icon btn-clear btn-warning" href="activity/${data.id}/show">
|
||||||
|
<i class="ki-outline ki-eye"></i>
|
||||||
|
</a>
|
||||||
|
</div>`,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let dataTable = new KTDataTable(element, dataTableOptions);
|
||||||
|
|
||||||
|
searchInput.addEventListener('input', function() {
|
||||||
|
const searchValue = this.value.trim();
|
||||||
|
dataTable.search(searchValue, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
statusFilter.addEventListener('change', function() {
|
||||||
|
const selectedStatus = this.value;
|
||||||
|
dataTable.search(selectedStatus);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $arahMataAngin->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $arahMataAngin->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
Code
|
Code
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('code') border-danger @enderror" type="text" name="code" value="{{ $branch->code ?? '' }}">
|
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $branch->code ?? '' }}">
|
||||||
@error('code')
|
@error('code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $branch->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $branch->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
Code
|
Code
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('code') border-danger @enderror" type="text" name="code" value="{{ $currency->code ?? '' }}">
|
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $currency->code ?? '' }}">
|
||||||
@error('code')
|
@error('code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $currency->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $currency->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
Decimal Places
|
Decimal Places
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('decimal_places') border-danger @enderror" type="number" min="0" max="3" name="decimal_places" value="{{ $currency->decimal_places ?? '' }}">
|
<input class="input @error('decimal_places') border-danger bg-danger-light @enderror" type="number" min="0" max="3" name="decimal_places" value="{{ $currency->decimal_places ?? '' }}">
|
||||||
@error('decimal_places')
|
@error('decimal_places')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<form action="{{ isset($debitur->id) ? route('debitur.update', $debitur->id) : route('debitur.store') }}" method="POST" class="grid gap-5">
|
<form action="{{ isset($debitur->id) ? route('debitur.update', $debitur->id) : route('debitur.store') }}" method="POST" class="grid gap-5">
|
||||||
@if(isset($debitur->id))
|
@if(isset($debitur->id))
|
||||||
|
<input type="hidden" name="id" value="{{ $debitur->id }}">
|
||||||
@method('PUT')
|
@method('PUT')
|
||||||
@endif
|
@endif
|
||||||
@csrf
|
@csrf
|
||||||
@@ -8,7 +9,7 @@
|
|||||||
Cabang
|
Cabang
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="branch_id" id="branch_id">
|
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="branch_id" id="branch_id">
|
||||||
<option value="">Pilih Cabang</option>
|
<option value="">Pilih Cabang</option>
|
||||||
@foreach($branches as $branch)
|
@foreach($branches as $branch)
|
||||||
@if(isset($debitur))
|
@if(isset($debitur))
|
||||||
@@ -29,7 +30,7 @@
|
|||||||
CIF
|
CIF
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('cif') border-danger @enderror" type="number" name="cif" value="{{ $debitur->cif ?? '' }}">
|
<input class="input @error('cif') border-danger bg-danger-light @enderror" type="number" name="cif" value="{{ $debitur->cif ?? '0000000000' }}">
|
||||||
@error('cif')
|
@error('cif')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -40,7 +41,7 @@
|
|||||||
Nomor Rekening
|
Nomor Rekening
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('nomor_rekening') border-danger @enderror" type="number" name="nomor_rekening" value="{{ $debitur->nomor_rekening ?? '' }}">
|
<input class="input @error('nomor_rekening') border-danger bg-danger-light @enderror" type="number" name="nomor_rekening" value="{{ $debitur->nomor_rekening ?? '' }}">
|
||||||
@error('nomor_rekening')
|
@error('nomor_rekening')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -51,7 +52,7 @@
|
|||||||
Nama Debitur
|
Nama Debitur
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $debitur->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $debitur->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -62,7 +63,7 @@
|
|||||||
NPWP
|
NPWP
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('npwp') border-danger @enderror" type="number" name="npwp" value="{{ $debitur->npwp ?? '' }}">
|
<input class="input @error('npwp') border-danger bg-danger-light @enderror" type="number" name="npwp" value="{{ $debitur->npwp ?? '' }}">
|
||||||
@error('npwp')
|
@error('npwp')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -73,7 +74,7 @@
|
|||||||
Email
|
Email
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('email') border-danger @enderror" type="email" name="email" value="{{ $debitur->email ?? '' }}">
|
<input class="input @error('email') border-danger bg-danger-light @enderror" type="email" name="email" value="{{ $debitur->email ?? '' }}">
|
||||||
@error('email')
|
@error('email')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -84,7 +85,7 @@
|
|||||||
No Handphone
|
No Handphone
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('phone') border-danger @enderror" type="number" name="phone" value="{{ $debitur->phone ?? '' }}">
|
<input class="input @error('phone') border-danger bg-danger-light @enderror" type="number" name="phone" value="{{ $debitur->phone ?? '' }}">
|
||||||
@error('phone')
|
@error('phone')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -97,7 +98,7 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger @enderror">
|
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Province</option>
|
<option value="">Select Province</option>
|
||||||
@foreach($provinces as $province)
|
@foreach($provinces as $province)
|
||||||
@if(isset($debitur))
|
@if(isset($debitur))
|
||||||
@@ -116,7 +117,7 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger @enderror">
|
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select City</option>
|
<option value="">Select City</option>
|
||||||
@if(isset($cities))
|
@if(isset($cities))
|
||||||
@foreach($cities as $city)
|
@foreach($cities as $city)
|
||||||
@@ -140,7 +141,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger @enderror">
|
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select District</option>
|
<option value="">Select District</option>
|
||||||
@if(isset($districts))
|
@if(isset($districts))
|
||||||
@foreach($districts as $district)
|
@foreach($districts as $district)
|
||||||
@@ -162,7 +163,7 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger @enderror">
|
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Village</option>
|
<option value="">Select Village</option>
|
||||||
@if(isset($villages))
|
@if(isset($villages))
|
||||||
@foreach($villages as $village)
|
@foreach($villages as $village)
|
||||||
@@ -184,14 +185,14 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('postal_code') border-danger @enderror" type="number" id="postal_code" name="postal_code" value="{{ $debitur->postal_code ?? '' }}" placeholder="Postal Code">
|
<input class="input @error('postal_code') border-danger bg-danger-light @enderror" type="number" id="postal_code" name="postal_code" value="{{ $debitur->postal_code ?? '' }}" placeholder="Postal Code">
|
||||||
@error('postal_code')
|
@error('postal_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
||||||
<textarea class="textarea @error('address') border-danger @enderror" rows="3" type="number" id="address" name="address">{{ $debitur->address ?? '' }}</textarea>
|
<textarea class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3" type="number" id="address" name="address">{{ $debitur->address ?? '' }}</textarea>
|
||||||
@error('address')
|
@error('address')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="input-group w-full">
|
<div class="input-group w-full">
|
||||||
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
|
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
|
||||||
<option value="">Pilih Pemilik Jaminan</option>
|
<option value="">Pilih Pemilik Jaminan</option>
|
||||||
<option value="0">Sama Dengan Debitur</option>
|
<option value="0">Sama Dengan Debitur</option>
|
||||||
@if(isset($pemilikJaminan))
|
@if(isset($pemilikJaminan))
|
||||||
@@ -56,7 +56,10 @@
|
|||||||
Jenis Jaminan
|
Jenis Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="jenis_jaminan_id" id="jenis_jaminan_id">
|
@if(isset($document->id))
|
||||||
|
<input type="hidden" name="jenis_jaminan_id" value="{{ $document->jenis_jaminan_id }}">
|
||||||
|
@endif
|
||||||
|
<select onchange="getLegalitasJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="jenis_jaminan_id" id="jenis_jaminan_id">
|
||||||
<option value="">Pilih Jenis Jaminan</option>
|
<option value="">Pilih Jenis Jaminan</option>
|
||||||
@foreach($jenisJaminan as $row)
|
@foreach($jenisJaminan as $row)
|
||||||
@if(isset($document))
|
@if(isset($document))
|
||||||
@@ -73,68 +76,52 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Jenis Legalitas Jaminan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<select class="input tomselect w-full @error('branch_id') border-danger @enderror" name="jenis_legalitas_jaminan_id" id="jenis_legalitas_jaminan_id">
|
|
||||||
<option value="">Pilih Jenis Legalitas Jaminan</option>
|
|
||||||
@foreach($jenisLegalitasJaminan as $row)
|
|
||||||
@if(isset($document))
|
|
||||||
<option value="{{ $row->id }}" {{ isset($document->jenis_legalitas_jaminan_id) && $document->jenis_legalitas_jaminan_id == $row->id?'selected' : '' }}>
|
|
||||||
{{ $row->name }}
|
|
||||||
</option>
|
|
||||||
@else
|
|
||||||
<option value="{{ $row->id }}">{{ $row->name }}</option>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
@endforeach
|
@if(isset($document->id))
|
||||||
</select>
|
@foreach($document->detail as $detail)
|
||||||
@error('jenis_legalitas_jaminan_id')
|
<input type="hidden" name="detail_dokumen_jaminan_id[]" value="{{ $detail->id }}">
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@enderror
|
<label class="form-label max-w-56 font-bold">
|
||||||
</div>
|
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
||||||
</div>
|
</label>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $detail->jenis_legalitas_jaminan_id }}">
|
||||||
<label class="form-label max-w-56">
|
</div>
|
||||||
Nama Dokumen
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input @error('name') border-danger @enderror" type="text " id="name" name="name" value="{{ $document->name ?? '' }}" placeholder="Nama Dokumen">
|
|
||||||
@error('name')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Dokumen Jaminan
|
Nama Dokumen
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="file-input @error('dokumen_jaminan') border-danger @enderror" type="file" name="dokumen_jaminan" value="">
|
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nama Dokumen">
|
||||||
@if(isset($document->dokumen_jaminan))
|
</div>
|
||||||
<a href="{{ route('debitur.download',$document->id) }}" class="mt-1 badge badge-sm badge-outline">{{ basename($document->dokumen_jaminan) }}
|
</div>
|
||||||
<i class="ki-filled ki-cloud-download"></i></a>
|
|
||||||
@endif
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@error('dokumen_jaminan')
|
<label class="form-label max-w-56">
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
Dokumen Jaminan
|
||||||
@enderror
|
</label>
|
||||||
</div>
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
</div>
|
<input class="file-input" type="file" name="dokumen_jaminan[]" value="">
|
||||||
|
@if(isset($detail->dokumen_jaminan))
|
||||||
|
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id,'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline mt-2">{{ basename($detail->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Keterangan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea class="textarea" rows="3" type="number" name="keterangan[]">{{ $detail->keterangan ?? "" }}</textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@else
|
||||||
|
<div id="doctainer" class="grid gap-5">
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Keterangan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<textarea class="textarea @error('keterangan') border-danger @enderror" rows="3" type="number" name="keterangan"> {{ $document->keterangan ?? '' }}</textarea>
|
|
||||||
@error('keterangan')
|
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
||||||
@enderror
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
@endif
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
@@ -143,7 +130,7 @@
|
|||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger @enderror">
|
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Province</option>
|
<option value="">Select Province</option>
|
||||||
@foreach($provinces as $province)
|
@foreach($provinces as $province)
|
||||||
@if(isset($document))
|
@if(isset($document))
|
||||||
@@ -155,6 +142,7 @@
|
|||||||
{{ $province->name }}
|
{{ $province->name }}
|
||||||
</option>
|
</option>
|
||||||
@endif
|
@endif
|
||||||
|
;
|
||||||
@endforeach
|
@endforeach
|
||||||
</select>
|
</select>
|
||||||
@error('province_code')
|
@error('province_code')
|
||||||
@@ -162,7 +150,7 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger @enderror">
|
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select City</option>
|
<option value="">Select City</option>
|
||||||
@if(isset($cities))
|
@if(isset($cities))
|
||||||
@foreach($cities as $city)
|
@foreach($cities as $city)
|
||||||
@@ -186,7 +174,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger @enderror">
|
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select District</option>
|
<option value="">Select District</option>
|
||||||
@if(isset($districts))
|
@if(isset($districts))
|
||||||
@foreach($districts as $district)
|
@foreach($districts as $district)
|
||||||
@@ -208,7 +196,7 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger @enderror">
|
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
||||||
<option value="">Select Village</option>
|
<option value="">Select Village</option>
|
||||||
@if(isset($villages))
|
@if(isset($villages))
|
||||||
@foreach($villages as $village)
|
@foreach($villages as $village)
|
||||||
@@ -230,14 +218,14 @@
|
|||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('postal_code') border-danger @enderror" type="number" id="postal_code" name="postal_code" value="{{ $document->postal_code ?? '' }}" placeholder="Postal Code">
|
<input class="input @error('postal_code') border-danger bg-danger-light @enderror" type="number" id="postal_code" name="postal_code" value="{{ $document->postal_code ?? '' }}" placeholder="Postal Code">
|
||||||
@error('postal_code')
|
@error('postal_code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
||||||
<textarea class="textarea @error('address') border-danger @enderror" rows="3" type="number" id="address" name="address">{{ $document->address ?? '' }}</textarea>
|
<textarea class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3" type="number" id="address" name="address">{{ $document->address ?? '' }}</textarea>
|
||||||
@error('address')
|
@error('address')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -250,3 +238,69 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script>
|
||||||
|
function getLegalitasJaminan() {
|
||||||
|
var legalitasJaminan = document.getElementById('jenis_jaminan_id').value;
|
||||||
|
var url = '/basic-data/jenis-jaminan/legalitas/' + legalitasJaminan;
|
||||||
|
fetch(url, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
|
}
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
console.log(data);
|
||||||
|
var doctainer = document.getElementById('doctainer');
|
||||||
|
doctainer.innerHTML = '';
|
||||||
|
data.forEach((item, index) => {
|
||||||
|
doctainer.innerHTML += `
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56 font-bold">
|
||||||
|
${index + 1}. ${item.name}
|
||||||
|
</label>
|
||||||
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value="${item.id}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama Dokumen
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nama Dokumen">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Dokumen Jaminan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<input class="file-input" type="file" name="dokumen_jaminan[]" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Keterangan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea class="textarea" rows="3" type="number" name="keterangan[]"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('Error:', error);
|
||||||
|
// Handle the error here
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endpush
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div class="grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-5 lg:gap-7.5">
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-5 lg:gap-7.5">
|
||||||
@foreach($documents as $document)
|
@foreach($documents as $document)
|
||||||
<div class="card flex flex-col gap-5 p-5 lg:p-7.5">
|
<div class="card flex flex-col gap-5 p-5 lg:p-7.5">
|
||||||
<div class="flex items-center flex-wrap justify-between gap-1">
|
<div class="flex items-center flex-wrap justify-between gap-1">
|
||||||
@@ -19,14 +19,7 @@
|
|||||||
</i>
|
</i>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col">
|
|
||||||
<a class="text-md font-semibold text-gray-900 hover:text-primary-active mb-px" href="/metronic/tailwind/demo1/public-profile/profiles/creator">
|
|
||||||
{{ $document->name }}
|
|
||||||
</a>
|
|
||||||
<span class="text-2sm font-medium text-gray-600">
|
|
||||||
{{ $document->jenisJaminan->name }} | {{ $document->jenisLegalitasJaminan->name }}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="menu inline-flex" data-menu="true">
|
<div class="menu inline-flex" data-menu="true">
|
||||||
<div class="flex flex-nowrap justify-center gap-1.5">
|
<div class="flex flex-nowrap justify-center gap-1.5">
|
||||||
@@ -50,27 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="border-t border-gray-300 border-dashed">
|
<div class="border-t border-gray-300 border-dashed">
|
||||||
</div>
|
</div>
|
||||||
@if($document->dokumen_jaminan)
|
|
||||||
<div class="flex items-center justify-between flex-wrap my-2.5 gap-2">
|
|
||||||
<span class="text-2xs text-gray-600 uppercase">
|
|
||||||
dokumen jaminan
|
|
||||||
</span>
|
|
||||||
<a href="{{ route('debitur.download',$document->id) }}" class="badge badge-sm badge-outline">{{ basename($document->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-300 border-dashed">
|
|
||||||
</div>
|
|
||||||
@endif
|
|
||||||
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
|
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
|
||||||
<span class="text-2xs text-gray-600 uppercase">
|
|
||||||
keterangan
|
|
||||||
</span>
|
|
||||||
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
|
|
||||||
{{ $document->keterangan }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="border-t border-gray-300 border-dashed mb-3.5">
|
|
||||||
</div>
|
|
||||||
<div class="flex items-start justify-between flex-wrap gap-2">
|
|
||||||
<span class="text-2xs text-gray-600 uppercase">
|
<span class="text-2xs text-gray-600 uppercase">
|
||||||
alamat
|
alamat
|
||||||
</span>
|
</span>
|
||||||
@@ -78,6 +51,35 @@
|
|||||||
{{ $document->address.', '.$document->village->name.', '.$document->city->name.', '.$document->province->name.', '.$document->postal_code }}
|
{{ $document->address.', '.$document->village->name.', '.$document->city->name.', '.$document->province->name.', '.$document->postal_code }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed">
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center justify-between flex-wrap my-2.5 gap-2">
|
||||||
|
<span class="text-2xs text-gray-600 uppercase">
|
||||||
|
dokumen jaminan
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed">
|
||||||
|
</div>
|
||||||
|
@foreach($document->detail as $detail)
|
||||||
|
<div class="flex items-center justify-between flex-wrap my-2.5 gap-2">
|
||||||
|
<span class="text-2xs text-gray-600 uppercase">
|
||||||
|
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
||||||
|
</span>
|
||||||
|
<a href="{{ route('debitur.jaminan.download',['id'=>$debitur->id, 'dokumen'=>$detail->id]) }}" class="badge badge-sm badge-outline">{{ basename($detail->dokumen_jaminan) }} <i class="ki-filled ki-cloud-download"></i></a>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed">
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
|
||||||
|
<span class="text-2xs text-gray-600 uppercase pl-3">
|
||||||
|
keterangan
|
||||||
|
</span>
|
||||||
|
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
|
||||||
|
{{ $detail->keterangan }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="border-t border-gray-300 border-dashed mb-3.5">
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
alamat
|
alamat
|
||||||
</span>
|
</span>
|
||||||
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
|
<p class="text-2xs text-gray-600 text-right max-w-[250px]">
|
||||||
{{ $pemilik->address.', '.$pemilik->village->name.', '.$pemilik->city->name.', '.$pemilik->province->name.', '.$pemilik->postal_code }}
|
{{ $pemilik->address ?? '' }}, {{ $pemilik->village->name ?? ''}}, {{ $pemilik->city->name ?? ''}}, {{ $pemilik->province->name ?? '' }}, {{ $pemilik->postal_code ?? '' }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -13,6 +13,9 @@
|
|||||||
{{ isset($debitur->id) ? 'Edit' : 'Tambah' }} Debitur
|
{{ isset($debitur->id) ? 'Edit' : 'Tambah' }} Debitur
|
||||||
</h3>
|
</h3>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
|
@if(isset($debitur->id))
|
||||||
|
<a class="btn btn-sm btn-primary" href="{{ route('permohonan.create.debitur', $debitur->id) }}"> Buat Permohonan </a>
|
||||||
|
@endif
|
||||||
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -6,16 +6,28 @@
|
|||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
<div class="w-full grid gap-5 lg:gap-7.5 mx-auto">
|
||||||
|
|
||||||
<div class="card pb-2.5">
|
<div class="card pb-2.5">
|
||||||
<div class="card-header" id="basic_settings">
|
<div class="card-header" id="basic_settings">
|
||||||
<div class="card-title flex flex-row gap-1.5">
|
<div class="card-title flex flex-row gap-1.5">
|
||||||
<a href="{{ route('debitur.edit',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Debitur</a>
|
@if(request()->get('permohonan_id'))
|
||||||
<a href="{{ route('debitur.jaminan.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Dokumen Jaminan</a>
|
<a href="{{ route('permohonan.edit',['permohonan'=>request()->get('permohonan_id')]) }}" class="btn btn-xs {{ request()->routeIs('permohonan.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Permohonan</a>
|
||||||
<a href="{{ route('debitur.pemilik.index',$debitur->id) }}" class="btn btn-xs {{ request()->routeIs('debitur.pemilik.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Pemilk Jaminan</a>
|
@endif
|
||||||
|
<a href="{{ route('debitur.edit',array_merge(request()->query(),['debitur'=>$debitur->id])) }}" class="btn btn-xs {{ request()->routeIs('debitur.edit') ? 'btn-outline btn-primary' : 'btn-light' }}">Data Debitur</a>
|
||||||
|
<a href="{{ route('debitur.jaminan.index',array_merge(request()->query(),['id'=>$debitur->id])) }}" class="btn btn-xs {{ request()->routeIs('debitur.jaminan.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Dokumen Jaminan</a>
|
||||||
|
<a href="{{ route('debitur.pemilik.index',array_merge(request()->query(),['id'=>$debitur->id])) }}" class="btn btn-xs {{ request()->routeIs('debitur.pemilik.index') ? 'btn-outline btn-primary' : 'btn-light' }}">Pemilk Jaminan</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-2">
|
<div class="flex items-center gap-2">
|
||||||
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
@if(isset($debitur->id) && request()->get('permohonan_id') == null)
|
||||||
|
<a class="btn btn-sm btn-primary" href="{{ route('permohonan.create.debitur', $debitur->id) }}"> Buat Permohonan </a>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
@if(request()->get('from') == 'permohonan')
|
||||||
|
<a href="{{ route('permohonan.create') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
@elseif(request()->get('permohonan_id'))
|
||||||
|
<a href="{{ route('permohonan.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
@else
|
||||||
|
<a href="{{ route('debitur.index') }}" class="btn btn-xs btn-info"><i class="ki-filled ki-exit-left"></i> Back</a>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $hubunganPemilikJaminan->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $hubunganPemilikJaminan->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $hubunganPenghuniJaminan->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $hubunganPenghuniJaminan->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
Code
|
Code
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('code') border-danger @enderror" type="text" name="code" value="{{ $jenisAset->code ?? '' }}">
|
<input class="input @error('code') border-danger bg-danger-light @enderror" type="text" name="code" value="{{ $jenisAset->code ?? '' }}">
|
||||||
@error('code')
|
@error('code')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
Name
|
Name
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<input class="input @error('name') border-danger @enderror" type="text" name="name" value="{{ $jenisAset->name ?? '' }}">
|
<input class="input @error('name') border-danger bg-danger-light @enderror" type="text" name="name" value="{{ $jenisAset->name ?? '' }}">
|
||||||
@error('name')
|
@error('name')
|
||||||
<em class="alert text-danger text-sm">{{ $message }}</em>
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
||||||
@enderror
|
@enderror
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user