Anons79 Mini Shell

Directory : /home/aplikasiposinfo/www/demo-catatan-keuangan.aplikasipos.info/app/Models/
Upload File :
Current File : /home/aplikasiposinfo/www/demo-catatan-keuangan.aplikasipos.info/app/Models/SuratPermintaan.php

<?php

namespace App\Models;

use App\Helper\Generator;
use App\Models\Spatie\Roles;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class SuratPermintaan extends Model
{
    use HasFactory;

    protected $fillable = [
        'perihal',
        'tmp_nomor_surat',
        'nomor_surat',
        'keterangan',
        'keterangan_penolakan',
        'note',
        'nomor_dokumen',
        'tanggal_terbit',
        'nomor_revisi',
        'total_bayaran',
        'file_dokumen',
        'posisi',
        'status',
        'kode_id',
        'user_id',
        'budget_id',
        'back_up_template',
        'role_id',
        'divisi_id',
        'perusahaan_id',
        'nama_rek',
        'no_invoice'
    ];

    public function pajak(){
        return $this->hasMany(SuratHasPajak::class,'surat_id');
    }

    public function groupItem(){
        return $this->hasMany(GroupItem::class,'surat_id');
    }

    public function peminta(){
        return $this->belongsTo(User::class,'user_id')->withDefault([
            'name'=>'User Deleted'
        ]);
    }

    // public function budget(){
    //     return $this->belongsTo(Budget::class,'budget_id');
    // }

    public function posisiSurat(){
        return $this->belongsTo(User::class,'posisi')->withDefault([
            'name'=>'User Deleted'
        ]);
    }
    public function suratSignature(){
        return $this->hasMany(SuratHasTtd::class,'surat_id');
    }

    public function notification(){
        return $this->morphMany(Notification::class,'surat','model_type','model_id')
            ->where('to',auth()->user()->id)
            ->where('status','0');
    }

    public function getTanggalAttribute(){
        //return carbon tanggal_terbit
        return \Carbon\Carbon::parse($this->tanggal_terbit);
    }

    public function scopeFilter($query,$request){
        if ($request->pemohon != "") {
            $query->whereHas('peminta',function($query)use($request){
                $query->where('name','like','%'.$request->pemohon.'%');
            });
        }
        if ($request->nomor != "") {
            $query->where('tmp_nomor_surat','like','%'.$request->nomor.'%');
        }
        if($request->status != ""){
            $query->where('surat_permintaans.status', $request->status);
        }
        if ($request->dari_tanggal != "" && $request->sampai_tanggal != "") {
            $query->whereBetween('surat_permintaans.tanggal_terbit',[$request->dari_tanggal,$request->sampai_tanggal]);
        }
        if ($request->nominal != "" && $request->nominal != "") {
            $query->whereHas('groupItem',function($wgi)use($request){
                $wgi->where('total_bayaran','=',(int)str_replace(',','',str_replace('.','',$request->nominal)));
            });
        }
        if ($request->cari != "") {
            $query->where(function($ws)use($request){
                $ws->where('perihal','like','%'.$request->cari.'%')
                ->orWhere('tmp_nomor_surat','like','%'.$request->cari.'%')
                ->orWhere('status','like','%'.$request->cari.'%')
                ->orWhereHas('peminta',function($query)use($request){
                    $query->where('name','like','%'.$request->cari.'%');
                })->orWhereHas('groupItem',function($wgi)use($request){
                    $wgi->where('total_bayaran','like','%'.$request->cari.'%')
                    ->orWhereHas('item',function($wi)use($request){
                        $wi->where('label','like','%'.$request->cari.'%')
                        ->orWhere('keterangan','like','%'.$request->cari.'%')
                        ->orWhereHas('bank',function($wb)use($request){
                            $wb->where('nama_bank','like','%'.$request->cari.'%');
                        });
                    });
                });
            });
        }

        if ($request->divisi_id != "") {
            $query->where('divisi_id',$request->divisi_id);
        }
        if (request()->perusahaan_id != "") {
            $query->where('perusahaan_id', request()->perusahaan_id);
        }
        return $query;
    }

    public function divisi(){
        return $this->belongsTo(Divisi::class,'divisi_id')->withDefault([
            'name' => 'Data Divisi Di Hapus',
            'kode_divisi' => 'Data Divisi Di Hapus',
        ]);
    }

    public function role(){
        return $this->belongsTo(Roles::class,'role_id')->withDefault([
            'name' => 'Data Role Di Hapus',
        ]);
    }

    public function bank(){
        return $this->belongsTo(Bank::class,'bank_id')->withDefault([
            'name' => 'Data Bank Di Hapus',
        ]);
    }

    public function getTotalAttribute()
    {
        $total = 0;
        foreach ($this->groupItem as $key => $value) {
            $total += $value->total;
        }
        return $total;
    }

    public function getNomorSuratFormatAttribute()
    {   
        $generator = new Generator;
        return sprintf('%03d',$this->nomor_surat)."/".$this->perusahaan->kode_perusahaan."/".$this->divisi->kode_divisi."/SPD/".$generator->monthToRoman($this->tanggal->format('m'))."/".$this->tanggal->format('Y');
    }

    public function getAllBudgetAttribute()
    {
        $budget = [];
        foreach ($this->groupItem as $_ => $group) {
            foreach ($group->item as $_1 => $value) {
                $budget[] = $value->budget->kode_budget;
            }
        }
        return implode(', ',$budget);
    }

    public function pembayarans()
    {
        return $this->hasMany(Pembayaran::class,'surat_permintaan_id');
    }

    function perusahaan()
    {
        return $this->belongsTo(Perusahaan::class,'perusahaan_id')->withDefault([
            'id'=>0,
            'name'=>'Data Perusahaan Di Hapus',
            'kode_perusahaan'=>'OO'
        ]);
    }

    public function getTotalSisaAttribute()
    {
        return $this->total - $this->pembayarans->sum('total_pembayaran');
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]