Membuat Fitur Menu KJPP part 1

This commit is contained in:
2024-09-24 11:51:53 +07:00
parent 8e73269f76
commit 8b4dd34b51
6 changed files with 575 additions and 85 deletions

View 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\IjinUsaha;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class KJPPExport implements WithColumnFormatting, WithHeadings, FromCollection, withMapping
{
public function collection()
{
return IjinUsaha::all();
}
public function map($row): array
{
return [
$row->id,
$row->code,
$row->name,
$row->jenis_kantor,
$row->created_at
];
}
public function headings(): array
{
return [
'ID',
'Code',
'Name',
'Jenis Kantor / Cabang',
'Created At'
];
}
public function columnFormats(): array
{
return [
'A' => NumberFormat::FORMAT_NUMBER,
'B' => NumberFormat::FORMAT_NUMBER,
'E' => NumberFormat::FORMAT_DATE_DATETIME
];
}
}

View File

@@ -2,15 +2,21 @@
namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Modules\Lpj\Http\Requests\KJPPRequest;
use Modules\Lpj\Models\Branch;
use Modules\Lpj\Models\IjinUsaha;
use Modules\Lpj\Models\JenisJaminan;
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\District;
use Modules\Lpj\Models\JenisJaminan;
use Modules\Location\Models\Province;
use Modules\Location\Models\Village;
use Modules\Lpj\Http\Requests\KJPPRequest;
use Throwable;
class KJPPController extends Controller
{
@@ -31,8 +37,9 @@ class KJPPController extends Controller
$branch = Branch::all();
$ijin_usaha = IjinUsaha::all();
$jenis_aset = JenisJaminan::all();
$provinces = Province::all();
return view('lpj::kjpp.create', compact('branch', 'ijin_usaha', 'jenis_aset'));
return view('lpj::kjpp.create', compact('branch', 'ijin_usaha', 'jenis_aset', 'provinces'));
}
/**
@@ -44,14 +51,19 @@ class KJPPController extends Controller
if ($validate) {
try {
$file = $request->file('attachment');
$filename = time() . '.' . $file->getClientOriginalExtension();
$file->storeAs('uploads_pdf', $filename, 'public');
KJPP::create($validate);
return redirect()
->route('basicdata.kjpp.index')
->with('success', 'Ijin Usaha created successfully');
} catch (Exception $e) {
} catch (Throwable $e) {
return redirect()
->route('basicdata.kjpp.create')
->with('error', 'Failed to create ijin Usaha');
->with('error', 'Failed to create ijin Usaha: ' . $e);
}
}
}
@@ -75,7 +87,7 @@ class KJPPController extends Controller
/**
* Update the specified resource in storage.
*/
public function update(Request $request, $id)
public function update(KJPP $request, $id)
{
//
}
@@ -152,6 +164,6 @@ class KJPPController extends Controller
public function export()
{
// return Excel::download(new CurrencyExport, 'currency.xlsx');
return Excel::download(new KJPPExport, 'currency.xlsx');
}
}

View File

@@ -3,6 +3,7 @@
namespace Modules\Lpj\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use daengdeni\LaravelIdGenerator\IdGenerator;
class KJPPRequest extends FormRequest
{
@@ -13,7 +14,27 @@ class KJPPRequest extends FormRequest
{
$rules = [
'name' => 'required|string|not_regex:/^\d+$/|max:255',
'jenis_kantor' => 'required'
'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' => 'nullable|exists:ijin_usaha,id',
'jenis_aset_id' => 'nullable|exists:jenis_jaminan,id',
'attachment' => 'required|mimes:pdf|max:1024'
];
if ($this->method() == 'PUT') {
@@ -33,16 +54,70 @@ class KJPPRequest extends FormRequest
return true;
}
public function prepareForValidation(): void
{
if ($this->method() == 'POST') {
$this->merge([
'code' => IdGenerator::generate(
['table' => 'ijin_usaha', 'length' => 5, 'prefix' => 'IU', 'field' => 'code'],
['table' => 'jenis_jaminan', 'length' => 5, 'prefix' => 'JJ', 'field' => 'code'],
)
]);
}
$this->merge([
'ijin_usaha_id' => json_encode($this->ijin_usaha_id),
'jenis_aset_id' => json_encode($this->jenis_aset_id)
]);
}
public function messages(): array
{
return [
'code.required' => 'Kode KJPP harus diisi!',
'code.required' => 'Kode KJPP Wajib diisi!',
'code.max' => 'Kode KJPP maksimal 255 huruf!',
'code.unique' => 'Kode KJPP tidak boleh sama!',
'name.required' => 'Nama KJPP harus diisi!',
'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 harus diisi!'
'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!',
'attachment.required' => 'Attachment Wajib diisi!',
'attachment.mimes' => 'Attachment harus berformat pdf!',
'attachment.max' => 'Attachment berukuran maksimum 1 MB!',
];
}
}

View File

@@ -16,7 +16,31 @@ class KJPP extends Model
/**
* The attributes that are mass assignable.
*/
protected $guarded = ['id'];
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'
];
// relasi ke branch
public function branch()