'datetime', 'tanggal_selesai' => 'datetime', 'tanggal_pembayaran' => 'datetime', ]; protected $dates = [ 'tanggal_mulai', 'tanggal_selesai', 'tanggal_pembayaran', 'deleted_at' ]; // Relasi dengan User public function user() { return $this->belongsTo(User::class); } // Relasi dengan Paket public function paket() { return $this->belongsTo(Paket::class); } // Relasi dengan PaketOngkirKota public function kota() { return $this->belongsTo(PaketOngkirKota::class, 'kota_id'); } public function chats() { return $this->hasMany(Chat::class); } // Accessor untuk status yang lebih mudah dibaca public function getStatusLabelAttribute() { return match($this->status) { 'pending' => 'Menunggu Konfirmasi', 'disetujui' => 'Disetujui', 'ditolak' => 'Ditolak', 'selesai' => 'Selesai', 'dibatalkan' => 'Dibatalkan', default => ucfirst($this->status) }; } // Accessor untuk total durasi sewa dalam hari public function getDurasiSewaAttribute() { return $this->tanggal_mulai->diffInDays($this->tanggal_selesai) + 1; } // Scope untuk mencari sewa berdasarkan status public function scopeStatus($query, $status) { return $query->where('status', $status); } // Scope untuk sewa yang aktif public function scopeAktif($query) { return $query->whereIn('status', ['disetujui']) ->where('tanggal_selesai', '>=', now()); } // Scope untuk riwayat sewa public function scopeRiwayat($query) { return $query->whereIn('status', ['selesai', 'dibatalkan', 'ditolak']) ->orWhere('tanggal_selesai', '<', now()); } }