Fix multiple notifications send to PIC at one time

- fix by removing previous scheduled notifications job before updating the notification configurations
This commit is contained in:
Afiq Hamzah
2024-06-04 18:48:06 +08:00
parent 052f65307d
commit cbf6bd5f1f
7 changed files with 65 additions and 98 deletions
+24 -8
View File
@@ -4,11 +4,10 @@ namespace App\Http\Controllers;
use App\Jobs\WhatsappUnsoldCommodityNotification;
use App\Jobs\WhatsappUnsoldCommodityScanner;
use App\JobStatus;
use App\Setting;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str;
@@ -72,12 +71,14 @@ class SettingController extends Controller
->update(['value' => json_encode($value)]);
}
$this->cancelPreviousNotificationJobs();
$this->cancelPreviousCommodityNotificationsJobs();
dispatch((new WhatsappUnsoldCommodityScanner()));
return response()->json('success');
}
public function filterUniqueById($array, $key)
{
$uniqueIds = [];
@@ -97,10 +98,25 @@ class SettingController extends Controller
];
}
public function cancelPreviousNotificationJobs()
public function cancelPreviousCommodityNotificationsJobs()
{
JobStatus::on('mysql7')->where('type', WhatsappUnsoldCommodityNotification::class)->update([
'status' => false
]);
// flushed the fail job in queueu
Artisan::call('queue:flush');
$getClassNameString = function($className){
$ola = explode("\\", $className);
return end($ola);
};
DB::connection('mysql7')
->table('jobs')
->where('payload', 'like', '%' . $getClassNameString(WhatsappUnsoldCommodityNotification::class) . '%')
->delete();
DB::connection('mysql7')
->table('jobs')
->where('payload', 'like', '%' . $getClassNameString(WhatsappUnsoldCommodityScanner::class) . '%')
->delete();
}
}