<?php

namespace App\Modules\Company\Whiteboard\Project;

use App\Traits\SearchTraits;
use App\Traits\UserTraits;
use App\Models\Worker;
use Illuminate\Support\Facades\DB;

class ProjectSupervisor
{
    use SearchTraits, UserTraits;

    public function getData($payload)
    {
        // searching
        $nameSearch = $this->searchField($payload->name);

        $companyId = $this->getCurrentUser()->company_id;
        $projectSupervisors = Worker::select(
            'workers.id',
            DB::raw("CONCAT(workers.first_name,' ',workers.last_name) as name"))
            ->join('company_users', 'company_users.worker_id', '=', 'workers.id')
            ->where('company_users.company_id', $companyId)
            ->where('company_users.role_id', 3) // 3 = Supervisor
            ->where('workers.is_active', 'true')
            ->whereNotNull('workers.email_verified_at')
            ->when(!empty($nameSearch), function ($query) use ($nameSearch) {
                return $query->where(function ($query) use ($nameSearch) {
                    $query->where('workers.first_name', 'LIKE', $nameSearch . '%')
                        ->orWhere('workers.last_name', 'LIKE', $nameSearch . '%');
                });
            })
            ->get();
        return response()->json($projectSupervisors)->setStatusCode(201);
    }
}
