<?php

namespace App\Listeners\Admin;

use App\Events\Admin\ChangeCompanyStatusEvent;
use App\Models\Company;
use App\Models\Search;
use App\Models\Worker;

class UpdateSearchByCompanyStatusListener
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle(ChangeCompanyStatusEvent $event)
    {
        $company = Company::where('id', $event->company_id)
            ->first();

        $new_service_charge = $company->service_charge;
        $is_banned = $event->company_status == "true" ? true : false;
        $worker_list = [];
        $final_list = [];

        $final_search_data = [
            'status' => ($is_banned) ? "Haulted" : "Available",
        ];

        $worker_list = Worker::select('workers.id')
            ->join('company_users', 'company_users.worker_id', 'workers.id')
            ->where('is_account_disabled', 'false')
            ->where('company_users.company_id', $company->id)
            ->get()
            ->toArray();

        foreach ($worker_list as $worker) {
            array_push($final_list, $worker['id']);
        }

        $searches = Search::whereIn('status', ['Available', 'Haulted'])
            ->whereIn('worker_id', $final_list)
            ->update($final_search_data);
    }
}
