where('group', 'unsold_commodity_notifications')->get(); $status = $settings->where('key', 'status')->first()->value; $start_time = $settings->where('key', 'start_time')->first()->value; $end_time = $settings->where('key', 'end_time')->first()->value; $message = $settings->where('key', 'message')->first()->value; $latestKomoditi = KomuditiPurchase::on('mysql7')->latest()->first(); $isAllKomoditiSold = $latestKomoditi->unit_komuditi === 0.0; $isLatestKomoditiToday = $latestKomoditi->created_at->isToday(); $isWabotCredentialNotComplete = env('WABOT_API') === null || env('WABOT_INSTANCES_ID') === null || env('WABOT_TOKEN_KEYS') === null; $isNotActiveJobServer = env('ACTIVE_JOB_SERVER') !== true; $pic_key = 'pic_' . strtolower(Carbon::now()->englishDayOfWeek); $pic = json_decode($settings->where('key', $pic_key)->first()->value); $phone_numbers = array_map(function ($p) { if (isset($p->no_telefon)) { return $p->no_telefon; } }, $pic); if ($isNotActiveJobServer) { return false; } if ($isWabotCredentialNotComplete) { Log::error('Wabot credential not complete'); return false; } if ($phone_numbers[0] === NULL) { Log::error('No PIC phone numbers detected'); return false; } if ($status === '0') { Log::info('Unsold commodity notifications are turned off, no notification will be sent'); return false; } if (Carbon::parse($start_time) > Carbon::now()) { return false; } if (Carbon::parse($end_time) < Carbon::now()) { return false; } if ($isLatestKomoditiToday && $isAllKomoditiSold) { Log::info('All today komoditi is sold'); return false; } foreach ($phone_numbers as $phone_number) { $response = Http::get(env('WABOT_API'), [ 'number' => $phone_number, 'type' => 'text', 'message' => $message, 'instance_id' => env('WABOT_INSTANCES_ID'), 'access_token' => env('WABOT_TOKEN_KEYS') ]); //insert log blast wasap $logblastwasap = new BlastWasap(); $logblastwasap->kodcaw = 'OPERASI'; $logblastwasap->notelefon = $phone_number; $logblastwasap->norujukan = 'Notifikasi Komoditi Tidak Terjual. ' . 'baki : ' . KomuditiPurchase::on('mysql7')->latest()->first()->unit_komuditi; $logblastwasap->status = $response; $logblastwasap->created_at = Carbon::now(); $logblastwasap->updated_at = Carbon::now(); $logblastwasap->save(); Log::info("WABOT - Notifikasi Komoditi Tidak Terjual" . $response); } dispatch((new WhatsappUnsoldCommodityNotification($this->message))->delay(Carbon::now()->addMinutes(15))); } }