first commit

This commit is contained in:
2026-05-14 15:28:23 +08:00
commit 4fad704fd2
4034 changed files with 1093582 additions and 0 deletions

View File

@@ -0,0 +1,617 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\SimpleType\JcTable;
use PhpOffice\PhpWord\SimpleType\Jc;
use PhpOffice\PhpWord\Style\Table;
use PhpOffice\PhpWord\ComplexType\TblWidth;
use PhpOffice\PhpWord\SimpleType\Paper;
use Illuminate\Support\Facades\Storage;
use App\Models\BorangUlasanIk;
class CetakanPenjajaController extends Controller
{
//
public function cetak_pemeriksaan_lepas(Request $request, $id, $borang_ik_id)
{
$headText = ['name' => 'Arial', 'size' => 10];
$borang_ik = BorangUlasanIk::findOrFail($request->borang_ik_id);
$phpWord = new PhpWord();
$phpWord->setDefaultFontName('Arial'); // Jenis font
$phpWord->setDefaultFontSize(8); // Saiz font kecil
$phpWord->addTitleStyle(
1, // heading level (1 = Heading1)
NULL,
['alignment' => 'center']
);
$section = $phpWord->addSection([
'orientation' => 'portrait',
'marginLeft' => 1000,
'marginRight' => 1000,
'marginTop' => 500,
]);
$footer = $section->addFooter();
$footer->addText(
'Rujukan Fail : MBIP(L)(PS) '.$borang_ik->lesen_penjaja->no_fail_lesen,
['size' => 8, 'italic' => true],
['alignment' => \PhpOffice\PhpWord\SimpleType\Jc::START]
);
$table = $section->addTable();
$table->addRow();
$cell1 = $table->addCell(2000);
$cell1->addImage(public_path('img/mbip-crown-png45x45.png'), ['width' => 45, 'height' => 45]);
$cell2 = $table->addCell(6000);
$cell2->addText('JABATAN PELESENAN', ['bold' => true, 'size' => 12], ['spaceAfter' => 0]);
$cell2->addText('MAJLIS BANDARAYA ISKANDAR PUTERI', ['bold' => true, 'size' => 12]);
$cell3 = $table->addCell(2000);
$cell3->addText(' L02-03 ', ['size' => 8, 'bgColor'=>'CCCCCC'], ['alignment' => 'right', 'spaceAfter' => 0]);
$textRun = $section->addTextRun();
$textRun->addText(
'Ruj. Fail : ',
['name' => 'Arial', 'size' => 8]
);
$textRun->addText(
'MBIP(L)(PS) '.$borang_ik->lesen_penjaja->no_fail_lesen,
['name' => 'Arial', 'size' => 10, 'bold' => true]
);
$section->addText('Pegawai Tadbir N41', [], ['spaceAfter'=> 0]);
$section->addText('Jabatan Pelesenan');
$section->addText('LAPORAN PEMERIKSAAN KE ATAS PENJAJA', ['size' => 9, 'bold' => true], ['alignment' => 'center', 'spaceAfter' => 0]);
$section->addText('(PERMOHONAN / PEMBAHARUAN / PEMANTAUAN)', ['size' => 9, 'bold' => true], ['alignment' => 'center', 'spaceAfter' => 0]);
$section->addText(' ' );
$section->addText('STATUS PENJAJA', ['size' => 9, 'bold' => true, 'underline'=>'single']);
$section->addText('[ / ] '.ucwords($borang_ik->lesen_penjaja->jenis_penjaja->jenis), ['size' => 10, 'bold' => true]);
$section->addText('1) PERIHAL PENJAJA' );
$tableStyle = new Table();
$tableStyle->setWidth(new TblWidth(10000));
$tableStyle->setBorderSize(0);
$tableStyle->setBorderColor('FFFFFF');
$tableStyle->setCellMargin(80);
$tableStyle->setAlignment(JcTable::START);
// cara betul set indent
$tableStyle->setIndent(new TblWidth(720)); // 720 twip = 0.5 inch
// Create table with 2 columns
$table = $section->addTable($tableStyle);
$table->addRow();
$table->addCell(3000)->addText('a) Nama Pemohon :', [], ['spaceAfter' => 0]);
$table->addCell(700)->addText($borang_ik->lesen_penjaja->user->name, ['bold' => true], ['spaceAfter' => 0]);
// Row 2: Lokasi Tempat Berniaga
$table->addRow();
$table->addCell(3000)->addText('b) Lokasi Tempat Berniaga :', [], ['spaceAfter' => 0]);
$table->addCell(7000)->addText($borang_ik->lesen_penjaja->lokasi_penjajaan(), ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(3000)->addText('c) Jenis Jualan :', [], ['spaceAfter' => 0]);
$table->addCell(7000)->addText($borang_ik->lesen_penjaja->jenis_jualan->nama, ['bold' => true], ['spaceAfter' => 0]);
$section->addLine(['weight' => 1, 'width' => 500, 'height' => 0, 'color' => '000000']);
$section->addText('Tarikh Pemeriksaan : '.$borang_ik->dt_periksa);
$section->addText('2) ULASAN' );
$tableStyle = new Table();
$tableStyle->setWidth(new TblWidth(10000));
$tableStyle->setBorderSize(0);
$tableStyle->setBorderColor('FFFFFF');
$tableStyle->setCellMargin(80);
$tableStyle->setAlignment(JcTable::START);
// cara betul set indent
$tableStyle->setIndent(new TblWidth(720)); // 720 twip = 0.5 inch
// Create table with 3 columns
$table = $section->addTable($tableStyle);
$table->addRow();
$table->addCell(4500)->addText('a) Lokasi Tempat Berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText($borang_ik->kesesuaian_lokasi." [ / ]", ['bold' => true], ['spaceAfter' => 0]);
if($borang_ik->kesesuaian_lokasi == 'tidak sesuai'){
$table->addRow();
$table->addCell(4500)->addText('Jika tidak sesuai', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('sebab '.$borang_ik->kesesuaian_lokasi_sebab, ['bold' => true], ['spaceAfter' => 0]);
}
$table->addRow();
$table->addCell(4500)->addText('b) Perniagaan dijalankan oleh ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText(ucwords($borang_ik->dijalankan_oleh)." [ / ]", ['bold' => true], ['spaceAfter' => 0]);
if($borang_ik->dijalankan_oleh == 'orang lain'){
$table->addRow();
$table->addCell(10000)->addText('Notis memberhentikan perniagaan dikeluarkan.', [], ['alignment' => 'right', 'spaceAfter' => 0]);
}
$table->addRow();
$table->addCell(4500)->addText('c) Pematuhan syarat ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText($borang_ik->pematuhan_syarat." [ / ]", ['bold' => true], ['spaceAfter' => 0]);
if($borang_ik->pematuhan_syarat == 'belum dipatuhi'){
$table->addRow();
$table->addCell(4500)->addText('Jika belum', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('Perkara-perkara yang perlu dipatuhi :- ', [], ['spaceAfter' => 0]);
if($borang_ik->perkara_perlu_dipatuhi != ''){
$perlu_patuhi = explode("\n", $borang_ik->perkara_perlu_dipatuhi);
$i = 0;
foreach($perlu_patuhi as $pp){
$i++;
$table->addRow();
$table->addCell(4500)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText($i.") ".$pp, [], ['spaceAfter' => 0]);
}
}
}
$table->addRow();
$table->addCell(4500)->addText('d) Pemprosesan makanan di tempat berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
if(!is_null($borang_ik->pemprosesan_makanan)){
$table->addCell(5300)->addText(ucwords($borang_ik->pemprosesan_makanan)." [ / ]", ['bold' => true], ['spaceAfter' => 0]);
}
else{
$table->addCell(5300)->addText('', ['bold' => true], ['spaceAfter' => 0]);
}
if($borang_ik->pemprosesan_makanan == 'ada'){
if($borang_ik->pemprosesan_makanan_memasak == '1'){
$table->addRow();
$table->addCell(4500)->addText('', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('[ / ] Memasak makanan', ['bold' => true], ['spaceAfter' => 0]);
}
if($borang_ik->pemprosesan_makanan_merebus == '1'){
$table->addRow();
$table->addCell(4500)->addText('', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('[ / ] Merebus makanan', ['bold' => true], ['spaceAfter' => 0]);
}
if($borang_ik->pemprosesan_makanan_menggoreng == '1'){
$table->addRow();
$table->addCell(4500)->addText('', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('[ / ] Menggoreng makanan', ['bold' => true], ['spaceAfter' => 0]);
}
if($borang_ik->pemprosesan_makanan_lain == '1'){
$table->addRow();
$table->addCell(4500)->addText('', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('[ / ] Lain-lain '.$borang_ik->pemprosesan_makanan_lain_txt, ['bold' => true], ['spaceAfter' => 0]);
}
}
$table->addRow();
$table->addCell(4500)->addText('e) Mendirikan bangunan/payung ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
if($borang_ik->mendirikan_bangunan == 'tiada'){
$txt_bangunan = $borang_ik->mendirikan_bangunan." [ / ] (hanya menggunakan payung/meja sahaja)";
}
else{
$txt_bangunan = $borang_ik->mendirikan_bangunan." [ / ] (keluarkan notis)";
}
$table->addCell(5300)->addText(ucwords($borang_ik->pemprosesan_makanan), ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4500)->addText('(Jika bukan Penjaja Gerai Statik)', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('', ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4500)->addText('f) Jika berniaga menggunakan kenderaan ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
if((!is_null($borang_ik->jika_guna_kenderaan))&&($borang_ik->jika_guna_kenderaan != 'lain-lain')){
$table->addCell(5300)->addText($borang_ik->jika_guna_kenderaan, ['bold' => true], ['spaceAfter' => 0]);
}
else{
$table->addCell(5300)->addText($borang_ik->jenis_kenderaan_lain, ['bold' => true], ['spaceAfter' => 0]);
}
if(!is_null($borang_ik->jika_guna_kenderaan)){
$table->addRow();
$table->addCell(4500)->addText(' No. Pendaftaran Kenderaan ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText($borang_ik->no_plate_kenderaan, ['bold' => true], ['spaceAfter' => 0]);
}
$table->addRow();
$table->addCell(4500)->addText('g) Tarikh mula berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText($borang_ik->dt_mula_niaga, ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4500)->addText(' Masa berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('Dari jam : '.$borang_ik->masa_berniaga_mula, ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4500)->addText('h) Kebersihan semasa berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('Kebersihan diri : '.$borang_ik->kebersihan_diri, ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4700, ['gridSpan' => 2])->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('Kebersihan makanan : '.$borang_ik->kebersihan_makanan, ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4700, ['gridSpan' => 2])->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('Kebersihan kawasan : '.$borang_ik->kebersihan_kawasan, ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4700, ['gridSpan' => 2])->addText('', [], ['spaceAfter' => 0]);
$table->addCell(5300)->addText('(jika tidak: Keluarkan notis) ', ['bold' => true], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(4500)->addText('i) Laporan kebersihan kawasan/tapak selepas berniaga ', [], ['spaceAfter' => 0]);
$table->addCell(200)->addText(':', [], ['spaceAfter' => 0]);
if(!is_null($borang_ik->laporan_kebersihan_selepas_niaga)){
$table->addCell(5300)->addText('', ['bold' => true], ['spaceAfter' => 0]);
$text = htmlspecialchars($borang_ik->tiada_halangan_syarat, ENT_QUOTES | ENT_XML1, 'UTF-8');
$table->addRow();
$table->addCell(10000, ['gridSpan' => 3])->addText($text, ['bold' => true], ['spaceAfter' => 0]);
}
else{
$table->addCell(5300)->addText('', ['bold' => true], ['spaceAfter' => 0]);
}
$table = $section->addTable();
$table->addRow();
$cell1 = $table->addCell(3300);
$cell2 = $table->addCell(3300);
$cell3 = $table->addCell(3300);
$baseDir = "dokumens/penjaja/{$borang_ik->lesen_penjaja_id}/ik/";
$addImg = function ($cell, $filename) use ($baseDir) {
$filename = trim((string) $filename);
if ($filename === '') return; // skip kalau kosong
$rel = $baseDir . $filename;
// penting: exists sahaja tak cukup sebab folder pun exists
if (!Storage::exists($rel)) return;
$full = Storage::path($rel);
if (!is_file($full)) return; // elak folder/invalid
$cell->addImage($full, [
'width' => 200,
'height' => 140,
]);
};
$addImg($cell1, $borang_ik->gambar1);
$addImg($cell2, $borang_ik->gambar2);
$addImg($cell3, $borang_ik->gambar3);
$section->addLine(['weight' => 1, 'width' => 500, 'height' => 0, 'color' => '000000']);
$section->addText('3) CADANGAN' );
$tableStyle = new Table();
$tableStyle->setWidth(new TblWidth(10000));
$tableStyle->setBorderSize(0);
$tableStyle->setBorderColor('FFFFFF');
$tableStyle->setCellMargin(80);
$tableStyle->setAlignment(JcTable::START);
// cara betul set indent
$tableStyle->setIndent(new TblWidth(720)); // 720 twip = 0.5 inch
// Create table with 3 columns
$table = $section->addTable($tableStyle);
if($borang_ik->cadangan == 'tiada halangan'){
$table->addRow();
$table->addCell(1000)->addText('[ / ] ', [], ['spaceAfter' => 0]);
$table->addCell(9000, ['gridSpan' => 2])->addText('Tiada halangan dengan syarat :', [], ['spaceAfter' => 0]);
$text = htmlspecialchars($borang_ik->tiada_halangan_syarat, ENT_QUOTES | ENT_XML1, 'UTF-8');
$table->addRow();
$table->addCell(10000, ['gridSpan' => 2])->addText($text, [], ['spaceAfter' => 0]);
if($borang_ik->tiada_halangan_notis_dipatuhi == '1'){
$table->addRow();
$table->addCell(1000)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(9000, ['gridSpan' => 2])->addText('[ / ] Notis yang telah dikeluarkan perlu dipatuhi', [], ['spaceAfter' => 0]);
}
}
elseif($borang_ik->cadangan == 'tidak menyokong'){
$table->addRow();
$table->addCell(1000)->addText('[ / ] ', [], ['spaceAfter' => 0]);
$table->addCell(9000, ['gridSpan' => 2])->addText('Tidak menyokong atas sebab :', [], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(10000, ['gridSpan' => 2])->addText($borang_ik->tidak_menyokong_atas_sebab, [], ['spaceAfter' => 0]);
if($borang_ik->dirujuk_unit_penguatkuasa == '1'){
$table->addRow();
$table->addCell(1000)->addText('', [], ['spaceAfter' => 0]);
$table->addCell(9000, ['gridSpan' => 2])->addText('[ / ] Dirujuk Unit Penguatkuasa untuk tindakan : ', [], ['spaceAfter' => 0]);
$table->addRow();
$table->addCell(2000, ['gridSpan' => 2])->addText('', [], ['spaceAfter' => 0]);
$table->addCell(8000)->addText($borang_ik->dirujuk_unit_penguatkuasa_txt, [], ['spaceAfter' => 0]);
}
}
elseif($borang_ik->cadangan == 'permohonan / lesen dibatalkan kerana tamat perniagaan'){
$table->addRow();
$table->addCell(1000)->addText('[ / ] ', [], ['spaceAfter' => 0]);
$table->addCell(9000, ['gridSpan' => 2])->addText('Permohonan / Lesen dibatalkan kerana tamat perniagaan', [], ['spaceAfter' => 0]);
}
$section->addText('');
$section->addText('Dirujuk ulasan dan cadangan untuk tindakan tuan selanjutnya.' );
$section->addText('Sekian, dimaklumkan. Terima kasih.' );
$section->addText('');
$section->addText('');
$section->addText("(".$borang_ik->pegawai->name.")");
$section->addText("Penolong Pegawai Kesihatan Persekitaran U5");
$section->addText("Jabatan Pelesenan");
$section->addText("Majlis Bandaraya Iskandar Puteri");
$filename = 'laporan_tapak-' . $borang_ik->id . '.docx';
$path = storage_path('app/public/' . $filename);
$writer = IOFactory::createWriter($phpWord, 'Word2007');
$writer->save($path);
return response()->download($path)->deleteFileAfterSend(true);
}
public function cetak_cadangan_pegawai(Request $request, $id, $borang_ik_id)
{
$headText = ['name' => 'Arial', 'size' => 10];
$borang_ik = BorangUlasanIk::findOrFail($request->borang_ik_id);
$phpWord = new PhpWord();
$phpWord->setDefaultFontName('Arial'); // Jenis font
$phpWord->setDefaultFontSize(8); // Saiz font kecil
$phpWord->addTitleStyle(
1, // heading level (1 = Heading1)
NULL,
['alignment' => 'center']
);
$section = $phpWord->addSection([
'orientation' => 'portrait',
'marginLeft' => 1000,
'marginRight' => 1000,
'marginTop' => 500,
]);
$footer = $section->addFooter();
$footer->addText(
'Rujukan Fail : MBIP(L)(PS) '.$borang_ik->lesen_penjaja->no_fail_lesen,
['size' => 8, 'italic' => true],
['alignment' => \PhpOffice\PhpWord\SimpleType\Jc::START]
);
$table = $section->addTable();
$table->addRow();
$cell1 = $table->addCell(2000);
$cell1->addImage(public_path('img/mbip-crown-png45x45.png'), ['width' => 45, 'height' => 45]);
$cell2 = $table->addCell(6000);
$cell2->addText('JABATAN PELESENAN', ['bold' => true, 'size' => 12], ['spaceAfter' => 0]);
$cell2->addText('MAJLIS BANDARAYA ISKANDAR PUTERI', ['bold' => true, 'size' => 12]);
$cell3 = $table->addCell(2000);
$cell3->addText(" L02-07 \n(PIN-7)", ['size' => 8, 'bgColor'=>'CCCCCC'], ['alignment' => 'right', 'spaceAfter' => 0]);
$tableStyle = new Table();
$tableStyle->setWidth(new TblWidth(10000));
$tableStyle->setBorderSize(0);
$tableStyle->setBorderColor('FFFFFF');
$tableStyle->setCellMargin(80);
$tableStyle->setAlignment(JcTable::START);
// Create table with 3 columns
$table = $section->addTable($tableStyle);
$row = $table->addRow();
$cell = $table->addCell(7000);
$textRun = $cell->addTextRun();
$textRun->addText(
'Ruj. Fail : ',
['name' => 'Arial', 'size' => 8]
);
$textRun->addText(
'MBIP(L)(PS) '.$borang_ik->lesen_penjaja->no_fail_lesen,
['name' => 'Arial', 'size' => 10, 'bold' => true]
);
$cell = $table->addCell(3000);
$textRun = $cell->addTextRun();
$textRun->addText('Tarikh : ', [], ['alignment' => 'right', 'spaceAfter' => 0]);
$textRun->addText($borang_ik->ulasanPegawai->dt_pegawai_ulas, ['bold' => true], ['alignment' => 'right', 'spaceAfter' => 0]);
$section->addText('Pengarah Pelesenan', ['name' => 'Arial', 'size' => 7], ['spaceAfter'=> 0]);
$section->addText('Jabatan Pelesenan', ['name' => 'Arial', 'size' => 7], ['spaceAfter'=> 1]);
$section->addText(' ' );
$section->addText('SEMAKAN LAPORAN DAN CADANGAN KE ATAS PERMOHONAN LESEN PENJAJA /GERAI / ARKED /PASAR', ['size' => 9, 'bold' => true], ['alignment' => 'left', 'spaceAfter' => 1]);
if($borang_ik->ulasanPegawai->pegawai_cadangan == 'tiada halangan'){
$textRun = $section->addTextRun();
$textRun->addText('[ / ] ');
$textRun->addText(ucwords($borang_ik->ulasanPegawai->pegawai_cadangan), ['bold' => true]);
$textRun->addText(' dengan syarat : ');
$textRun->addText($borang_ik->ulasanPegawai->pegawai_syarat);
if($borang_ik->ulasanPegawai->pegawai_notis_perlu_dipatuhi){
$section->addText('[ / ] Notis yang telah dikeluarkan perlu dipatuhi');
}
}
elseif($borang_ik->ulasanPegawai->pegawai_cadangan == 'tidak menyokong'){
$textRun = $section->addTextRun();
$textRun->addText('[ / ] ');
$textRun->addText(ucwords($borang_ik->ulasanPegawai->pegawai_cadangan), ['bold' => true]);
$textRun->addText(' atas sebab : ');
$textRun->addText($borang_ik->ulasanPegawai->pegawai_tidak_menyokong_sebab);
if($borang_ik->ulasanPegawai->pegawai_dirujuk_unit_penguatkuasa){
$textRun = $section->addTextRun();
$textRun->addText('[ / ] Dirujuk untuk ');
$textRun->addText(' tindakan Unit Penguatkuasaan', ['bold' => true]);
}
}
elseif($borang_ik->ulasanPegawai->pegawai_cadangan == 'ditangguhkan untuk tindakan/siasatan semula'){
$textRun = $section->addTextRun();
$textRun->addText('[ / ] Permohonan ini ');
$textRun->addText(ucwords($borang_ik->ulasanPegawai->pegawai_cadangan), ['bold' => true]);
}
if($borang_ik->ulasanPegawai->pegawai_catatan != ''){
$section->addText('');
$section->addText('Catitan: ');
$section->addText($borang_ik->ulasanPegawai->pegawai_catatan);
}
$section->addText('Sekian dimaklumkan, terima kasih.');
$section->addText(' ');
$section->addText(' ');
$section->addText("(".strtoupper($borang_ik->ulasanPegawai->pegawai->name).")", ['bold'=>true]);
$section->addText('Penolong Pengarah Pelesenan');
$section->addText('Majlis Bandaraya Iskandar Puteri');
$section->addLine(['weight' => 1, 'width' => 500, 'height' => 0, 'color' => '000000']);
$section->addText('Tarikh : '.$borang_ik->ulasanPegawai->dt_pengarah_ulas, [], ['alignment' => 'right']);
$section->addText('Tuan Setiausaha', ['name' => 'Arial', 'size' => 7], ['spaceAfter'=> 0]);
$section->addText('Majlis Bandaraya Iskandar Puteri', ['name' => 'Arial', 'size' => 7], ['spaceAfter'=> 0]);
$section->addText('');
$section->addText('ULASAN KE ATAS CADANGAN PERMOHONAN LESEN PENJAJA / GERAI / ARKED / PASAR', ['size' => 9, 'bold' => true], ['alignment' => 'left']);
$section->addText('Hasil dari semakan dan cadangan ke atas laporan Pegawai Pemeriksa, saya mencadangkan bahawa permohonan ini : ');
$section->addText('[ / ] Dibawa ke Mesyuarat Jawatankuasa Kesihatan dan Lesen untuk : ');
$tableStyle = new Table();
$tableStyle->setWidth(new TblWidth(10000));
$tableStyle->setBorderSize(0);
$tableStyle->setBorderColor('FFFFFF');
$tableStyle->setCellMargin(80);
$tableStyle->setAlignment(JcTable::START);
// cara betul set indent
$tableStyle->setIndent(new TblWidth(720)); // 720 twip = 0.5 inch
// Create table with 3 columns
$table = $section->addTable($tableStyle);
if($borang_ik->ulasanPegawai->pengarah_ulasan == 'dipertimbangkan'){
$row = $table->addRow();
$table->addCell(2500)->addText('[ / ] Dipertimbangkan ', ['bold' => true], ['spaceAfter' => 0]);
$table->addCell(7500)->addText(' / diperakukan kelulusan lesen dengan bersyarat.', [], ['spaceAfter' => 0]);
}
elseif($borang_ik->ulasanPegawai->pengarah_ulasan == 'ditolak'){
$row = $table->addRow();
$table->addCell(2500)->addText('[ / ] Ditolak ', ['bold' => true], ['spaceAfter' => 0]);
$table->addCell(7500)->addText(' kerana ', [], ['spaceAfter' => 0]);
if($borang_ik->ulasanPegawai->pengarah_ditolak_sebab == 'pemohon gagal mematuhi syarat'){
$row = $table->addRow();
$table->addCell(2500)->addText('', ['bold' => true], ['spaceAfter' => 0]);
$table->addCell(7500)->addText(' [ / ] pemohon gagal mematuhi syarat.', [], ['spaceAfter' => 0]);
}
elseif($borang_ik->ulasanPegawai->pengarah_ditolak_sebab == 'perniagaan dijalankan bukan seperti dipohon'){
$row = $table->addRow();
$table->addCell(2500)->addText('', ['bold' => true], ['spaceAfter' => 0]);
$table->addCell(7500)->addText(' [ / ] perniagaan dijalankan bukan seperti dipohon.', [], ['spaceAfter' => 0]);
}
}
elseif($borang_ik->ulasanPegawai->pengarah_ulasan == 'ditangguhkan'){
$row = $table->addRow();
$table->addCell(2500)->addText('[ / ] Ditangguhkan ', ['bold' => true], ['spaceAfter' => 0]);
$table->addCell(7500)->addText(' sehingga pihak pemohon mematuhi syarat.', [], ['spaceAfter' => 0]);
}
if($borang_ik->ulasanPegawai->pengarah_catatan != ''){
$section->addText('');
$section->addText('Catitan: ');
$section->addText($borang_ik->ulasanPegawai->pengarah_catatan);
}
$section->addText('');
$section->addText('Sekian, dimaklumkan. Terima kasih.' );
$section->addText('');
$section->addText('');
$section->addText("(".$borang_ik->ulasanPegawai->pengarah->name.")", ['bold' => true]);
$section->addText("Pengarah Pelesenan");
$section->addText("Majlis Bandaraya Iskandar Puteri");
$filename = 'ulasan_pegawai-' . $borang_ik->id . '.docx';
$path = storage_path('app/public/' . $filename);
$writer = IOFactory::createWriter($phpWord, 'Word2007');
$writer->save($path);
return response()->download($path)->deleteFileAfterSend(true);
}
}

View File

@@ -0,0 +1,161 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use App\Models\GrabResitLesen;
use Auth;
class DashboardController extends Controller
{
//
public function utama(Request $request, $ctahun=''){
if($ctahun == ''){
$ctahun = date('Y');
}
$permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();
$countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
->count();
//dapatkan status bayaran untuk update mana yg tgu wang proses
$semakresits = LesenPenjaja::where('status_progress', 'LIKE', 'menunggu bayaran proses')->get();
foreach($semakresits as $semakresit){
$bil_p = BilPelbagai::where('jenis_bil', 'wang proses')->where('lesen_penjaja_id', $semakresit->id)->first();
// dd($semakresit,$bil_p);
if(!is_null(optional($bil_p)->no_akaun_bilpelbagai)){
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($bil_p){
$query->where('noakaun', $bil_p->no_akaun_bilpelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
$semakresit->status_progress = 'semakan bayaran proses';
$semakresit->save();
}
}
}
//end update status wang proses
$txt_bayar = '';
//senarai permohonan baru
$baru = LesenPenjaja::where('status_progress', 'baru')->count();
//senarai belum bayar wang proses
$belum_bayar_proses = LesenPenjaja::where('status_progress', 'menunggu bayaran proses')->count();
//senarai dah bayar wang proses
$bayar_proses = LesenPenjaja::where('status_progress', 'semakan bayaran proses')->count();
//dapatkan yang perlu lawatan tapak
$periksa_tapak = LesenPenjaja::where('status_progress', 'LIKE', 'lawatan tapak')->count();
//senarai tiada lesen
$tiada_lesen = LesenPenjaja::whereIn('status_progress', ['ulasan pegawai', 'ulasan pengarah', 'sokong dibawa ke mesyuarat'])->whereNull('no_akaun_lesen')->count();
//dapatkan yang perlu lawatan tapak
$pegawai_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pegawai')->count();
//dapatkan yang perlu lawatan tapak
$pengarah_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pengarah')->count();
//dapatkan yang perlu lawatan tapak
$bawa_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'sokong dibawa ke mesyuarat')->count();
//dapatkan yang perlu lawatan tapak
$keputusan_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'menunggu keputusan mesyuarat')->count();
//dapatkan yang belum bayar lesen
$hutang_lesen = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->count();
//dapatkan yang perlu lawatan tapak
$selesai = LesenPenjaja::where('status_progress', 'LIKE', 'keputusan diperolehi')->whereNotNull('status_mesyuarat')->count();
return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI', 'baru', 'belum_bayar_proses', 'bayar_proses', 'periksa_tapak', 'pegawai_belum_ulas', 'pengarah_belum_ulas', 'bawa_mesyuarat', 'keputusan_mesyuarat', 'hutang_lesen', 'selesai', 'tiada_lesen'));
}
public function carianutama(Request $request){
if($request->input('ctahun') == ''){
$ctahun = date('Y');
}
else{
$ctahun = $request->input('ctahun');
}
$permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();
$countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
->count();
return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI'));
}
public function senaraiLesenBelumBayar(Request $request){
$senarais = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->get();
return view('admin.penjaja.senarailesenbelumbayar', compact('senarais'));
}
public function semakBayaranLesen(Request $request){
try {
DB::connection('second_mysql')->getPdo();
$grab = GrabResitLesen::create([
'tarikh_grab' => now(),
'jumlah_data' => 0,
'admin_id' => Auth::id(),
]);
$jumlah = 0;
$permohonans = LesenPenjaja::whereNotNull('no_akaun_lesen')->where('no_akaun_lesen', '<>', '')->whereNull('lesen_no_resit')->get();
foreach($permohonans as $semakresit){
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($semakresit){
$query->where('noakaun', $semakresit->no_akaun_lesen);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$semakresit->lesen_dt_bayar = $bp_bayar->tarikh;
$semakresit->lesen_no_resit = $bp_bayar->noresit;
$semakresit->lesen_amaun = $bp_bayar->amaun;
$semakresit->lesen_grab = now();
$semakresit->save();
$jumlah++;
}
}
$grab->jumlah_data = $jumlah;
$grab->save();
} catch (\Exception $e) {
//return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
return redirect()->route('pt.lesenhutang')->with('success', 'Sebanyak '.$jumlah.' lesen telah menerima bayaran.');;
}
}

View File

@@ -0,0 +1,61 @@
<?php
// 3. Controller: GambarCarouselController.php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\GambarCarousel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Auth;
class GambarCarouselController extends Controller
{
public function index()
{
$carousels = GambarCarousel::latest()->get();
return view('admin.carousel.index', compact('carousels'));
}
public function create()
{
return view('admin.carousel.create');
}
public function store(Request $request)
{
$request->validate([
'tajuk' => 'required|string|max:255',
'keterangan' => 'nullable|string|max:180',
'fail' => 'required|image|mimes:jpg,jpeg,png,webp|max:2048',
'tarikh_mula' => 'required|date',
'tarikh_tamat' => 'required|date|after_or_equal:tarikh_mula',
]);
$fail = $request->file('fail');
$namaFail = Str::slug(pathinfo($fail->getClientOriginalName(), PATHINFO_FILENAME)) . '-' . time() . '.' . $fail->getClientOriginalExtension();
$path = $fail->storeAs('caro', $namaFail, 'public');
GambarCarousel::create([
'tajuk' => $request->tajuk,
'keterangan' => $request->keterangan,
'fail_nama' => $namaFail,
'fail_path' => $path,
'tarikh_upload' => now(),
'tarikh_mula' => $request->tarikh_mula,
'tarikh_tamat' => $request->tarikh_tamat,
'admin_id' => Auth::id(),
]);
return redirect()->route('carousel.index')->with('success', 'Imej carousel berjaya dimuat naik.');
}
public function destroy($id)
{
$carousel = GambarCarousel::findOrFail($id);
Storage::disk('public')->delete($carousel->fail_path);
$carousel->delete();
return back()->with('success', 'Imej dipadam.');
}
}

View File

@@ -0,0 +1,184 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\View\View;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Storage;
use App\Models\User;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BorangUlasanIk;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
class IkPenjajaController extends Controller
{
//
public function senarai_ik(Request $request){
//dapatkan status bayaran
$senarais = LesenPenjaja::where('status_progress', 'LIKE', 'lawatan tapak')->get();
return view('admin.penjaja.senaraipemeriksaan', compact('senarais'));
}
public function papar_pemeriksaan(Request $request, $id){
$show = 'ulasan ik';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$status_progress = $permohonan->status_progress;
$borangulas = $permohonan->pemeriksaanTerkini;
$iks = null;
if(auth()->user()->role == 'super'){
$iks = User::where('role', 'pp kesihatan')->get();
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'mohon_id', 'status_progress', 'borangulas', 'iks'));
}
public function papar_pemeriksaan_lepas(Request $request, $id, $borang_ik_id){
$show = 'ulasan ik';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$status_progress = $permohonan->status_progress;
$borangulas = BorangUlasanIk::find($borang_ik_id);
$iks = null;
if(auth()->user()->role == 'super'){
$iks = User::where('role', 'pp kesihatan')->get();
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'mohon_id', 'status_progress','borangulas', 'iks'));
}
public function simpanLokasi(Request $request){
$permohonan = LesenPenjaja::find($request->permohonan_id);
$permohonan->longitude = $request->input('longitude');
$permohonan->latitude = $request->input('latitude');
$permohonan->save();
return redirect(route('ik.papar-pemeriksaan-map', ['id'=>$request->permohonan_id]));
}
public function simpanUlasan(Request $request){
if(isset($request->borang_ik_id)){
$permohonan = BorangUlasanIk::firstOrCreate([
'id' => $request->borang_ik_id,
'lesen_penjaja_id' => $request->permohonan_id,
]);
}
else{
$permohonan = new BorangUlasanIk;
$permohonan->lesen_penjaja_id = $request->permohonan_id;
}
$permohonan->dt_periksa = $request->input('dt_periksa');
$permohonan->kesesuaian_lokasi = $request->input('kesesuaian_lokasi');
$permohonan->kesesuaian_lokasi_sebab = $request->input('kesesuaian_lokasi_sebab');
$permohonan->dijalankan_oleh = $request->input('dijalankan_oleh');
$permohonan->pematuhan_syarat = $request->input('pematuhan_syarat');
$permohonan->perkara_perlu_dipatuhi = $request->input('perkara_perlu_dipatuhi');
$permohonan->pemprosesan_makanan = $request->input('pemprosesan_makanan');
if($permohonan->pemprosesan_makanan == 'ada'){
$permohonan->pemprosesan_makanan_memasak = $request->has('pemprosesan_makanan_memasak') ? $request->input('pemprosesan_makanan_memasak') : null;
$permohonan->pemprosesan_makanan_merebus = $request->has('pemprosesan_makanan_merebus') ? $request->input('pemprosesan_makanan_merebus') : null;
$permohonan->pemprosesan_makanan_menggoreng = $request->has('pemprosesan_makanan_menggoreng') ? $request->input('pemprosesan_makanan_menggoreng') : null;
$permohonan->pemprosesan_makanan_lain = $request->has('pemprosesan_makanan_lain') ? $request->input('pemprosesan_makanan_lain') : null;
if($permohonan->pemprosesan_makanan_lain == '1'){
$permohonan->pemprosesan_makanan_lain_txt = $request->input('pemprosesan_makanan_lain_txt');
}
else{
$permohonan->pemprosesan_makanan_lain_txt = '';
}
}
$permohonan->mendirikan_bangunan = $request->input('mendirikan_bangunan');
$permohonan->jika_guna_kenderaan = $request->input('jika_guna_kenderaan');
$permohonan->jenis_kenderaan_lain = $request->input('jenis_kenderaan_lain');
$permohonan->no_plate_kenderaan = $request->input('no_plate_kenderaan');
$permohonan->dt_mula_niaga = $request->input('dt_mula_niaga');
$permohonan->masa_berniaga_mula = $request->input('masa_berniaga_mula');
$permohonan->kebersihan_diri = $request->input('kebersihan_diri');
$permohonan->kebersihan_makanan = $request->input('kebersihan_makanan');
$permohonan->kebersihan_kawasan = $request->input('kebersihan_kawasan');
$permohonan->laporan_kebersihan_selepas_niaga = $request->input('laporan_kebersihan_selepas_niaga');
$permohonan->cadangan = $request->input('cadangan');
$permohonan->tiada_halangan_syarat = $request->input('tiada_halangan_syarat');
$permohonan->tiada_halangan_notis_dipatuhi = $request->has('tiada_halangan_notis_dipatuhi') ? $request->input('tiada_halangan_notis_dipatuhi') : null;
$permohonan->tidak_menyokong_atas_sebab = $request->input('tidak_menyokong_atas_sebab');
$permohonan->dirujuk_unit_penguatkuasa = $request->has('dirujuk_unit_penguatkuasa') ? $request->input('dirujuk_unit_penguatkuasa') : null;
$permohonan->dirujuk_unit_penguatkuasa_txt = $request->input('dirujuk_unit_penguatkuasa_txt');
if(auth()->user()->role == 'super'){
$ik = User::find($request->ik_id);
}
else{
$ik = $request->user();
}
$permohonan->pegawai_id = $ik->id;
$permohonan->save();
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'ulasan pegawai';
$mohon->save();
$folder = 'dokumens/penjaja/'.$mohon->id.'/ik/';
for($i = 1; $i <= 3; $i++){
if ($request->hasFile('gambar'.$i)) { //ada upload?
$nama_field = 'gambar'.$i;
$nama_field_ext = 'gambar'.$i."_ext";
$validated = $request->validate([
$nama_field => 'file|mimes:jpg,png',
]);
// Store the file
$path = $request->file($nama_field);
$extension = $path->extension(); // Determine the file's extension based on the file's MIME type...
$name = 'lokasi'.$i.".".$extension;
$path->storeAs($folder, $name);
$permohonan->$nama_field = $name;
$permohonan->$nama_field_ext = $extension;
$permohonan->save();
}
}
return redirect(route('admin.papar-pemeriksaan', ['id'=>$request->permohonan_id]))->with('success', 'Borang pemeriksaan tapak telah disimpan.');
}
public function stream($id, $filename)
{
$permohonan = LesenPenjaja::find($id);
Gate::authorize('keje-staff', $permohonan);
$path = 'dokumens/penjaja/'.$id.'/ik/'.$filename;
if (!Storage::exists($path)) return null;
return response()->file(storage_path('app/' . $path));
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class LaporanPrestasiController extends Controller
{
//
public function utama(Request $request, $ctahun='', $cbulan=''){
//dapatkan status bayaran
$sementara = LesenPenjaja::whereIn('jenis', ['bukan kawasan berpusat','buah bermusim','food truck','foodtruck','car boot sale','berkenderaan','sementara'])
->where()
->get();
return view('admin.penjaja.senaraicadangan', compact('senarais'));
}
}

View File

@@ -0,0 +1,157 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use Illuminate\View\View;
use App\Models\User;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BorangUlasanIk;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use App\Models\UlasanPegawai;
class PegawaiPenjajaController extends Controller
{
//
public function senarai_cadangan(Request $request){
//dapatkan status bayaran
$senarais = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pegawai')->get();
return view('admin.penjaja.senaraicadangan', compact('senarais'));
}
public function senarai_ulasan_cadangan(Request $request){
//dapatkan status bayaran
$senarais = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pengarah')->get();
return view('admin.penjaja.senaraiulasan', compact('senarais'));
}
public function papar_cadangan_pegawai(Request $request, $id, $borang_ik_id){
$show = 'cadangan pegawai';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$status_progress = $permohonan->status_progress;
$borangulas = BorangUlasanIk::find($borang_ik_id);
$pegs = null;
if(auth()->user()->role == 'super'){
$pegs = User::where('role', 'pegawai tadbir')->get();
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'status_progress', 'mohon_id', 'borangulas', 'pegs'));
}
public function papar_ulasan_cadangan_pengarah(Request $request, $id, $borang_ik_id){
$show = 'cadangan pengarah';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$status_progress = $permohonan->status_progress;
$borangulas = BorangUlasanIk::find($borang_ik_id);
$pengs = null;
if(auth()->user()->role == 'super'){
$pengs = User::where('role', 'pengarah')->get();
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'status_progress', 'mohon_id', 'borangulas', 'pengs'));
}
public function simpan_cadangan(Request $request){
$permohonan = UlasanPegawai::firstOrCreate([
'borang_ulasan_ik_id' => $request->borang_ik_id,
'lesen_penjaja_id' => $request->permohonan_id,
]);
if(auth()->user()->role == 'super'){
$permohonan->dt_pegawai_ulas = $request->input('dt_cadangan');
$permohonan->pegawai_id = $request->input('peg_id');
$user = User::find($request->input('peg_id'));
$permohonan->pegawai_jawatan = $user->role;
}
else{
$permohonan->dt_pegawai_ulas = now();
$user = $request->user();
$permohonan->pegawai_id = $user->id;
$permohonan->pegawai_jawatan = $user->role;
}
$permohonan->pegawai_cadangan = $request->input('cadangan');
$permohonan->pegawai_syarat = $request->input('tiada_halangan_syarat');
$permohonan->pegawai_notis_perlu_dipatuhi = $request->has('tiada_halangan_notis_dipatuhi') ? $request->input('tiada_halangan_notis_dipatuhi') : null;
$permohonan->pegawai_tidak_menyokong_sebab = $request->input('tidak_menyokong_atas_sebab');
$permohonan->pegawai_dirujuk_unit_penguatkuasa = $request->has('dirujuk_unit_penguatkuasa') ? $request->input('dirujuk_unit_penguatkuasa') : null;
$permohonan->pegawai_catatan = $request->input('catatan');
$permohonan->save();
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'ulasan pengarah';
$mohon->save();
return redirect(route('admin.papar-cadangan-pegawai', ['id'=>$request->permohonan_id, 'borang_ik_id' => $request->borang_ik_id]))->with('success', 'Cadangan telah disimpan.');
}
public function simpan_ulasan_cadangan(Request $request){
$permohonan = UlasanPegawai::firstOrCreate([
'borang_ulasan_ik_id' => $request->borang_ik_id,
'lesen_penjaja_id' => $request->permohonan_id,
]);
$permohonan->pengarah_ulasan = $request->input('cadangan');
$permohonan->pengarah_bawa_mesyuarat = $request->has('dibawa_ke_mesyuarat') ? $request->input('dibawa_ke_mesyuarat') : '0';
$permohonan->pengarah_ditolak_sebab = $request->input('ditolak_sebab');
$permohonan->pengarah_catatan = $request->input('catatan');
if(auth()->user()->role == 'super'){
$permohonan->dt_pengarah_ulas = $request->input('dt_cadangan');
$permohonan->pengarah_id = $request->input('peg_id');
$user = User::find($request->input('peg_id'));
$permohonan->pengarah_jawatan = $user->role;
}
else{
$permohonan->dt_pengarah_ulas = now();
$user = $request->user();
$permohonan->pengarah_id = $user->id;
$permohonan->pengarah_jawatan = $user->role;
}
$permohonan->save();
if($permohonan->pengarah_ulasan == 'ditangguhkan'){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'lawatan tapak';
$mohon->save();
$borang = new BorangUlasanIK;
$borang->lesen_penjaja_id = $request->permohonan_id;
$borang->save();
}
else{
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'sokong dibawa ke mesyuarat';
$mohon->save();
}
return redirect(route('admin.papar-ulasan-cadangan-pengarah', ['id'=>$request->permohonan_id, 'borang_ik_id' => $request->borang_ik_id]))->with('success', 'Cadangan telah disimpan.');
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Pengumuman;
class PengumumanController extends Controller
{
public function index()
{
$pengumumen = Pengumuman::latest()->get();
return view('admin.pengumuman.index', compact('pengumumen'));
}
public function create()
{
return view('admin.pengumuman.create');
}
public function store(Request $request)
{
$request->validate([
'keterangan' => 'required|string|max:255',
'tarikh_mula_papar' => 'required|date',
'tarikh_tamat_papar' => 'required|date|after_or_equal:tarikh_mula_papar',
]);
Pengumuman::create([
'keterangan' => $request->keterangan,
'tarikh_mula_papar' => $request->tarikh_mula_papar,
'tarikh_tamat_papar' => $request->tarikh_tamat_papar,
'admin_id' => Auth::id(),
]);
return redirect()->route('pengumuman.index')->with('success', 'Pengumuman berjaya ditambah.');
}
public function edit(Pengumuman $pengumuman)
{
return view('admin.pengumuman.edit', compact('pengumuman'));
}
public function update(Request $request, Pengumuman $pengumuman)
{
$request->validate([
'keterangan' => 'required|string|max:255',
'tarikh_mula_papar' => 'required|date',
'tarikh_tamat_papar' => 'required|date|after_or_equal:tarikh_mula_papar',
]);
$pengumuman->update([
'keterangan' => $request->keterangan,
'tarikh_mula_papar' => $request->tarikh_mula_papar,
'tarikh_tamat_papar' => $request->tarikh_tamat_papar,
]);
return redirect()->route('pengumuman.index')->with('success', 'Pengumuman berjaya dikemaskini.');
}
public function destroy(Pengumuman $pengumuman)
{
$pengumuman->delete();
return redirect()->route('pengumuman.index')->with('success', 'Pengumuman dipadam.');
}
}

View File

@@ -0,0 +1,81 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;
use App\Models\User;
class PengurusanAdminController extends Controller
{
//
//
public function showList(Request $request){
$admins = User::whereNotIn('role', ['awam'])->get();
/* $awams = User::where('role', 'awam')->where(function ($query) use ($request) {
$query->where('nokp', 'like', '%'.$request->keyword.'%')
->orWhere('name', 'like', '%'.$request->keyword.'%');
})->get();*/
$keyword = '';
$awams = null;
return view('admin.lantikan_admin', compact('awams', 'admins', 'keyword'));
}
public function showListCarian(Request $request){
$admins = User::whereNotIn('role', ['awam'])->get();
$awams = User::where('role', 'awam')->where(function ($query) use ($request) {
$query->where('nokp', 'like', '%'.$request->keyword.'%')
->orWhere('name', 'like', '%'.$request->keyword.'%');
})->get();
$keyword = $request->keyword;
return view('admin.lantikan_admin', compact('awams', 'admins', 'keyword'));
}
public function updateRole(Request $request, $id){
if (! Gate::allows('keje-admin')) {
abort(403);
}
$new_admin = User::findOrFail($id);
if(!is_null($new_admin)){
$new_admin->role = $request->role;
$new_admin->save();
$msg = "Berjaya dikemaskini sebagai Admin.";
}
else{
$msg = "Terdapat masalah dengan No KP";
}
return redirect(route('admin.lantikan-admin'))->with('success', $msg);
}
public function removeAdmin(Request $request, $nokp, $keyword=''){
if (! Gate::allows('keje-admin')) {
abort(403);
}
$new_admin = User::where('nokp', $nokp)->first();
if(!is_null($new_admin)){
$new_admin->role = 'awam';
$new_admin->save();
$msg = "Berjaya dikeluarkan dariapda Admin.";
}
else{
$msg = "Terdapat masalah dengan No KP";
}
return redirect(route('admin.lantikan-admin'))->with('success', $msg);
}
}

View File

@@ -0,0 +1,634 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Gate;
use App\Models\User;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use App\Models\BorangUlasanIk;
use App\Models\MesyuaratPelesenan;
use Illuminate\View\View;
use Illuminate\Support\Facades\DB;
use App\Models\USerSyarikat;
use App\Models\Dokumen;
use App\Models\LesenPenjajaDokumen;
use App\Models\Kawasan;
use App\Models\Taman;
use App\Models\Jalan;
use App\Models\JenisJualan;
use App\Models\EpbtBandar;
use App\Models\EpbtElsnAkaun;
class PenjajaController extends Controller
{
//
public function senarai_pt(Request $request){
$colors = [
"#1d7af3", // biru vibrant
"#f3545d", // merah lembayung terang
"#fdaf4b", // oren lembut
"#00c9a7", // turquoise
"#845ec2", // ungu pastel
"#ffc75f", // kuning lembut
"#ff6f91", // pink kemerahan
"#2c73d2", // biru gelap
"#0081cf", // biru cyan
];
$txt_bayar = '';
$senarais = LesenPenjaja::where('status_progress', 'baru')->get();
$kawasans = Kawasan::all();
$i = 0;
foreach($kawasans as $kaw){
$pie_nama[] = $kaw->nama;
$pie[] = LesenPenjaja::where('kawasan_id', $kaw->id)->where('status_progress', 'baru')->count();
$pie_kaler[] = $colors[$i];
$i++;
}
return view('admin.penjaja.senaraibaru', compact('senarais', 'txt_bayar', 'pie_nama', 'pie', 'pie_kaler'));
}
//
public function senarai_pt_proses(Request $request){
$txt_bayar = '';
$senarais = LesenPenjaja::where('status_progress', 'menunggu bayaran proses')->get();
foreach($senarais as $senarai){
foreach($senarai->bilpelbagais->where('jenis_bil', 'wang proses') as $bil_p){
try {
DB::connection('second_mysql')->getPdo();
if((is_null($bil_p->description))||($bil_p->description == '')){
$epbtbil = EpbtBpBil::where('noakaun', $bil_p->no_bil_pelbagai)->first();
if($epbtbil){
$bil_p->status_mylesen_error = '';
$bil_p->ref_no = $epbtbil->norujukan;
$bil_p->description = $epbtbil->keterangan;
$bil_p->pay_status = $epbtbil->statusbyr;
$bil_p->jabatan = $epbtbil->dept_code;
$bil_p->ent_opr = $epbtbil->ent_opr;
$bil_p->no_bilpelbagai = $epbtbil->nobil;
$bil_p->save();
foreach($epbtbil->bil_items as $epbtbil_item){
$bilitem = BilPelbagaiItem::create([
'bil_pelbagai_id' => $bil_p->id,
'itemno' => $epbtbil_item->noitem,
'itemdesc' => $epbtbil_item->keterangan,
'itemprice' => $epbtbil_item->amaun,
'gst_type' => $epbtbil_item->jenis_gst,
'gst_code' => $epbtbil_item->kod_gst,
'cr_code' => $epbtbil_item->kodcr,
'dr_code' => $epbtbil_item->koddr,
'cost_center' => $epbtbil_item->pusatkos,
'exp_date' => $epbtbil_item->tamat_tempoh
]);
}
}
}
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($bil_p){
$query->where('noakaun', $bil_p->no_bil_pelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
$senarai->status_progress = 'semakan bayaran proses';
$senarai->save();
}
} catch (\Exception $e) {
return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
}
}
return view('admin.penjaja.senaraiproses', compact('senarais', 'txt_bayar'));
}
//
public function senarai_pt_bukafail(Request $request){
$txt_bayar = '';
$senarais = LesenPenjaja::where('status_progress', 'semakan bayaran proses')->get();
return view('admin.penjaja.senaraibukafail', compact('senarais', 'txt_bayar'));
}
//
public function senarai_pt_daftarlesen(Request $request){
$txt_bayar = '';
$senarais = LesenPenjaja::whereIn('status_progress', ['ulasan pegawai', 'ulasan pengarah', 'sokong dibawa ke mesyuarat'])->whereNull('no_akaun_lesen')->get();
return view('admin.penjaja.senaraidaftarlesen', compact('senarais', 'txt_bayar'));
}
//
public function senarai_mesyuarat(Request $request){
$txt_bayar = '';
$mesyuarat = MesyuaratPelesenan::latest()->first();
$mesyuarats = MesyuaratPelesenan::withCount('lesen_penjajas')->get();
$senarais = LesenPenjaja::where('status_progress', 'sokong dibawa ke mesyuarat')->get();
return view('admin.penjaja.senaraimesyuarat', compact('senarais', 'mesyuarat', 'mesyuarats'));
}
//
public function senarai_bawa_mesyuarat(Request $request, $mesyuarat_id){
$txt_bayar = '';
$mesyuarat = MesyuaratPelesenan::find($mesyuarat_id);
$senarais = LesenPenjaja::where('status_progress', 'sokong dibawa ke mesyuarat')->whereDoesntHave('mesyuarats')->get();
return view('admin.penjaja.senaraibawamesyuaratbaru', compact('senarais', 'mesyuarat'));
}
//
public function senarai_keputusan_mesyuarat(Request $request){
$txt_bayar = '';
$mesyuarats = MesyuaratPelesenan::where('kunci_senarai', '1')->withCount('lesen_penjajas')->get();
return view('admin.penjaja.senaraikeputusanmesyuarat', compact('mesyuarats'));
}
//
public function senarai_keputusan_minit_mesyuarat(Request $request, $mesyuarat_id){
$txt_bayar = '';
$mesyuarat = MesyuaratPelesenan::find($mesyuarat_id);
return view('admin.penjaja.senaraikeputusanminitmesyuarat', compact('mesyuarat'));
}
//
public function senarai_all(Request $request){
$query = LesenPenjaja::with(['user', 'syarikat']);
// carian nama pemohon atau nama syarikat
if ($request->filled('katakunci')) {
$katakunci = $request->katakunci;
$query->whereHas('user', function($q) use ($katakunci) {
$q->where('name', 'like', "%$katakunci%");
})->orWhereHas('syarikat', function($q) use ($katakunci) {
$q->where('name', 'like', "%$katakunci%");
});
}
// carian tahun permohonan
if ($request->filled('tahun')) {
$query->whereYear('tarikh_mohon', $request->tahun);
}
// pagination
$senarais = $query->latest()->paginate(10);
return view('admin.penjaja.laporandashboard', compact('senarais'));
}
public function papar(Request $request, $id){
$show = 'utama';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show','permohonan', 'mohon_id'));
}
public function papar_map(Request $request, $id){
$show = 'lokasi';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'mohon_id'));
}
public function papar_dokumen(Request $request, $id){
$show = 'dokumen';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'doc_kad_pengenalan','doc_gambar',
'doc_lokasi','doc_kebenaran','doc_kenderaan','doc_kenderaan_geran',
'doc_suntikan_ty2', 'doc_kursus_makanan', 'mohon_id'));
}
public function papar_wangproses(Request $request, $id){
$show = 'wang proses';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
$jenis_jualans = JenisJualan::all();
$kawasans = Kawasan::all();
$tamans = [];
if($permohonan->kawasan_id){
$tamans = Taman::where('kawasan_id', $permohonan->kawasan_id)->get();
}
$jalans = [];
if($permohonan->taman_id){
$jalans = Jalan::where('taman_id', $permohonan->taman_id)->get();
}
return view('admin.penjaja.papar_permohonan', compact('show','permohonan', 'mohon_id', 'kawasans', 'tamans', 'jalans','jenis_jualans'));
}
public function papar_lesen(Request $request, $id){
$show = 'lesen';
$mohon_id = $id;
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show','permohonan', 'mohon_id'));
}
public function showDokumen($id, $filename)
{
$path = 'dokumens/penjaja/'.$id.'/'.$filename;
if (!Storage::exists($path)) {
abort(404);
}
return response()->file(storage_path('app/' . $path));
}
public function create(Request $request): View
{
$lesen_penjaja = new LesenPenjaja();
$penjaja = new User();
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
return view('admin.penjaja.mohon_baru', [
'user' => $penjaja,
'permohonan' => $lesen_penjaja,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
]);
}
/**
* Handle an incoming registration request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request)
{
$penjaja = User::create([
'name' => $request->name,
'email' => $request->email,
'nokp' => $request->nokp,
'notelefon' => $request->notelefon,
'alamat' => $request->alamat,
'jantina' => $request->jantina,
'bangsa' => $request->bangsa,
'password' => Hash::make($request->nokp),
]);
$syarikat = Syarikat::firstOrCreate(['nossm'=>$request->nossm],
[
'name' => ltrim(rtrim($request->nama_perniagaan)),
'jenis_perniagaan' => $request->jenis_perniagaan,
'nossm' => ltrim(rtrim($request->nossm)),
'alamat' => ltrim(rtrim($request->alamat_perniagaan)),
'notelefon' => ltrim(rtrim($request->notelefon_perniagaan)),
'bil_cawangan' => ltrim(rtrim($request->bil_cawangan)),
]);
$user_syarikat = UserSyarikat::create([
'user_id' => $penjaja->id,
'syarikat_id' => $syarikat->id,
'status' => 'aktif'
]);
$jenis_penjaja = JenisPenjaja::find($request->jenis_penjaja_id);
if($request->mohon_id != ''){
$lesen_penjaja = LesenPenjaja::find($request->mohon_id);
$lesen_penjaja->user_id = $penjaja->id;
$lesen_penjaja->syarikat_id = $syarikat->id;
$lesen_penjaja->jenis_penjaja_id = $request->jenis_penjaja;
$lesen_penjaja->jenis_lain = '';
$lesen_penjaja->status_tanah = $request->status_tanah;
$lesen_penjaja->status_lain = '';
$lesen_penjaja->no_petak = $request->petak_penjajaan;
$lesen_penjaja->kawasan_id = $request->kawasan;
$lesen_penjaja->taman_id = $request->taman;
$lesen_penjaja->jalan_id = $request->jalan;
$lesen_penjaja->penempatan_id = $request->penempatan;
$lesen_penjaja->makanan = $request->makanan;
$lesen_penjaja->minuman = $request->minuman;
$lesen_penjaja->lain = $request->lain;
$lesen_penjaja->masa_jualan_mula = $request->masa_jualan_mula;
$lesen_penjaja->masa_jualan_tamat = $request->masa_jualan_tamat;
$lesen_penjaja->jenis_kenderaan = $request->jenis_kenderaan;
$lesen_penjaja->no_pendaftaran = $request->no_pendaftaran;
$lesen_penjaja->longitude = $request->longitude;
$lesen_penjaja->latitude = $request->latitude;
$lesen_penjaja->group_laporan = $jenis_penjaja->kategori;
$lesen_penjaja->tarikhmohon = $request->tarikh_mohon;
$lesen_penjaja->save();
}
else{
$lesen_penjaja = LesenPenjaja::create([
'user_id' => $penjaja->id,
'syarikat_id' => $syarikat->id,
'jenis_penjaja_id' => $request->jenis_penjaja_id,
'jenis_lain' => '',
'status_tanah' => $request->status_tanah,
'status_lain' => '',
'no_petak' => $request->petak_penjajaan,
'kawasan_id' => $request->kawasan,
'taman_id' => $request->taman,
'jalan_id' => $request->jalan,
'penempatan_id' => $request->penempatan,
'makanan' => $request->makanan,
'minuman' => $request->minuman,
'lain' => $request->lain,
'masa_jualan_mula' => $request->masa_jualan_mula,
'masa_jualan_tamat' => $request->masa_jualan_tamat,
'jenis_kenderaan' => $request->jenis_kenderaan,
'no_pendaftaran' => $request->no_pendaftaran,
'longitude' => $request->longitude,
'latitude' => $request->latitude,
'group_laporan' => $jenis_penjaja->kategori,
'tarikhmohon' => $request->tarikh_mohon
]);
}
$folder = 'dokumens/penjaja/'.$lesen_penjaja->id.'/';
$nama_doc = Dokumen::where('jenis', 'lesen_penjaja')->get();
foreach($nama_doc as $doc){
if ($request->hasFile($doc->nama)) { //ada upload?
$validated = $request->validate([
$doc->nama => 'file|mimes:jpg,png,pdf', // 2MB max
]);
// Store the file
$path = $request->file($doc->nama);
$extension = $path->extension(); // Determine the file's extension based on the file's MIME type...
$name = $doc->nama.".".$extension;
$path->storeAs($folder, $name);
$lesen_penjaja_dokumen = LesenPenjajaDokumen::updateOrCreate(
[
'lesen_penjaja_id' => $lesen_penjaja->id,
'dokumen_id' => $doc->id,
],
[
'lesen_penjaja_id' => $lesen_penjaja->id,
'dokumen_id' => $doc->id,
'path' => $name,
'jenis_dokumen' => $extension,
]);
}
}
$bil_p = BilPelbagai::firstOrCreate(
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $lesen_penjaja->id],
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $lesen_penjaja->id,
'cara_jana' => 'mylesen', 'jenis_bil'=> 'wang proses', 'status_mylesen'=>'1']
);
$lesen_penjaja->status_progress = 'menunggu bayaran proses';
$lesen_penjaja->save();
try {
DB::connection('second_mysql')->getPdo();
if($bil_p->wasRecentlyCreated){
$epbtbil = EpbtBpBil::where('noakaun', $request->no_bil_pelbagai)->first();
if($epbtbil){
$bil_p->status_mylesen_error = '';
$bil_p->ref_no = $epbtbil->norujukan;
$bil_p->description = $epbtbil->keterangan;
$bil_p->pay_status = $epbtbil->statusbyr;
$bil_p->jabatan = $epbtbil->dept_code;
$bil_p->ent_opr = $epbtbil->ent_opr;
$bil_p->no_bilpelbagai = $epbtbil->nobil;
$bil_p->save();
foreach($epbtbil->bil_items as $epbtbil_item){
$bilitem = BilPelbagaiItem::create([
'bil_pelbagai_id' => $bil_p->id,
'itemno' => $epbtbil_item->noitem,
'itemdesc' => $epbtbil_item->keterangan,
'itemprice' => $epbtbil_item->amaun,
'gst_type' => $epbtbil_item->jenis_gst,
'gst_code' => $epbtbil_item->kod_gst,
'cr_code' => $epbtbil_item->kodcr,
'dr_code' => $epbtbil_item->koddr,
'cost_center' => $epbtbil_item->pusatkos,
'exp_date' => $epbtbil_item->tamat_tempoh
]);
}
}
}
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($request){
$query->where('noakaun', $request->no_bil_pelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
$lesen_penjaja->status_progress = 'semakan bayaran proses';
$lesen_penjaja->save();
}
} catch (\Exception $e) {
return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
$lesen_penjaja->no_fail_lesen = $request->no_fail_lesen;
$lesen_penjaja->no_akaun_lesen = $request->no_akaun_lesen;
$lesen_penjaja->kod_lesen = $request->kod_lesen;
$lesen_penjaja->kodkawasan = $request->kawasan;
$lesen_penjaja->jenis_jualan_id = $request->jenis_jualan;
try {
DB::connection('second_mysql')->getPdo();
$epbtlsn = EpbtElsnAkaun::where('noakaun', $request->no_akaun_lesen)->where('statusaktif', 'A')->first();
if(!is_null($epbtlsn)){
$lesen_penjaja->dt_lesen_dikeluarkan = $epbtlsn->ent_date;
$bil_kpi = $lesen_penjaja->kiraKpi();
}
} catch (\Exception $e) {
//return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
$lesen_penjaja->status_progress = 'lawatan tapak';
$lesen_penjaja->save();
$borang = new BorangUlasanIK;
$borang->lesen_penjaja_id = $lesen_penjaja->id;
$borang->dt_rujuk_ppkp = now();
$borang->save();
// $request->session()->put('lesen_penjaja_id', $lesen_penjaja->id);
return redirect(route('admin.papar', ['id' => $lesen_penjaja->id]))->with('success', 'Permohonan telah disimpan.');
}
public function edit_permohonan(Request $request, $id){
$permohonan = LesenPenjaja::find($id);
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
if(!is_null($permohonan)){
Gate::authorize('keje-pt', $permohonan);
return view('admin.penjaja.mohon_baru', [
'permohonan' => $permohonan,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
]);
}
else{
return redirect(route('dashboard', absolute: false))->with('error', 'Permohonan tidak dijumpai');
}
}
public function hapus_permohonan($id){
$permohonan = LesenPenjaja::find($id);
Gate::authorize('keje-pt', $permohonan);
$permohonan->delete();
return redirect(route('dashboard', absolute: false));
}
public function hantar_permohonan(Request $request){
$permohonan = LesenPenjaja::find($request->session()->get('lesen_penjaja_id'));
if(!is_null($permohonan)){
Gate::authorize('keje-pt', $permohonan);
$permohonan->status_progress = 'baru';
$permohonan->save();
return redirect(route('dashboard', absolute: false))->with('success', 'Permohonan berjaya dihantar.');
}
else{
return redirect(route('dashboard', absolute: false))->with('error', 'Permohonan tidak dijumpai');
}
}
}

View File

@@ -0,0 +1,528 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\JsonResponse;
use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Style\PaperSize;
use Illuminate\Support\Facades\Storage;
use Illuminate\View\View;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use App\Models\BorangUlasanIk;
use App\Models\MesyuaratPelesenan;
use App\Models\Kawasan;
use App\Models\EpbtPelanggan;
use App\Models\EpbtElsnAkaun;
class PtPenjajaController extends Controller
{
//
public function simpanWangProses(Request $request)
{
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'menunggu bayaran proses';
$mohon->save();
$bil_p = BilPelbagai::firstOrCreate(
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $request->permohonan_id],
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $request->permohonan_id,
'cara_jana' => 'epbt', 'status_mylesen'=>'1', 'jenis_bil' => 'wang proses']
);
try {
DB::connection('second_mysql')->getPdo();
if($bil_p->wasRecentlyCreated){
$epbtbil = EpbtBpBil::where('noakaun', $request->no_bil_pelbagai)->first();
if($epbtbil){
$bil_p->status_mylesen_error = '';
$bil_p->ref_no = $epbtbil->norujukan;
$bil_p->description = $epbtbil->keterangan;
$bil_p->pay_status = $epbtbil->statusbyr;
$bil_p->jabatan = $epbtbil->dept_code;
$bil_p->ent_opr = $epbtbil->ent_opr;
$bil_p->no_bilpelbagai = $epbtbil->nobil;
$bil_p->jenis_bil = 'wang proses';
$bil_p->save();
foreach($epbtbil->bil_items as $epbtbil_item){
$bilitem = BilPelbagaiItem::create([
'bil_pelbagai_id' => $bil_p->id,
'itemno' => $epbtbil_item->noitem,
'itemdesc' => $epbtbil_item->keterangan,
'itemprice' => $epbtbil_item->amaun,
'gst_type' => $epbtbil_item->jenis_gst,
'gst_code' => $epbtbil_item->kod_gst,
'cr_code' => $epbtbil_item->kodcr,
'dr_code' => $epbtbil_item->koddr,
'cost_center' => $epbtbil_item->pusatkos,
'exp_date' => $epbtbil_item->tamat_tempoh
]);
}
}
}
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($request){
$query->where('noakaun', $request->no_bil_pelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
$mohon->status_progress = 'semakan bayaran proses';
$mohon->save();
}
} catch (\Exception $e) {
return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
return redirect(route('admin.papar-wangproses', ['id'=>$request->permohonan_id]))->with('success', 'No Bil Pelbagai '.$request->no_bil_pelbagai.' telah ditambah');
}
public function simpanNoFail(Request $request){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->no_akaun_lesen = $request->no_akaun_lesen;
if(is_null($mohon->penempatan_id)){
$mohon->kawasan_id = $request->kawasan;
if($request->taman != ''){
$mohon->taman_id = $request->taman;
}
if($request->jalan != ''){
$mohon->jalan_id = $request->jalan;
}
}
else{
$mohon->no_petak = $request->no_petak;
}
$mohon->jenis_jualan_id = $request->jenis_jualan;
$mohon->save();
return redirect(route('admin.papar-wangproses', ['id'=>$request->permohonan_id]))->with('success', 'Maklumat fail '.$mohon->no_akaun_lesen.' telah disimpan');
}
public function simpanNoLesen(Request $request){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->no_akaun_lesen = $request->no_akaun_lesen;
$mohon->kod_lesen = $request->kod_lesen;
try {
DB::connection('second_mysql')->getPdo();
$epbtlsn = EpbtElsnAkaun::where('noakaun', $request->no_akaun_lesen)->where('statusaktif', 'A')->first();
if(!is_null($epbtlsn)){
$mohon->dt_lesen_dikeluarkan = $epbtlsn->ent_date;
$bil_kpi = $mohon->kiraKpi();
}
} catch (\Exception $e) {
//return back()->with('error', 'Sambungan ke pangkalan data gagal. Sila cuba sebentar lagi.');
}
$mohon->save();
return redirect(route('admin.papar-lesen', ['id'=>$request->permohonan_id]))->with('success', 'Maklumat fail '.$mohon->no_fail_lesen.' telah disimpan');
}
public function hantarPPK(Request $request){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'lawatan tapak';
$mohon->save();
$borang = new BorangUlasanIK;
$borang->lesen_penjaja_id = $request->permohonan_id;
$borang->dt_rujuk_ppkp = now();
$borang->save();
return redirect(route('admin.papar-wangproses', ['id'=>$request->permohonan_id]))->with('success', 'Permohonan '.$mohon->no_akaun_lesen.' telah dihantar untuk tindakan IK.');
}
public function simpanPetak(Request $request){
$permohonan = LesenPenjaja::find($request->permohonan_id);
$permohonan->longitude = $request->longitude;
$permohonan->latitude = $request->latitude;
$permohonan->save();
return redirect(route('admin.papar-map', [$request->permohonan_id]))->with('success', 'Lokasi telah dikemaskini.');
}
public function simpanMesyuarat(Request $request){
$mesyuarat = MesyuaratPelesenan::firstOrCreate([
'tahun' => $request->tahun,
'bil_mesyuarat' => $request->bil_mesyuarat,
'dt_mesyuarat' => $request->dt_mesyuarat,
]);
if($request->dt_mesyuarat != ''){
$mesyuarat->dt_mesyuarat = $request->dt_mesyuarat;
}
return redirect(route('pt.bawa-mesyuarat', [$mesyuarat->id]))->with('success', 'Mesyuarat Bilangan '.$request->bil_mesyuarat.'/'.$request->tahun.' telah direkod.');
}
public function simpanSenaraiBawaMesyuarat(Request $request){
$meeting = MesyuaratPelesenan::find($request->mesyuarat_id);
//$arr_insert = [];
$jum = 0;
foreach($request->tambah_mesyuarat as $permohonan_id){
$meeting->lesen_penjajas()->attach($permohonan_id, [
'keputusan_mesyuarat' => '',
'by_law' => $request->bylaw,
'kodlesen' => $request->kodlesen,
'kadar_lesen' => $request->kadar_lesen,
'kadar_sampah' => $request->kadar_sampah,
'kadar_sewa_petak' => $request->kadar_sewa_petak,
'kadar_patil' => $request->kadar_patil,
]);
$jum++;
// $arr_insert[] = $permohonan_id;
}
return redirect(route('pt.bawa-mesyuarat', [$request->mesyuarat_id]))->with('success', 'Sebanyak '.$jum.' permohonan ditambah dalam mesyuarat bilangan '.$request->bil_mesyuarat.'/'.$request->tahun.'.');
}
public function tambahKeMesyuarat(Request $request, $permohonan_id, $mesyuarat_id){
$meeting = MesyuaratPelesenan::find($mesyuarat_id);
$meeting->lesen_penjajas()->attach($permohonan_id, [
'keputusan_mesyuarat' => '',
]);
return redirect(route('pt.bawa-mesyuarat', [$mesyuarat_id]))->with('success', 'Permohonan telah dimasukkan');
}
public function buangDariMesyuarat(Request $request, $permohonan_id, $mesyuarat_id){
$permohonan = LesenPenjaja::find($permohonan_id);
$permohonan->mesyuarats()->detach($mesyuarat_id);
return redirect(route('pt.bawa-mesyuarat', [$mesyuarat_id]))->with('success', 'Permohonan telah dikeluarkan');
}
/*public function cetakLampiranB(Request $request, $mesyuarat_id){
$permohonan = LesenPenjaja::find($permohonan_id);
$permohonan->mesyuarats()->detach($mesyuarat_id);
return redirect(route('pt.bawa-mesyuarat', [$mesyuarat_id]))->with('success', 'Permohonan telah dikeluarkan');
}*/
public function exportWord(Request $request)
{
$headText = ['name' => 'Arial', 'size' => 10];
$phpWord = new PhpWord();
$phpWord->setDefaultFontName('Arial'); // Jenis font
$phpWord->setDefaultFontSize(8); // Saiz font kecil
$phpWord->addTitleStyle(
1, // heading level (1 = Heading1)
NULL,
['alignment' => 'center']
);
$section = $phpWord->addSection([
'orientation' => 'landscape',
'marginLeft' => 500,
'marginRight' => 500,
]);
$mesyuarat = MesyuaratPelesenan::findOrFail($request->mesyuarat_id);
$section->addTitle('PERMOHONAN LESEN PENJAJA SEMENTARA', 1);
$section->addTitle('UNTUK MAKLUMAN DAN KELULUSAN DALAM MESYUARAT JAWATANKUASA KESIHATAN DAN PELESENAN', 1);
$section->addTitle('BIL '. $mesyuarat->bil_mesyuarat.'/'.$mesyuarat->tahun, 1);
$section->addText(' ' );
$section->addText('JENIS LESEN: PENJAJA SEMENTARA', $headText);
$i = 0;
$kaws = Kawasan::all();
foreach($kaws as $kaw){
$apps = $mesyuarat->applicationsInKawasan($kaw->id);
if((!is_null($apps))&&(count($apps) > 0)){
$section->addText($kaw->id.' '.$kaw->nama, $headText);
// Create table with 7 columns
$table = $section->addTable([
'borderSize' => 6,
'borderColor' => '999999',
'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER,
'cellMargin' => 80,
]);
$row = $table->addRow();
$row->addCell(500)->addText('BIL'); // Col 1
$row->addCell(2000)->addText('TARIKH MOHON'); // Col 2
$row->addCell(2000)->addText('NO FAIL MBIP(L)(PS)'); // Col 3
$row->addCell(4000)->addText('BUTIR-BUTIR PEMOHON LESEN PENJAJA SEMENTARA'); // Col 3
$row->addCell(4000)->addText('PERIHAL PERNIAGAAN'); // Col 3
$row->addCell(3000)->addText('KADAR BAYARAN 6 BULAN PERTAMA (JAN-JUN)'); // Col 3
$row->addCell(1200)->addText('KEPUTUSAN MESYUARAT JKKL '.$mesyuarat->bil_mesyuarat.'/'.$mesyuarat->tahun); // Col 3
foreach($apps as $penjaja){
$i++;
// Add a single row----------
$row = $table->addRow();
$row->addCell(500)->addText($i); // Col 1
$row->addCell(2000)->addText($penjaja->tarikhmohon); // Col 2
$row->addCell(2000)->addText($penjaja->no_fail_lesen); // Col 3
//-------------------
$applicantCell = $row->addCell(4000);
$innerTable = $applicantCell->addTable([
'cellMarginTop' => 0,
'cellMarginBottom' => 0,
'cellMarginLeft' => 80,
'cellMarginRight' => 80,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('Nama Pemohon:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText($penjaja->user->name, null, ['spaceAfter' => 0,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('Lokasi Perniagaan:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText($penjaja->lokasi_penjajaan(), null, ['spaceAfter' => 0,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('Masa Perniagaan:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText(substr($penjaja->masa_jualan_mula, 0, 5).' - '.substr($penjaja->masa_jualan_tamat, 0, 5), null, ['spaceAfter' => 0,]);
//-----------------------
//-------------------
$bisnesCell = $row->addCell(4000);
$innerTable = $bisnesCell->addTable([
'cellMarginTop' => 0,
'cellMarginBottom' => 0,
'cellMarginLeft' => 80,
'cellMarginRight' => 80,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('Jenis Perniagaan:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText($penjaja->jenis_penjaja->jenis, null, ['spaceAfter' => 0,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('By-Law Lesen:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText($penjaja->pivot->by_law, null, ['spaceAfter' => 0,]);
$innerTable->addRow();
$innerTable->addCell(1500)->addText('Kod Lesen:', null, ['spaceAfter' => 0,]);
$innerTable->addCell(200)->addText(': ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(2300)->addText($penjaja->pivot->kodlesen, null, ['spaceAfter' => 0,]);
//-----------------------
$kadarCell = $row->addCell(3000);
$innerTable = $kadarCell->addTable([
'cellMarginTop' => 0,
'cellMarginBottom' => 0,
'cellMarginLeft' => 80,
'cellMarginRight' => 80,]);
// Cell 6: License fees
$innerTable->addRow();
$innerTable->addCell(1400)->addText('Lesen', null, ['spaceAfter' => 0,]);
$innerTable->addCell(700)->addText(': RM ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(900)->addText(number_format($penjaja->pivot->kadar_lesen, 2, '.', ','),
null,
['alignment' => 'right', 'spaceAfter' => 0,]
);
$innerTable->addRow();
$innerTable->addCell(1400)->addText('Sampah', null, ['spaceAfter' => 0,]);
$innerTable->addCell(700)->addText(': RM ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(900)->addText(number_format($penjaja->pivot->kadar_sampah, 2, '.', ','),
null,
['alignment' => 'right', 'spaceAfter' => 0,]
);
$innerTable->addRow();
$innerTable->addCell(1400)->addText('Sewa Petak', null, ['spaceAfter' => 0,]);
$innerTable->addCell(700)->addText(': RM ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(900)->addText(number_format($penjaja->pivot->kadar_sewa_petak, 2, '.', ','),
null,
['alignment' => 'right', 'spaceAfter' => 0,]
);
$innerTable->addRow();
$innerTable->addCell(1400)->addText('Patil', null, ['spaceAfter' => 0,]);
$innerTable->addCell(700)->addText(': RM ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(900)->addText(number_format($penjaja->pivot->kadar_patil, 2, '.', ','),
null,
['alignment' => 'right', 'spaceAfter' => 0,]
);
$jumlah = $penjaja->pivot->kadar_lesen + $penjaja->pivot->kadar_sampah + $penjaja->pivot->kadar_sewa_petak + $penjaja->pivot->kadar_patil;
$innerTable->addRow();
$innerTable->addCell(1400)->addText('Jumlah', null, ['spaceAfter' => 0,]);
$innerTable->addCell(700)->addText(': RM ', null, ['spaceAfter' => 0,]);
$innerTable->addCell(900)->addText(number_format($jumlah, 2, '.', ','),
null,
['alignment' => 'right', 'spaceAfter' => 0,]
);
$resultCell = $row->addCell(1200);
$innerTable = $resultCell->addTable();
// Cell 6: License fees
$innerTable->addRow();
$innerTable->addCell(1200)->addText('[ ] Lulus');
$innerTable->addRow();
$innerTable->addCell(1200)->addText('[ ] Tangguh');
$innerTable->addRow();
$innerTable->addCell(1200)->addText('[ ] Tolak');
}
$section->addText(' ' );
}
}
$filename = 'lesenku-' . $mesyuarat->id . '.docx';
$path = storage_path('app/public/' . $filename);
$writer = IOFactory::createWriter($phpWord, 'Word2007');
$writer->save($path);
return response()->download($path)->deleteFileAfterSend(true);
}
public function sahkanSenarai(Request $request){
$mesyuarat = MesyuaratPelesenan::find($request->mesyuarat_id);
$mesyuarat->kunci_senarai = '1';
$mesyuarat->save();
foreach($mesyuarat->lesen_penjajas as $permohonan){
$permohonan->status_progress = 'menunggu keputusan mesyuarat';
$permohonan->save();
}
return redirect(route('pt.keputusanmesyuarat', [$request->mesyuarat_id]))->with('success', 'Mesyuarat Bilangan '.$request->bil_mesyuarat.'/'.$request->tahun.' telah direkod.');
}
public function simpanKeputusanMesyuarat(Request $request){
$i = 0;
$mesyuarat = MesyuaratPelesenan::find($request->mesyuarat_id);
//`status_progress`, `status_mesyuarat`
foreach($mesyuarat->lesen_penjajas as $permohonan){
$keputusan_dia = $request->keputusan[$permohonan->id];
$permohonan->status_progress = 'keputusan diperolehi';
if($keputusan_dia == 'ditangguhkan'){
$permohonan->status_mesyuarat = 'ditangguhkan';
$permohonan->pivot->keputusan_mesyuarat = 'menangguhkan';
}
elseif($keputusan_dia == 'diluluskan'){
$permohonan->status_mesyuarat = 'diluluskan';
$permohonan->pivot->keputusan_mesyuarat = 'meluluskan';
}
elseif($keputusan_dia == 'ditolak'){
$permohonan->status_mesyuarat = 'ditolak';
$permohonan->pivot->keputusan_mesyuarat = 'menolak';
}
$i++;
$permohonan->save();
}
return redirect(route('pt.dapat-keputusan-mesyuarat', [$request->mesyuarat_id]))->with('success', 'Keputusan Mesyuarat Bilangan '.$request->bil_mesyuarat.'/'.$request->tahun.' telah direkod untuk '.$i.' permohonan.');
}
public function searchPelanggan(Request $request){
$no_pelanggans = null;
if(isset($request->carian)){
$no_pelanggans = EpbtPelanggan::where('nokpdaftar', 'LIKE', "%".$request->carian."%")->orWhere('nama', 'LIKE', "%".$request->carian."%")->get();
}
//dd($no_pelanggans);
return view('admin.penjaja.cekbilpel', ['no_pelanggans' => $no_pelanggans]);
}
public function ajaxUpdateNoFailLesen(Request $request, $permohonanId): JsonResponse
{
// Optional: authorization ikut role/policy
// $this->authorize('update', ...);
$validated = $request->validate([
'no_fail_lesen' => ['nullable', 'string', 'max:100'],
]);
$lesen = LesenPenjaja::where('id', $permohonanId)->first();
if (!$lesen) {
// Kalau kau nak auto-create record bila belum wujud:
// $lesen = LesenPenjaja::create(['permohonan_id' => $permohonanId, 'no_fail_lesen' => $validated['no_fail_lesen'] ?? null]);
return response()->json([
'ok' => false,
'message' => 'Rekod lesen_penjajas untuk permohonan ini tidak dijumpai.'
], 404);
}
$lesen->no_fail_lesen = $validated['no_fail_lesen'] ?? null;
$lesen->save();
return response()->json([
'ok' => true,
'message' => 'No fail lesen berjaya disimpan.',
'no_fail_lesen' => $lesen->no_fail_lesen,
]);
}
}

View File

@@ -0,0 +1,100 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
class DashboardController extends Controller
{
//
public function utama(Request $request, $ctahun=''){
if($ctahun == ''){
$ctahun = date('Y');
}
$permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();
$countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
->count();
//dapatkan status bayaran untuk update mana yg tgu wang proses
$semakresits = LesenPenjaja::where('status_progress', 'LIKE', 'menunggu bayaran proses')->get();
foreach($semakresits as $semakresit){
$bil_p = BilPelbagai::where('jenis_bil', 'wang proses')->where('lesen_penjaja_id', $semakresit->id)->first();
// dd($semakresit,$bil_p);
if(!is_null(optional($bil_p)->no_akaun_bilpelbagai)){
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($bil_p){
$query->where('noakaun', $bil_p->no_akaun_bilpelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
$semakresit->status_progress = 'semakan bayaran proses';
$semakresit->save();
}
}
}
//end update status wang proses
$txt_bayar = '';
//senarai permohonan baru
$baru = LesenPenjaja::where('status_progress', 'baru')->count();
//senarai belum bayar wang proses
$belum_bayar_proses = LesenPenjaja::where('status_progress', 'menunggu bayaran proses')->count();
//senarai dah bayar wang proses
$bayar_proses = LesenPenjaja::where('status_progress', 'semakan bayaran proses')->count();
//dapatkan yang perlu lawatan tapak
$periksa_tapak = LesenPenjaja::where('status_progress', 'LIKE', 'lawatan tapak')->count();
//dapatkan yang perlu lawatan tapak
$pegawai_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pegawai')->count();
//dapatkan yang perlu lawatan tapak
$pengarah_belum_ulas = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pengarah')->count();
//dapatkan yang perlu lawatan tapak
$bawa_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'sokong dibawa ke mesyuarat')->count();
//dapatkan yang perlu lawatan tapak
$keputusan_mesyuarat = LesenPenjaja::where('status_progress', 'LIKE', 'keputusan diperolehi')->whereNull('status_mesyuarat')->count();
//dapatkan yang perlu lawatan tapak
$keluar_lesen = LesenPenjaja::where('status_progress', 'LIKE', 'keputusan diperolehi')->where('status_mesyuarat', 'LIKE', 'diluluskan')->count();
//dapatkan yang perlu lawatan tapak
$selesai = LesenPenjaja::where('status_progress', 'LIKE', 'keputusan diperolehi')->whereNotNull('status_mesyuarat')->count();
return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI', 'baru', 'belum_bayar_proses', 'bayar_proses', 'periksa_tapak', 'pegawai_belum_ulas', 'pengarah_belum_ulas', 'bawa_mesyuarat', 'keputusan_mesyuarat', 'keluar_lesen', 'selesai'));
}
public function carianutama(Request $request){
if($request->input('ctahun') == ''){
$ctahun = date('Y');
}
else{
$ctahun = $request->input('ctahun');
}
$permohonans = LesenPenjaja::whereYear('tarikhmohon', $ctahun)->get();
$countKPI = LesenPenjaja::whereYear('tarikhlulus', $ctahun)
->whereRaw('DATEDIFF(tarikhlulus, tarikhmohon) > 14')
->count();
return view('admin.penjaja.dashboard', compact('ctahun', 'permohonans', 'countKPI'));
}
}

View File

@@ -0,0 +1,165 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BorangUlasanIk;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use Illuminate\View\View;
class IkPenjajaController extends Controller
{
//
public function senarai_ik(Request $request){
//dapatkan status bayaran
$senarais = LesenPenjaja::where('status_progress', 'LIKE', 'lawatan tapak')->get();
return view('admin.penjaja.senaraipemeriksaan', compact('senarais'));
}
public function papar(Request $request, $id){
$show = 'utama';
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show','permohonan'));
}
public function papar_dokumen(Request $request, $id){
$show = 'dokumen';
$permohonan = LesenPenjaja::find($id);
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'doc_kad_pengenalan','doc_gambar',
'doc_lokasi','doc_kebenaran','doc_kenderaan','doc_kenderaan_geran',
'doc_suntikan_ty2', 'doc_kursus_makanan'));
}
public function papar_wangproses(Request $request, $id){
$show = 'wang proses';
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show','permohonan'));
}
public function papar_map(Request $request, $id){
$show = 'lokasi';
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan'));
}
public function simpanLokasi(Request $request){
$permohonan = LesenPenjaja::find($request->permohonan_id);
$permohonan->longitude = $request->input('longitude');
$permohonan->latitude = $request->input('latitude');
$permohonan->save();
return redirect(route('ik.papar-pemeriksaan-map', ['id'=>$request->permohonan_id]));
}
public function papar_ulasan(Request $request, $id){
$show = 'ulasan ik';
$permohonan = LesenPenjaja::find($id);
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan'));
}
public function simpanUlasan(Request $request){
$permohonan = BorangUlasanIk::firstOrCreate([
'lesen_penjaja_id' => $request->permohonan_id,
]);
$permohonan->dt_periksa = $request->input('dt_periksa');
$permohonan->kesesuaian_lokasi = $request->input('kesesuaian_lokasi');
$permohonan->kesesuaian_lokasi_sebab = $request->input('kesesuaian_lokasi_sebab');
$permohonan->dijalankan_oleh = $request->input('dijalankan_oleh');
$permohonan->pematuhan_syarat = $request->input('pematuhan_syarat');
$permohonan->perkara_perlu_dipatuhi = $request->input('perkara_perlu_dipatuhi');
$permohonan->pemprosesan_makanan = $request->input('pemprosesan_makanan');
if($permohonan->pemprosesan_makanan == 'ada'){
$permohonan->pemprosesan_makanan_memasak = $request->has('pemprosesan_makanan_memasak') ? $request->input('pemprosesan_makanan_memasak') : null;
$permohonan->pemprosesan_makanan_merebus = $request->has('pemprosesan_makanan_merebus') ? $request->input('pemprosesan_makanan_merebus') : null;
$permohonan->pemprosesan_makanan_menggoreng = $request->has('pemprosesan_makanan_menggoreng') ? $request->input('pemprosesan_makanan_menggoreng') : null;
$permohonan->pemprosesan_makanan_lain = $request->has('pemprosesan_makanan_lain') ? $request->input('pemprosesan_makanan_lain') : null;
if($permohonan->pemprosesan_makanan_lain == '1'){
$permohonan->pemprosesan_makanan_lain_txt = $request->input('pemprosesan_makanan_lain_txt');
}
else{
$permohonan->pemprosesan_makanan_lain_txt = '';
}
}
$permohonan->mendirikan_bangunan = $request->input('mendirikan_bangunan');
$permohonan->jika_guna_kenderaan = $request->input('jika_guna_kenderaan');
$permohonan->jenis_kenderaan_lain = $request->input('jenis_kenderaan_lain');
$permohonan->no_plate_kenderaan = $request->input('no_plate_kenderaan');
$permohonan->dt_mula_niaga = $request->input('dt_mula_niaga');
$permohonan->masa_berniaga_mula = $request->input('masa_berniaga_mula');
$permohonan->kebersihan_diri = $request->input('kebersihan_diri');
$permohonan->kebersihan_makanan = $request->input('kebersihan_makanan');
$permohonan->kebersihan_kawasan = $request->input('kebersihan_kawasan');
$permohonan->laporan_kebersihan_selepas_niaga = $request->input('laporan_kebersihan_selepas_niaga');
$permohonan->cadangan = $request->input('cadangan');
$permohonan->tiada_halangan_syarat = $request->input('tiada_halangan_syarat');
$permohonan->tiada_halangan_notis_dipatuhi = $request->has('tiada_halangan_notis_dipatuhi') ? $request->input('tiada_halangan_notis_dipatuhi') : null;
$permohonan->tidak_menyokong_atas_sebab = $request->input('tidak_menyokong_atas_sebab');
$permohonan->dirujuk_unit_penguatkuasa = $request->has('dirujuk_unit_penguatkuasa') ? $request->input('dirujuk_unit_penguatkuasa') : null;
$permohonan->dirujuk_unit_penguatkuasa_txt = $request->input('dirujuk_unit_penguatkuasa_txt');
$user = $request->user();
$permohonan->pegawai_id = $user->id;
$permohonan->save();
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'ulasan pegawai';
if($permohonan->cadangan == 'tiada halangan'){
$setuju = 'setuju';
}
else{
$setuju = 'tidak setuju';
}
$mohon->save();
return redirect(route('ik.papar-pemeriksaan-ulasan', ['id'=>$request->permohonan_id]))->with('success', 'Ulasan telah disimpan.');
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BorangUlasanIk;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use Illuminate\View\View;
class PegawaiPenjajaController extends Controller
{
//
public function senarai_pegawai(Request $request){
//dapatkan status bayaran
$senarais = LesenPenjaja::where('status_progress', 'LIKE', 'ulasan pegawai')->get();
return view('admin.penjaja.senaraisokongan', compact('senarais'));
}
public function simpanUlasan(Request $request){
$permohonan = BorangUlasanIk::firstOrCreate([
'lesen_penjaja_id' => $request->permohonan_id,
]);
}
}

View File

@@ -0,0 +1,184 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Syarikat;
use App\Models\LesenPenjaja;
use App\Models\BilPelbagai;
use App\Models\BilPelbagaiItem;
use App\Models\EpbtBpBil;
use App\Models\EpbtEcasResit;
use Illuminate\View\View;
class PenjajaController extends Controller
{
//
public function senarai_pt(Request $request){
$txt_bayar = '';
$senarais = LesenPenjaja::where('status_progress', 'baru')->get();
return view('admin.penjaja.senaraibaru', compact('senarais', 'txt_bayar'));
}
//
public function senarai_pt_proses(Request $request){
$txt_bayar = '';
$senarais = LesenPenjaja::where('status_progress', 'semakan bayaran proses')->get();
return view('admin.penjaja.senaraibukafail', compact('senarais', 'txt_bayar'));
}
public function papar(Request $request, $id){
$show = 'utama';
$permohonan = LesenPenjaja::find($id);
$user = $request->user();
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$permohonan->dokumens->isEmpty()){
$doc_kad_pengenalan = $permohonan->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $permohonan->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $permohonan->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $permohonan->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $permohonan->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $permohonan->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $permohonan->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
return view('admin.penjaja.papar_permohonan', compact('show', 'permohonan', 'user', 'doc_kad_pengenalan','doc_gambar',
'doc_lokasi','doc_kebenaran','doc_kenderaan','doc_kenderaan_geran',
'doc_suntikan_ty2', 'doc_kursus_makanan'));
}
public function paparLampiran(Request $request, $id): View
{
$lesen_penjaja = LesenPenjaja::find($id);
$doc_kad_pengenalan = null;
$doc_gambar = null;
$doc_lokasi = null;
$doc_kebenaran = null;
$doc_kenderaan = null;
$doc_kenderaan_geran = null;
$doc_suntikan_ty2 = null;
$doc_kursus_makanan = null;
if(!$lesen_penjaja->dokumens->isEmpty()){
$doc_kad_pengenalan = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_kad_pengenalan');
$doc_gambar = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_gambar');
$doc_lokasi = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_lokasi');
$doc_kebenaran = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_kebenaran');
$doc_kenderaan = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_kenderaan');
$doc_kenderaan_geran = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_kenderaan_geran');
$doc_suntikan_ty2 = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_suntikan_ty2');
$doc_kursus_makanan = $lesen_penjaja->dokumens->firstWhere('nama', 'doc_kursus_makanan');
}
return view('admin.penjaja.papar_mohon_lampiran', [
'user' => $request->user(),
'permohonan' => $lesen_penjaja,
'doc_kad_pengenalan' => $doc_kad_pengenalan,
'doc_gambar' => $doc_gambar,
'doc_lokasi' => $doc_lokasi,
'doc_kebenaran' => $doc_kebenaran,
'doc_kenderaan' => $doc_kenderaan,
'doc_kenderaan_geran' => $doc_kenderaan_geran,
'doc_suntikan_ty2' => $doc_suntikan_ty2,
'doc_kursus_makanan' => $doc_kursus_makanan,
]);
}
public function simpanWangProses(Request $request)
{
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'menunggu bayaran proses';
$mohon->save();
$bil_p = BilPelbagai::firstOrCreate(
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $request->permohonan_id],
['no_akaun_bilpelbagai' => $request->no_bil_pelbagai, 'lesen_penjaja_id' => $request->permohonan_id, 'cara_jana' => 'mylesen', 'status_mylesen'=>'1']
);
if($bil_p->wasRecentlyCreated){
$epbtbil = EpbtBpBil::where('noakaun', $request->no_bil_pelbagai)->first();
if($epbtbil){
$bil_p->status_mylesen_error = '';
$bil_p->ref_no = $epbtbil->norujukan;
$bil_p->description = $epbtbil->keterangan;
$bil_p->pay_status = $epbtbil->statusbyr;
$bil_p->jabatan = $epbtbil->dept_code;
$bil_p->ent_opr = $epbtbil->ent_opr;
$bil_p->no_bilpelbagai = $epbtbil->nobil;
$bil_p->save();
foreach($epbtbil->bil_items as $epbtbil_item){
$bilitem = BilPelbagaiItem::create([
'bil_pelbagai_id' => $bil_p->id,
'itemno' => $epbtbil_item->noitem,
'itemdesc' => $epbtbil_item->keterangan,
'itemprice' => $epbtbil_item->amaun,
'gst_type' => $epbtbil_item->jenis_gst,
'gst_code' => $epbtbil_item->kod_gst,
'cr_code' => $epbtbil_item->kodcr,
'dr_code' => $epbtbil_item->koddr,
'cost_center' => $epbtbil_item->pusatkos,
'exp_date' => $epbtbil_item->tamat_tempoh
]);
}
}
}
$bp_bayar = EpbtEcasResit::whereHas('resitItems', function($query) use ($request){
$query->where('noakaun', $request->no_bil_pelbagai);
})->select('noresit', 'tarikh','amaun')
->orderBy('tarikh')
->first();
if(!is_null($bp_bayar)){ //cek no resit daripada epbt..klu ada, kita simpan rekod
$bil_p->dt_bayar = $bp_bayar->tarikh;
$bil_p->no_resit = $bp_bayar->noresit;
$bil_p->amaun_bayar = $bp_bayar->amaun;
$bil_p->save();
}
return redirect(route('pt.penjaja-papar', ['id'=>$request->permohonan_id]));
}
public function simpanNoFail(Request $request){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->no_fail_lesen = $request->no_fail_lesen;
$mohon->no_akaun_lesen = $request->no_akaun_lesen;
$mohon->save();
return redirect(route('pt.penjaja-papar', ['id'=>$request->permohonan_id]))->with('msg', 'Maklumat telah disimpan');
}
public function hantarPPK(Request $request){
$mohon = LesenPenjaja::find($request->permohonan_id);
$mohon->status_progress = 'lawatan tapak';
$mohon->save();
return redirect(route('pt.penjaja-papar', ['id'=>$request->permohonan_id]))->with('msg', 'Maklumat telah disimpan');
}
}