user_id = $user_id; $this->user_kodcaw = $user_kodcaw; $this->lelong_id = $lelong_id; $this->onQueue('default'); } public function handle(WhatsAppCloudService $whatsapp) { if (! $whatsapp->isEnabled()) { Log::warning('WhatsappNotisLelongFasa2 skipped: WhatsApp Cloud API not enabled.'); return; } $caw = Cawangan::where('caw_code', $this->user_kodcaw)->first(); if (! $caw) { Log::error('WhatsappNotisLelongFasa2: cawangan not found', ['kodcaw' => $this->user_kodcaw]); return; } $lel = Lelong::find($this->lelong_id); if (! $lel) { Log::error('WhatsappNotisLelongFasa2: lelong not found', ['lelong_id' => $this->lelong_id]); return; } $arraynorujukan = LelongBid::where('lelong_id', $this->lelong_id) ->where('kodcaw', $caw->caw_code) ->pluck('norujukan'); $gadaiAll = Gadai::on($caw->caw_code) ->whereIn('norujukan', $arraynorujukan) ->orderBy('nokp', 'asc') ->orderBy('norujukan', 'asc') ->get(); $customers = Customer::whereIn('kpbaru', $gadaiAll->pluck('nokp')) ->orWhereIn('kplama', $gadaiAll->pluck('nokp')) ->select('id', 'kpbaru', 'kplama', 'nama', 'telefon') ->get(); $customersByKp = $customers->keyBy(function ($item) { if ($item->kpbaru != '') { return $item->kpbaru; } if ($item->kplama != '') { return $item->kplama; } }); $tarikhLelong = Carbon::parse($lel->tarikh_lelong)->format('d-m-Y'); $tarikhSebelum = Carbon::parse($lel->tarikh_lelong)->subDays(3)->format('d-m-Y'); $template = config('whatsapp.jana_notis_template'); $lang = config('whatsapp.jana_notis_template_lang'); foreach ($gadaiAll as $suratnotis) { if (! isset($customersByKp[$suratnotis->nokp])) { continue; } $customer = $customersByKp[$suratnotis->nokp]; $recipient = $whatsapp->resolveRecipient($customer->telefon); if (! $recipient) { Log::warning('WhatsappNotisLelongFasa2: invalid phone', [ 'nokp' => $suratnotis->nokp, 'norujukan' => $suratnotis->norujukan, ]); continue; } $jumlah = $this->resolveJanaNotisJumlah($caw->caw_code, $this->lelong_id, $suratnotis); if ($jumlah === null) { Log::warning('WhatsappNotisLelongFasa2: skip send, jumlah unavailable', [ 'norujukan' => $suratnotis->norujukan, ]); continue; } if (empty($caw->notel)) { Log::warning('WhatsappNotisLelongFasa2: skip send, cawangan phone missing', [ 'kodcaw' => $caw->caw_code, 'norujukan' => $suratnotis->norujukan, ]); continue; } // {{1}} nama, {{2}} norujukan, {{3}} jumlah, {{4}} tarikh lelong, // {{5}} tarikh akhir bayaran, {{6}} telefon cawangan, {{7}} cawangan $bodyParams = [ $customer->nama, $suratnotis->norujukan, $jumlah, $tarikhLelong, $tarikhSebelum, $caw->notel, $caw->caw_name, ]; $whatsapp->sendTemplate($recipient, $template, $bodyParams, $lang); usleep(300000); } } }