Proje: Okul Platform · Hub: Okul Platform — Conventions

Resource Katmanı

Laravel API Resources — Model → JSON dönüşümü.

app/Http/Resources/
├── Admin/
│   ├── School/
│   │   ├── SchoolResource.php          — Ana okul resource
│   │   ├── SchoolListResource.php      — Liste için slim resource
│   │   ├── SchoolChurnRiskyResource.php
│   │   └── Relations/                  — İlişkili veriler
│   │       ├── SchoolActivityResource
│   │       ├── SchoolContactResource
│   │       ├── SchoolFacilityResource
│   │       ├── SchoolFeatureResource
│   │       ├── SchoolFeeResource
│   │       ├── SchoolLearningLanguageResource
│   │       ├── SchoolLocationResource
│   │       ├── SchoolQuestionAnswerResource
│   │       ├── SchoolServiceResource
│   │       ├── SchoolShiftResource
│   │       └── SchoolTagResource
│   └── College/, HighSchoolResource, KindergartenResource, ...
├── Customer/
├── General/
│   └── Search/SearchResource.php
├── User/
│   ├── UserResource.php
│   ├── UserDetailResource.php
│   ├── UserTypeResource.php
│   ├── RoleResource.php
│   └── PermissionResource.php
├── GenericResource.php
├── MediaResource.php
└── SchoolCommentResource.php

UserResource Alanları

{
  "id": 1,
  "name": "Furkan Namlı",
  "first_name": "Furkan",
  "last_name": "Namlı",
  "email": "...",
  "username": "...",
  "user_type_id": 2,
  "user_detail": {...},    // whenLoaded
  "user_type": {...},      // whenLoaded
  "roles": [...],          // whenLoaded (admin için)
  "permissions": [...]     // whenLoaded (admin için)
}

whenLoaded Pattern

'roles' => RoleResource::collection($this->whenLoaded('roles'))

Eager load edilmemişse dahil edilmez → ?include=roles ile alınabilir.