Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Incidents

Semptom

Konum ekleme popup’ında (HierarchicalLocationForm) ve LocationSelector’da şehir listesi yerine tüm konumlar gelmeye başladı. İlçe seçiminde de arama düzgün çalışmıyordu.

Root Cause

API’de genel bir değişiklik yapıldı: filter[field]='' (boş string) artık “field IS NULL” anlamına gelmiyor, filter tamamen ignore ediliyor.

Yeni davranış: nulls[]=field_name parametresi gönderilmeli.

// Eski (artık çalışmıyor)
filter[parent_id]=

// Yeni (doğru)
nulls[]=parent_id

API’deki IndexLocationRequest’te HasNulls trait ile includeNulls(['parent_id']) tanımlı. nulls[] parametresi Laravel side’da WHERE parent_id IS NULL sorgusuna dönüşüyor.

Etkilenen Dosyalar

  • src/components/common/HierarchicalLocationForm.tsx — loadCities
  • src/components/common/LocationSelector.tsx — loadCities
  • src/pages/locations/page.tsx — fetchCities

Çözüm

Her üç dosyada 'filter[parent_id]': '''nulls[]': 'parent_id' olarak güncellendi.

Ek olarak: ilçe araması server-side’a taşındı (filter[name] + 300ms debounce), çünkü per-page: 1000 API tarafından limitleniyor ve tüm ilçeler gelmiyor olabiliyordu.

Dikkat: Diğer Entiteler

Bu değişiklik API genelinde geçerli. filter[herhangi_alan]='' ile null filtresi yapılan tüm yerler kontrol edilmeli. Pattern:

// NULL filtresi için artık şunu kullan:
'nulls[]': 'alan_adi'
 
// Diğer entity'lerin request'lerinde de HasNulls/includeNulls varsa aynı sorun olabilir