%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/camillo/camillo-api-master/app/Http/Resources/
Upload File :
Create Path :
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
        ];
    }
}

Zerion Mini Shell 1.0