Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Domain
CRM Duyuru ve Etkinlik Modeli
Paylaşılan Tip
Announcement TypeScript tipi hem duyurular hem etkinlikler için kullanılır. Ayrı bir Event tipi yoktur. type alanı ikisini ayırt eder:
- Duyurular:
type = 'announcement'(veya boş/varsayılan) - Etkinlikler:
type = 'event'
Announcement Alanları
interface Announcement {
id: number;
title: string;
text: string;
type: string; // 'announcement' veya 'event'
created_by: number;
sort: number;
starts_on: string | null; // Duyurularda opsiyonel, etkinliklerde ZORUNLU
ends_on: string; // Duyurularda var, etkinliklerde YOK
is_active: boolean;
user?: User;
creator?: User;
schools?: School[];
content_schools?: SchoolAnnouncement[];
published_home_page_school?: SchoolAnnouncement | null;
announcementMedia?: Media;
eventMedias?: Media[]; // Etkinliklerde birden fazla media
media?: Media;
}FormValues Farkları
AnnouncementFormValues:
starts_on?: string | null— opsiyonelends_on: string— zorunlutemp_media_urls?: string[] | null
EventFormValues:
starts_on: string— zorunlu (announcement’tan farklı)ends_onalanı yoktemp_media_urls?: string[] | null
Endpoint Farkı
- Duyurular:
/admin/school-content/announcements - Etkinlikler:
/admin/school-content/events
Media Farkı
| Duyurular | Etkinlikler | |
|---|---|---|
| MediaType | ANNOUNCEMENTS | ANNOUNCEMENT_EVENTS |
| MediaRoleId | ANNOUNCEMENT_CONTENT (11) | EVENTS_ANNOUNCEMENT (18) |
| Media alanı | announcementMedia (tekil) | eventMedias (çoğul, array) |
Etkinlikler galeri destekler (@dnd-kit ile drag-drop sıralama).
SchoolAnnouncement (Pivot)
interface SchoolAnnouncement {
id: number;
school_id: number;
announcement_id: number;
show_home_page: boolean | number; // okul bazlı anasayfa gösterimi
announcement_type: string;
}AnnouncementService.updateShowHomePage(id, schoolId, showHomePage) → bu pivot kaydını günceller.
getById Include’ları
- Duyurular:
includes[]=creator&includes[]=schools&includes[]=contentSchools - Etkinlikler:
includes[]=creator&includes[]=schools&includes[]=contentSchools&includes[]=eventMedias
Permission’lar (Paylaşılan)
Her ikisi de aynı permission’ları kullanır:
add-announcementedit-announcementdelete-announcement
Related
- media-yukleme-akisi — MediaType ve MediaRoleId detayları
- okul-entity — School relations ve SchoolAnnouncement pivot