<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Siswa extends Model
{
use HasFactory;
protected $fillable = [
'nis',
'nama_siswa',
'jenis_kelamin',
'no_hp',
'email',
'alamat',
'orang_tua_wali',
'kategori_siswa_id',
'kelas_id',
'kelas_pararel_id',
'mulai_pembayaran',
'tahun_ajaran',
'status_siswa',
];
protected $appends = [
'tagihan_berikutnya'
];
public static function statusSiswa()
{
return [
'aktif' => 'Aktif',
'tidak aktif' => 'Tidak Aktif',
];
}
public function kategori_siswa()
{
return $this->belongsTo(KategoriSiswa::class);
}
public function kelas()
{
return $this->belongsTo(Kelas::class)->withDefault([
'nama_kelas' => '-',
'jenjang' => [
'nama_jenjang' => '-'
]
]);
}
public function kelas_pararel()
{
return $this->belongsTo(KelasPararel::class, 'kelas_pararel_id');
}
public function jenis_pembayaran_siswas()
{
return $this->hasMany(JenisPembayaranSiswa::class);
}
public function pembayarans()
{
return $this->hasMany(Pembayaran::class);
}
public function tagihans()
{
return $this->hasMany(Tagihan::class);
}
public function getTagihanBerikutnyaAttribute()
{
$datas = [];
$jenis_pembayaran_siswas = $this->jenis_pembayaran_siswas;
foreach ($jenis_pembayaran_siswas as $jenis_pembayaran_siswa) {
$tagihan = $this->tagihans->where('jenis_pembayaran_siswa_id', $jenis_pembayaran_siswa->id)->sortByDesc('tanggal_tagihan')->first();
if ($tagihan) {
$tanggal_tagihan = $tagihan->tanggal_tagihan;
$tanggal_tagihan = date('Y-m-d', strtotime($tanggal_tagihan));
//strtotime('+1 '.(($jenis_pembayaran->jenis_pembayaran->sifat_pembayaran == "bulanan")?"month":"year"))
$tanggal_tagihan = date('Y-m-d', strtotime('+1 ' . (($jenis_pembayaran_siswa->jenis_pembayaran->sifat_pembayaran == "bulanan") ? "month" : "year"), strtotime($tanggal_tagihan)));
} else {
$tanggal_tagihan = $this->mulai_pembayaran;
}
$datas[] = [
'jenis_pembayaran' => $jenis_pembayaran_siswa->jenis_pembayaran->nama_jenis_pembayaran,
'tanggal_tagihan' => $tanggal_tagihan,
'total_pembayaran' => $jenis_pembayaran_siswa->detail_pembayarans->sum('nominal_pembayaran'),
];
}
return $datas;
}
//createLogin function, create SiswaLogin with username and password is NIS
public function createLogin()
{
$siswaLogin = SiswaLogin::firstOrNew(['siswa_id' => $this->id]);
$siswaLogin->siswa_id = $this->id;
$siswaLogin->username = $this->nis;
$siswaLogin->password = bcrypt($this->nis);
$siswaLogin->save();
}
public function tabungans()
{
//Siswaable where tabungans is the table name
return $this->morphedByMany(Tabungan::class, 'siswaable');
}
//total tabungan
public function getTotalTabunganAttribute()
{
return $this->tabungans->where('proses_tabungan','simpan')->sum('jumlah_tabungan') - $this->tabungans->where('proses_tabungan','ambil')->sum('jumlah_tabungan');
}
public function getNoWaAttribute(){
//add 62 to the beginning of the phone number
if(substr($this->no_hp,0,1) == '0'){
return '62'.substr($this->no_hp,1);
} else {
return str_replace('+','',$this->no_hp);
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]