%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/camillo/camillo-api-master/app/Jobs/
Upload File :
Create Path :
Current File : /var/www/html/camillo/camillo-api-master/app/Jobs/MissedCallsTracker.php

<?php

namespace App\Jobs;

use App\Models\Individual;
use App\Models\Notice;
use App\Scopes\IndividualScope;
use App\Services\HookService;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

class MissedCallsTracker implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     */
    public function __construct()
    {

    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
       //deve girare ogni minuto
        $now = date("Y-m-d H:i:s");
        $seconds = env('XCALLY_TIMEOUT', 150);
        $hours = floor($seconds / 3600);
        $mins = floor($seconds / 60 % 60);
        $secs = floor($seconds % 60);
        $delay = sprintf('%02d:%02d:%02d', $hours, $mins, $secs);
          $missedCalls = DB::select("
            select *
            from notices 
            where status = 'underway'
            and AddTime(scheduled_at, '$delay') <= '$now'
            ");


        $collection = collect($missedCalls);

        foreach($collection as $notice){
            $ids = [
                $notice->id,
                $notice->minor_id,
                $notice->institute_id,
                $notice->classroom_id,
                $notice->schoolyear_id,
                $notice->user_id];
            $alert_id = implode("_",$ids);

            $individual = Individual::withoutGlobalScope(IndividualScope::class)->find($notice->individual_id);

            $payload = [
                "name" => $individual->name,
                "surname" => $individual->surname,
                "phone" => $individual->mobile,
                "alert_id" => $alert_id,
                "result" => false,
            ];

            Log::channel('database')->info("{$notice->minor_id}: Chiamata d'emergenza in timeout per ". $individual->mobile);
            $hookService = (new HookService($payload));
            $hookService->handle();

        }
    }
}

Zerion Mini Shell 1.0