*/ protected $fillable = [ 'periode', 'is_sync', 'is_csv', 'is_ftp', 'sync_at', 'csv_at', 'ftp_at', 'sync_notes', 'csv_notes', 'ftp_notes', 'total_records', 'success_records', 'failed_records', 'file_path', 'file_name', 'ftp_destination', ]; /** * Atribut yang harus diubah menjadi tipe native. * * @var array */ protected $casts = [ 'is_sync' => 'boolean', 'is_csv' => 'boolean', 'is_ftp' => 'boolean', 'sync_at' => 'datetime', 'csv_at' => 'datetime', 'ftp_at' => 'datetime', 'total_records' => 'integer', 'success_records' => 'integer', 'failed_records' => 'integer', ]; /** * Scope untuk mendapatkan log berdasarkan periode * * @param \Illuminate\Database\Eloquent\Builder $query * @param string $periode Format: YYYY-MM * @return \Illuminate\Database\Eloquent\Builder */ public function scopeByPeriode($query, $periode) { return $query->where('periode', $periode); } /** * Scope untuk mendapatkan log yang sudah sync * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeSynced($query) { return $query->where('is_sync', true); } /** * Scope untuk mendapatkan log yang sudah membuat CSV * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeCsvGenerated($query) { return $query->where('is_csv', true); } /** * Scope untuk mendapatkan log yang sudah upload FTP * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeFtpUploaded($query) { return $query->where('is_ftp', true); } /** * Scope untuk mendapatkan log yang belum selesai prosesnya * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeIncomplete($query) { return $query->where(function ($q) { $q->where('is_sync', false) ->orWhere('is_csv', false) ->orWhere('is_ftp', false); }); } }