<?php

namespace App\Listeners\Company;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use App\Models\AssignedWorkers;
use App\Models\ProjectWorkersTimesheet;
use App\Events\Company\UpdateDateOfProjectWorkerTimeSheetEvent;

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

    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle(UpdateDateOfProjectWorkerTimeSheetEvent $event)
    {
        $project_id = $event->project_id;
        $clock_in = $event->clock_in;
        $clock_out = $event->clock_out;
        $date_today = date('Y-m-d');

        $assigned_workers_data = AssignedWorkers::select(
                'assigned_workers.id',
            )
            ->where('assigned_workers.project_id', $project_id)
            ->withTrashed()
            ->get();

        foreach($assigned_workers_data as $assigned_worker_data) {
            $assigned_worker_id = $assigned_worker_data->id;
            $timesheet_data = array(
                'time_in' => date('H:i', strtotime($clock_in)),
                'time_out' => date('H:i', strtotime($clock_out)),
            );
            ProjectWorkersTimeSheet::where('project_workers_timesheet.project_worker_id', $assigned_worker_id)
                ->where('project_workers_timesheet.date', '>=', $date_today)
                ->update($timesheet_data);
        }
    }
}
