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

CRM Makale Modeli

Article Entity

interface Article {
    id: number;
    title: string;
    slug: string;
    long_title: string;
    intro: string;
    body: string;          // HTML içerik (Jodit/TipTap editörden)
    show_home_page: string;
    show_on_related: string;
    sorting: string;
    view_count: number;
    is_helpfull: string;
    user_id: number;
    category_id: number;
    school_type_id: number;
    location_id: number;
    created_at: string;
    updated_at: string;
    deleted_at: string | null;
    // Relations
    category?: ArticleCategory;
    location?: Location;
    user?: User;           // Yazar
    schoolType?: SchoolType;
}

ArticleFormValues

interface ArticleFormValues {
    title: string;
    slug?: string;          // otomatik slugify veya manuel
    long_title: string;
    intro: string;
    body: string;
    category_id: number;
    school_type_id?: number | null;
    location_id?: number | null;
    user_id?: number | null;  // Yazar atama
}

getById Include Farkı

  • List endpoint: includes[]=category (köşeli parantez, çoğul)
  • Show endpoint: include[]=category&include[]=user (tekil — BE tutarsızlığı)

ArticleCategory

interface ArticleCategory {
    id: number;
    name: string;
    slug: string;
    description: string;
    deleted_at?: string | null;
}

Slug Oluşturma

Form’da slugify() ile Türkçe karakterler ASCII’ye çevrilir. Kullanıcı manuel override edebilir.

Article MediaType/RoleId

  • Kapak: MediaType.ARTICLES, MediaRoleId.ARTICLE_COVER (1)
  • İçerik görseli: MediaType.ARTICLES, MediaRoleId.ARTICLE_CONTENT (2)

ArticleComment

interface ArticleComment {
    article_id: number;
    user_id: number;
    user_type_id: number;
    commenter_name: string;
    commenter_email: string;
    comment: string;
    status: string;        // "0", "1", "2" gibi string değerler
    approved_by: number;
    approved_at: string | null;
}

status değerleri: “0” = Bekliyor, “1” = Onaylandı, “2” = Reddedildi (muhtemelen — API’den kontrol et)

ArticleCommentService Özel Metotlar

  • approve(id)PATCH /<id>/approve
  • reject(id)PATCH /<id>/reject