Proje: OkulUp · Hub: OkulUp — Domain

Etkinlikler ve Galeri

Etkinlikler (Events)

Modeli

OpenAPI generated type’tan extend ediliyor (EventResource).

Event:
- school_id, class_id (opsiyonel — okul geneli veya sınıf bazlı)
- title, event_date, status
- confirmed_count, declined_count, maybe_count — RSVP özet
- user_rsvp: EventRsvp[] — authenticated user'ın RSVP'si

RSVP Sistemi

RsvpRequestStatus — kullanıcının gönderebileceği statüsler (backend’den) RsvpStatus — sunucu tarafında olan tüm statüsler

RSVP endpoint: POST /api/events/:id/rsvp Toplu RSVP görmek: GET /api/events/:id/rsvpsGroupedRsvpResponse (statüs bazlı gruplu)

Yetki

  • Görüntüleme + RSVP: ALL
  • Oluşturma: STAFF
  • Cover upload: expo-image-picker

Galeri

Modeli

Gallery:
- school_id, class_id, event_id (bir etkinliğe bağlanabilir)
- visibility: 'public' | 'class' | 'private'
- is_approved, approved_by, rejection_reason
- media: GalleryMedia[]

Onay Akışı

  1. STAFF galeri oluşturur → is_approved: false
  2. Admin/Manager approve veya reject eder
  3. Reddedilirse rejection_reason kaydedilir

Media

  • GalleryMedia: image veya video
  • thumbnail_url — varsa önce o, yoksa file_url
  • getMediaThumbnailUrl(media) utility fonksiyonu
  • Upload: useUploadMedia() hook, multipart/form-data

Yetki

  • Görüntüleme: ALL, gallery feature flag
  • Oluşturma: STAFF, gallery feature flag
  • Onaylama: ADMIN, gallery feature flag