<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class KeranjangItem extends Model
{
    protected $table = 'keranjang_items';
    
    protected $fillable = ['id_users', 'id_produk', 'produk_varian_id', 'jumlah'];
    
    public function user()
    {
        return $this->belongsTo(User::class, 'id_users');
    }
    
    // Relasi ke produk (untuk backward compatibility)
    public function produk()
    {
        return $this->belongsTo(Produk::class, 'id_produk');
    }
    
    // Relasi ke varian (untuk sistem baru)
    public function varian()
    {
        return $this->belongsTo(ProdukVarian::class, 'produk_varian_id');
    }
    
    // Ambil harga (prioritaskan dari varian jika ada)
    public function getHargaAttribute()
    {
        if ($this->varian) {
            return $this->varian->harga;
        }
        
        // Fallback ke produk (tapi produk tidak punya harga)
        return $this->produk->varians->first()->harga ?? 0;
    }
    
    // Ambil stok (prioritaskan dari varian)
    public function getStokAttribute()
    {
        if ($this->varian) {
            return $this->varian->stok;
        }
        
        return $this->produk->varians->first()->stok ?? 0;
    }
    
    // Ambil data produk yang benar
    public function getDataProdukAttribute()
    {
        if ($this->varian) {
            return $this->varian->produk;
        }
        
        return $this->produk;
    }
    
    // Nama produk
    public function getNamaProdukAttribute()
    {
        return $this->data_produk->nama;
    }
    
    // Info varian
    public function getInfoVarianAttribute()
    {
        if ($this->varian) {
            return "{$this->varian->ukuran} / {$this->varian->warna}";
        }
        
        // Coba ambil varian pertama dari produk
        $firstVarian = $this->produk->varians->first();
        if ($firstVarian) {
            return "{$firstVarian->ukuran} / {$firstVarian->warna}";
        }
        
        return 'Standar';
    }
}