From ab6ee95d643d7e7e541a2e431f838b3ff4671b2f Mon Sep 17 00:00:00 2001 From: Afiq Hamzah Date: Wed, 5 Jun 2024 16:04:39 +0800 Subject: [PATCH] Implement seeders instead of seeding using migrations, log whatasapp message --- app/Http/Controllers/SettingController.php | 25 ++++--- .../WhatsappUnsoldCommodityNotification.php | 24 +++++-- ...024_05_27_093206_create_settings_table.php | 4 ++ .../UnsoldCommodityNotificationPICSeeders.php | 70 +++++++++++++++++++ ...dCommodityNotificationSettingsSeeders.php} | 23 ++---- 5 files changed, 114 insertions(+), 32 deletions(-) create mode 100644 database/seeds/UnsoldCommodityNotificationPICSeeders.php rename database/{migrations/2024_05_27_093207_add_unsold_commodities_settings.php => seeds/UnsoldCommodityNotificationSettingsSeeders.php} (86%) diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 58a58bd..d743cea 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -104,19 +104,22 @@ class SettingController extends Controller // flushed the fail job in queueu Artisan::call('queue:flush'); - $getClassNameString = function($className){ - $ola = explode("\\", $className); - return end($ola); + $getClassNameString = function ($className) { + $name = explode("\\", $className); + return end($name); }; - DB::connection('mysql7') - ->table('jobs') - ->where('payload', 'like', '%' . $getClassNameString(WhatsappUnsoldCommodityNotification::class) . '%') - ->delete(); + $commodityNotificationClasses = [ + WhatsappUnsoldCommodityNotification::class, + WhatsappUnsoldCommodityScanner::class, + ]; - DB::connection('mysql7') - ->table('jobs') - ->where('payload', 'like', '%' . $getClassNameString(WhatsappUnsoldCommodityScanner::class) . '%') - ->delete(); + + foreach ($commodityNotificationClasses as $class) { + DB::connection('mysql7') + ->table('jobs') + ->where('payload', 'like', '%' . $getClassNameString($class) . '%') + ->delete(); + } } } diff --git a/app/Jobs/WhatsappUnsoldCommodityNotification.php b/app/Jobs/WhatsappUnsoldCommodityNotification.php index cabd941..d218ae6 100644 --- a/app/Jobs/WhatsappUnsoldCommodityNotification.php +++ b/app/Jobs/WhatsappUnsoldCommodityNotification.php @@ -2,6 +2,7 @@ namespace App\Jobs; +use App\BlastWasap; use Illuminate\Support\Facades\Http; use App\Setting; use Carbon\Carbon; @@ -64,20 +65,35 @@ class WhatsappUnsoldCommodityNotification extends Job return false; } - // if (!$isKomoditiStillAvailable) { - // return false; - // } + if (!$isKomoditiStillAvailable) { + return false; + } foreach ($phone_numbers as $phone_number) { - Http::get(env('WABOT_API'), [ + $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'; + $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(5))); } diff --git a/database/migrations/2024_05_27_093206_create_settings_table.php b/database/migrations/2024_05_27_093206_create_settings_table.php index 62b182b..c836094 100644 --- a/database/migrations/2024_05_27_093206_create_settings_table.php +++ b/database/migrations/2024_05_27_093206_create_settings_table.php @@ -21,6 +21,10 @@ class CreateSettingsTable extends Migration $table->text('description')->nullable(); $table->timestamps(); }); + + // Call the seeder + (new UnsoldCommodityNotificationSettingSeeders())->run(); + (new UnsoldCommodityNotificationPICSeeders())->run(); } /** diff --git a/database/seeds/UnsoldCommodityNotificationPICSeeders.php b/database/seeds/UnsoldCommodityNotificationPICSeeders.php new file mode 100644 index 0000000..35e45ea --- /dev/null +++ b/database/seeds/UnsoldCommodityNotificationPICSeeders.php @@ -0,0 +1,70 @@ + [ + [ + 'id' => 366, // nurasiah@pkb.net.my + 'no_telefon' => '0123456789', + ] + ], + 'pic_monday' => [ + [ + 'id' => 343, // syada@pkb.net.my + 'no_telefon' => '0139403344', + ], + [ + 'id' => 54, // shahmin@pkb.net.my + 'no_telefon' => '0196438873', + ] + ], + 'pic_tuesday' => [ + [ + 'id' => 55, // manita@pkb.net.my + 'no_telefon' => '0179545432', + ] + ], + 'pic_wednesday' => [ + [ + 'id' => 52, // izzudin@pkb.net.my + 'no_telefon' => '0199011095', + ] + ], + 'pic_thursday' => [ + [ + 'id' => 53, // norosmini@pkb.net.my + 'no_telefon' => '0129493588', + ], + [ + 'id' => 56, // rozarina@pkb.net.my + 'no_telefon' => '0129616201', + ], + ], + 'pic_friday' => [[]], + 'pic_saturday' => [[]], + ]; + + $transformed_data = array_map(function($pic){ + return json_encode($pic); + }, $data_pic); + + $outputs = array_combine(array_keys($data_pic), $transformed_data); + + foreach ($outputs as $key => $data) { + Setting::where('group', 'unsold_commodity_notifications') + ->where('key', $key) + ->update(['value' => $data]); + } + } +} diff --git a/database/migrations/2024_05_27_093207_add_unsold_commodities_settings.php b/database/seeds/UnsoldCommodityNotificationSettingsSeeders.php similarity index 86% rename from database/migrations/2024_05_27_093207_add_unsold_commodities_settings.php rename to database/seeds/UnsoldCommodityNotificationSettingsSeeders.php index 70c983d..f284669 100644 --- a/database/migrations/2024_05_27_093207_add_unsold_commodities_settings.php +++ b/database/seeds/UnsoldCommodityNotificationSettingsSeeders.php @@ -1,22 +1,21 @@ 'status', - 'value' => 'true', + 'value' => '1', 'group' => 'unsold_commodity_notifications', 'description' => 'Turn on or turn off notification for unsold commodity notifications', ], @@ -83,18 +82,8 @@ class AddUnsoldCommoditiesSettings extends Migration ]; - array_walk($data, function($setting){ + array_walk($data, function ($setting) { Setting::create($setting); }); } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('settings'); - } }