recalculate() metodunun Cart model'de bulunmamasıModules/Shop/app/Http/Livewire/Front/AddToCartButton.php
Ürün detay sayfasında "Sepete Ekle" butonunu yönetir. ShopCartBridge ve CartService servislerini kullanarak ürünü sepete ekler.
Durum: Çalışıyor - Kod mantığı doğru
Modules/Shop/app/Services/ShopCartBridge.php
Shop ve Cart modülleri arasında köprü görevi görür. Ürün bilgilerini (title, image, price, tax) sepet formatına dönüştürür.
Durum: Sorunlu - Media collection adı hatalı
Modules/Cart/app/Services/CartService.php
Sepet işlemlerini yönetir: findOrCreateCart, addItem, updateItemQuantity. Polymorphic yapıda farklı ürün tiplerini destekler.
Durum: Çalışıyor - Kod mantığı doğru
Modules/Cart/app/Http/Livewire/Front/CartPage.php
Sepet sayfasını yönetir. Ürün miktar güncelleme, silme işlemlerini yapar.
Durum: Kritik Hata - recalculate() metod çağrısı hatalı
Modules/Cart/app/Http/Livewire/Front/CartPage.php:61
CartPage'de $this->cart->recalculate() çağrılıyor ancak Cart model'de bu metod yok. Doğru metod: recalculateTotals()
Sorun: Kullanıcı sepette miktar güncellediğinde hata alır, sepet toplam hesaplaması çalışmaz.
Modules/Shop/app/Services/ShopCartBridge.php:85
Şu an getFirstMediaUrl('main') çağrılıyor. ShopProduct model'inde media collection adı 'featured_image'.
Sorun: Sepete eklenen ürünlerin görselleri görünmüyor, placeholder icon gösteriliyor.
Farklı bileşenler farklı event isimleri kullanıyor:
- AddToCartButton: cartUpdated (Livewire) + cart-updated (Browser)
- CartWidget: cartUpdated (Livewire listener)
- CartPage: cart-updated, cart-item-removed, cart-error (Browser)
Öneri: Tüm bileşenlerde tutarlı isimlendirme kullanılmalı. Livewire eventleri için camelCase, browser eventleri için kebab-case.
Modules/Cart/app/Models/CartItem.php
CartItem model'de item_title ve item_image alanları var ve CartService bunları dolduruyor. Ancak view'da $item->item_name accessor'ı kullanılıyor ki bu polymorphic ilişki üzerinden çalışıyor.
Öneri: Tutarlılık için ya accessor kullanımı ya da direkt field kullanımı tercih edilmeli. Performans için direkt field kullanımı önerilir.
Cart sistemi morphTo ilişki kullanıyor. Bu sayede sadece ShopProduct değil, gelecekte Subscription, Service gibi farklı ürün tipleri de sepete eklenebilir.
Shop ve Cart modülleri arasındaki köprü servisi iyi tasarlanmış. Stok kontrolü, fiyat hesaplama, vergi bilgisi gibi işlemler merkezi bir yerden yönetiliyor.
CartService'de CurrencyConversionService entegrasyonu var. USD/EUR ürünler otomatik TRY'ye çevriliyor.
Misafir kullanıcılar session bazlı, üye kullanıcılar customer_id bazlı sepet kullanıyor. Login sonrası sepetler merge ediliyor.
Bu hata sepet sayfasının çalışmasını engelliyor. Öncelikli olarak düzeltilmeli.
Görsel eksikliği kullanıcı deneyimini olumsuz etkiliyor.
İşlevselliği etkilemiyor ancak kod kalitesi ve bakımı için önemli.