Update DatabaseSeeder to include MediaSeeder and enhance 404 error page localization

- Added MediaSeeder to DatabaseSeeder for improved data seeding.
- Updated 404 error page to use localized string for "Page not found" and added links for navigation.
- Added new translation for "Page not found" in tk.json.
This commit is contained in:
Mekan1206
2026-02-13 22:51:43 +05:00
parent 147e7b9516
commit ec33006984
8 changed files with 235 additions and 11 deletions

View File

@@ -0,0 +1,120 @@
<?php
namespace Database\Seeders\New;
use App\Models\Ecommerce\Product\Order\Payment\OrderPayment;
use App\Models\Ecommerce\Product\Order\Shipping\OrderShipping;
use App\Models\Ecommerce\Product\Order\Status\OrderStatus;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use JsonMachine\Items;
use JsonMachine\JsonDecoder\ExtJsonDecoder;
class OrderSeeder extends Seeder
{
public function run()
{
$this->fillOrders();
$this->fillOrderItems();
}
private function fillOrderItems()
{
DB::transaction(function () {
$table = 'order_items';
DB::table($table)->truncate();
$items = Items::fromFile(
database_path('data/order_items.json'),
['decoder' => new ExtJsonDecoder(true)]
);
foreach ($items as $data) {
$channel_id = DB::table('channel_product')->where('product_id', $data['item_id'])->first()->channel_id ?? tmpostChannel()->id;
DB::table($table)->insert([
'id' => $data['id'],
'order_id' => $data['order_id'],
'product_id' => $data['item_id'],
'quantity' => $data['quantity'],
'unit_price_amount' => $data['price'],
'channel_id' => $channel_id,
'created_at' => $data['created_at'],
'updated_at' => $data['updated_at'],
]);
}
DB::statement("
SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table}))
");
});
}
private function fillOrders()
{
DB::transaction(function () {
$table = 'orders';
DB::table($table)->truncate();
$items = Items::fromFile(
database_path('data/orders.json'),
['decoder' => new ExtJsonDecoder(true)]
);
foreach ($items as $data) {
DB::table($table)->insert([
'id' => $data['id'],
'number' => Str::random(30),
'user_id' => $data['customer_id'],
'options' => sprintf('{"seller_id":"%s","warehouse_id":"%s"}', $data['seller_id'], $data['warehouse_id']),
'status' => $this->formatStatus($data['status']),
'shipping_method' => $this->formatShippingMethod($data['delivery_type']),
'payment_type_id' => $this->formatPaymentType($data['payment_type']),
'notes' => $data['note'],
'created_at' => $data['created_at'],
'updated_at' => $data['updated_at'],
'deleted_at' => $data['deleted_at'],
]);
}
DB::statement("
SELECT setval('{$table}_id_seq', (SELECT MAX(id) from {$table}))
");
});
}
private function formatStatus(string $status): string
{
return match ($status) {
'DRAFT' => OrderStatus::PENDING,
'COMPLETED' => OrderStatus::COMPLETED,
'DELIVERED' => OrderStatus::COMPLETED,
'CANCELLED' => OrderStatus::CANCELLED,
default => OrderStatus::default(),
};
}
private function formatShippingMethod($shippingMethod): string
{
return match ($shippingMethod) {
'PICK_UP' => OrderShipping::SELF_PICKUP,
'EXPRESS_DELIVERY' => OrderShipping::EXPRESS,
'SELECTED_DELIVERY' => OrderShipping::STANDART,
default => OrderShipping::default(),
};
}
private function formatPaymentType($paymentType): int
{
return match ($paymentType) {
'CASH' => 1,
'CARD' => 2,
default => 1,
};
}
}