Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Conventions
CRM Yardımcı Fonksiyonlar
formatDate (src/utils/formatDate.ts)
formatDate(dateString: string): string → "DD/MM/YYYY"- ISO string’i
DD/MM/YYYYformatına çevirir - Geçersiz tarih (
-000001-...) → boş string döner - NaN tarih → boş string
GenericListPagebunu otomatik uygular (isDateString()ile tespit)
slugify (src/utils/slugify.ts)
slugify(text: string): stringTürkçe karakterleri ASCII’ye çevirir:
- ç→c, ğ→g, ı→i, İ→i, ö→o, ş→s, ü→u
- Lowercase, spaces→hyphens, özel karakterler temizlenir
apiHelpers (src/utils/apiHelpers.ts)
isApiSuccess(response) → HTTP 200-299 kontrolü
isApiSuccessWithData(response) → 200-299 + response.data.data varlığı
isApiSuccessWithToken(response) → 200-299 + access_token varlığı
hasSuccessFlag(response) → @deprecated, legacy compatEn sık kullanılan: isApiSuccessWithData — liste sayfalarında if (response.data?.data) yerine kullanılır.
errorLogger (src/utils/errorLogger.ts)
errorLogger.log(error, tag, severity, context)getErrorMessage(error: unknown): string — Axios hata nesnesinden kullanıcıya gösterilecek mesajı çıkarır:
response.data.errors→ ilk validation hatasıresponse.data.message→ genel mesajerror.message→ JS Error mesajı- Fallback: “Bir hata oluştu.”
decodeHtmlEntities (inline helper)
Edit sayfalarında API’den gelen HTML entity’li metinleri decode etmek için:
const decodeHtmlEntities = (text: string | null | undefined): string => {
if (!text) return "";
const textarea = document.createElement('textarea');
textarea.innerHTML = text;
return textarea.value;
};Her edit sayfasında yeniden tanımlanıyor — merkezi export yok.
API Response Pattern
Başarılı listeleme:
response.data.data → T[] (array)
response.data.meta → { total, per_page, current_page, last_page }Başarılı tekli kayıt:
response.data.data → T (obje)Related
- servis-katmani — getWithParams ve api helpers kullanımı
- liste-sayfasi-pattern — buildApiParams ve response handling