diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 414b7b6..4e4f605 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -18,6 +18,9 @@ class Kernel extends ConsoleKernel // Remove non saved attachments... $schedule->call(new PruneStaleAttachments)->daily(); + + // IF any warnings unresolved warnings exists, send notify me + $schedule->call(new WarnDev)->dailyAt('16:00'); } /** diff --git a/app/Console/WarnDev.php b/app/Console/WarnDev.php new file mode 100644 index 0000000..6768e26 --- /dev/null +++ b/app/Console/WarnDev.php @@ -0,0 +1,25 @@ +get(); + + if ($warnings->isEmpty()) { + return; + } + + sendSMS('61929248', 'Warnings: '.$warnings->count()); + } +} \ No newline at end of file diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index 0089e27..df8b74d 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -3,6 +3,7 @@ use App\Models\Auth\Verification; use App\Models\Ecommerce\Channel\Channel; use App\Models\Ecommerce\Product\Inventory\Inventory; +use App\Models\System\Warning; use App\Repositories\Ecommerce\Product\Barcode\BarcodeRepository; use Illuminate\Http\Client\PendingRequest; use Illuminate\Support\Collection; @@ -388,3 +389,16 @@ function createHalkbankOrder($price = 123): array 'url' => $paymentResponse['formUrl'], ]; } + +/** + * Warn brother + */ +function warn(string $message, string $content = '', string $where = '', string $notes = ''): void +{ + Warning::forceCreate([ + 'name' => $message, + 'content' => $content, + 'where' => $where, + 'notes' => $notes, + ]); +} \ No newline at end of file diff --git a/app/Services/Order/CreateOrderService.php b/app/Services/Order/CreateOrderService.php index 6382584..79be39e 100644 --- a/app/Services/Order/CreateOrderService.php +++ b/app/Services/Order/CreateOrderService.php @@ -41,10 +41,24 @@ class CreateOrderService 'updated_at' => now(), ]); - // Update Stock + // Update Stock directly in products table, also relationship + $stock = $cart->product->stock - $cart->product_quantity; $cart->product->update([ - 'stock' => $cart->product->stock - $cart->product_quantity, + 'stock' => $stock, ]); + + $data = DB::table('inventory_product')->where('product_id', $cart->product_id)->first(); + if ($data) { + DB::table('inventory_product')->where('id', $data->id)->update([ + 'stock' => $stock, + ]); + } else { + warn('Product has no inventory record', json_encode([ + 'product_id' => $cart->product_id, + 'order_id' => $order->id, + ])); + } + }); // 3. Clear User Cart diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a2c86b2..a484cda 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,6 +13,7 @@ use Database\Seeders\New\ProductPricesSeeder; use Database\Seeders\New\ProductPropertiesSeeder; use Database\Seeders\New\ProductPropertyValuesSeeder; use Database\Seeders\New\ProductsTableSeeder; +use Database\Seeders\New\ProductStocksSeeder; use Database\Seeders\New\PropertiesTableSeeder; use Database\Seeders\New\SectionsSeeder; use Database\Seeders\New\SellersTableSeeder; @@ -44,6 +45,7 @@ class DatabaseSeeder extends Seeder // ProductBarcodesSeeder::class, // ProductPropertiesSeeder::class, // ProductPropertyValuesSeeder::class, + ProductStocksSeeder::class, ]); } } diff --git a/database/seeders/new/ProductStocksSeeder.php b/database/seeders/new/ProductStocksSeeder.php new file mode 100644 index 0000000..8134ead --- /dev/null +++ b/database/seeders/new/ProductStocksSeeder.php @@ -0,0 +1,34 @@ +truncate(); + + // $items = Items::fromFile( + // database_path('data/items.json'), + // ['decoder' => new ExtJsonDecoder(true)] + // ); + + // foreach ($items as $data) { + // DB::table($table)->insert([]); + // } + + // DB::statement(" + // SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table})) + // "); + // }); + } +} \ No newline at end of file