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

Backend Validation Kuralları

Announcements / Events / Achievements (SchoolContent)

title:          required, string, min:2, max:255
text:           required, string, min:150, max:1000
sort:           nullable, integer, min:0, max:100
                (Achievements: min:1 — 0 geçersiz!)
starts_on:      nullable|required (Events'te required)
ends_on:        required (Announcements'ta)
is_active:      boolean
school_ids:     nullable, array
school_ids.*:   required, integer

per_page:       integer, min:1, max:100
page:           integer, min:1
sort param:     in:[allowed sort fields]
includes:       array, in:[allowed includes]

Kritik: sort alanı için:

  • Announcements/Events: min:0 (sıfır geçerli)
  • Achievements: min:1 (sıfır geçersiz — backend bug’dan sonra düzeltildi)

Schools

filter[status]:    in:1,2,3,4
filter[trashed]:   in:with,only

Article Comments

article_id:     required, integer
commenter_name: required, string
commenter_email:required, email
comment:        required, string
status:         nullable, in:0,1

School Comments

school_id:          required, integer
commenter_name:     required, string
commenter_email:    required, email
comment:            required, string
comment_negative:   nullable, string
status:             nullable, boolean
filter[comment_rate]: in:1,2,3,4,5 (SchoolCommentRateType enum)
filter[date_range][min]: date format Y-m-d
filter[date_range][end]: date format Y-m-d  ← end, max DEĞİL

Sales Campaigns

code:               required, string, min:2, max:255, unique
name:               required, string, min:2, max:255
type:               required, enum(SalesCampaignType)
status:             required, enum(SalesCampaignStatusType)
start_date:         required, date, before_or_equal:end_date
end_date:           required, date, after_or_equal:start_date
discount_rate:      nullable, numeric, min:0, max:100
initial_months:     conditional (type bazlı)
school_type_id:     nullable, integer
user_id:            nullable, integer

initial_months ve discount_ratetype değerine göre required/prohibited:

  • x_months_y_pay tipi → initial_months required
  • percentage tipi → discount_rate required

Users

name:               required, string
email:              required, email, unique
username:           required, string, unique
password:           required on create, confirmed
user_type_id:       required, integer
is_active:          boolean
is_member:          boolean