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

181
app/Models/LesenPenjaja.php Normal file
View File

@@ -0,0 +1,181 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;
class LesenPenjaja extends Model
{
use HasFactory;
protected $fillable = [
'user_id',
'syarikat_id',
'jenis',
'jenis_lain',
'status_tanah',
'status_lain',
'no_petak',
'kawasan_id',
'taman_id',
'jalan_id',
'penempatan_id',
'makanan',
'minuman',
'lain',
'masa_jualan_mula',
'masa_jualan_tamat',
'jenis_kenderaan',
'no_pendaftaran',
'longitude',
'latitude',
'no_akaun_lesen',
'no_fail_lesen',
'kod_lesen',
'jenis_perniagaan',
'status_progress',
'status_mesyuarat',
'kodkawasan',
'kodtaman',
'mulajanji',
'tamatjanji',
'tarikhmohon',
'tarikhlulus',
'dt_lesen_dikeluarkan',
'kpi',
'patuh_kpi'
];
public function user()
{
return $this->belongsTo(User::class);
}
public function syarikat(){
return $this->belongsTo(Syarikat::class);
}
public function kawasan(){
return $this->belongsTo(Kawasan::class);
}
public function taman(){
return $this->belongsTo(Taman::class);
}
public function jalan(){
return $this->belongsTo(Jalan::class);
}
public function penempatan(){
return $this->belongsTo(Penempatan::class);
}
public function dokumens()
{
return $this->belongsToMany(Dokumen::class, 'lesen_penjaja_dokumens', 'lesen_penjaja_id', 'dokumen_id')->withPivot('path', 'jenis_dokumen');
}
public function dokumenId($jenis_dokumen)
{
$exists = $this->dokumens()->where('nama', $jenis_dokumen)->first();
return $exists ? $exists->id : null;
}
public function bil_pelbagai_api(){
return $this->hasMany(BilPelbagaiApi::class);
}
public function bilpelbagais(){
return $this->hasMany(BilPelbagai::class);
}
public function getDaysDifferenceAttribute()
{
return $this->tarikhmohon && $this->tarikhlulus
? Carbon::parse($this->tarikhmohon)->diffInDays(Carbon::parse($this->tarikhlulus))
: null;
}
public function ulasanIk(){
return $this->hasMany(BorangUlasanIk::class);
}
public function ulasanPegawai(){
return $this->hasMany(UlasanPegawai::class);
}
public function pemeriksaanTerkini(){
return $this->hasOne(BorangUlasanIK::class)->latestOfMany();
}
public function mesyuarats()
{
return $this->belongsToMany(MesyuaratPelesenan::class, 'mesyuarat_pelesenan_lesen_penjajas')
->withPivot(['by_law'])
->withPivot(['kodlesen'])
->withPivot(['kadar_lesen'])
->withPivot(['kadar_sampah'])
->withPivot(['kadar_sewa_petak'])
->withPivot(['kadar_patil'])
->withPivot(['keputusan_mesyuarat'])
->withTimestamps();
}
public function kiraKpi(): ?int
{
if (!$this->tarikhmohon || !$this->dt_lesen_dikeluarkan) {
return null; // Atau 0 jika kau prefer
}
$mohon = Carbon::parse($this->tarikhmohon)->startOfDay();
$keluar = Carbon::parse($this->dt_lesen_dikeluarkan)->startOfDay();
return $mohon->diffInDays($keluar);
}
public function lokasi_penjajaan(){
$alamat = '';
if(!is_null($this->no_petak)){
$alamat = ucwords($this->no_petak).", \n";
}
if(!is_null($this->penempatan?->nama)){
$alamat .= ucwords($this->penempatan?->nama).", \n";
}
if(!is_null($this->jalan?->nama)){
$alamat .= ucwords(strtolower($this->jalan?->nama)).", \n";
}
if(!is_null($this->taman?->nama)){
$alamat .= ucwords(strtolower($this->taman?->nama)).", \n";
}
$alamat .= ucwords(strtolower($this->kawasan->nama));
return $alamat;
}
public function jenis_penjaja()
{
return $this->belongsTo(JenisPenjaja::class);
}
public function jenis_jualan()
{
return $this->belongsTo(JenisJualan::class);
}
public function no_resit_wang_proses()
{
$bil = BilPelbagai::where('lesen_penjaja_id', $this->id)->where('jenis_bil','wang proses')->where('status_bil', true)->first();
return $bil->no_resit;
}
}