%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Http/Resources/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Http/Resources/ClassroomMinorsCollection.php |
<?php namespace App\Http\Resources; use App\Models\Classroom; use App\Models\Event; use App\Models\Minor; use Illuminate\Http\Resources\Json\ResourceCollection; //CALLED by MinorController@indexByClassroom class ClassroomMinorsCollection extends ResourceCollection { private $classroom; /** * Create a new resource instance. * * @param mixed $resource * @param Classroom $classroom * @internal param $classroom_id */ public function __construct($resource, Classroom $classroom) { parent::__construct($resource); $this->resource = $resource; $this->classroom = $classroom; } /** * Transform the resource collection into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { $data = $this->collection->map(function($minor){ $status = $minor->status($this->classroom); $dataSent = [ "id" => $minor->id, "name" => $minor->name, "surname" => $minor->surname, "time_limit" => $minor->dynamicArrivalTime($this->classroom), "classroom" => $this->classroom, "tutors" => $minor->individuals, "status" => $status["status"], "status_description" => $status["description"], "status_color" => $status["color"], "status_weight" => $status["weight"], ]; if(in_array($dataSent["status_description"], ["minor_in_class", "qr_left", "qr_arrived", "minor_left_class"])){ $dataSent["status_time"] = $status["time"]; } return $dataSent; }); $total = $data->count(); $grouped_data = $data->groupBy('status_description'); $count = $grouped_data->map(function ($item, $key) { return collect($item)->count(); }); $count = $count->toArray(); $count["total"] = $total; return [ 'data' => $data->all(), 'count' => $count ]; } }