From 21c59d7c0155eae90757ccbba5c7ad0369b6bf95 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Fri, 15 Jan 2021 04:19:47 +0100 Subject: [PATCH 1/6] Make factory price more realistic --- database/factories/ProductFactory.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php index 231576cc..edc2ddc8 100644 --- a/database/factories/ProductFactory.php +++ b/database/factories/ProductFactory.php @@ -30,7 +30,7 @@ public function definition() 'name' => $name, 'slug' => Str::slug($name), 'description' => $this->faker->realText(320), - 'price' => $this->faker->numberBetween(10000, 100000), + 'price' => $this->faker->numberBetween(100, 1000), ]; } } From 90775e4d979336e1cd9b4d51b81a839e9a6b0e8c Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Fri, 15 Jan 2021 04:34:31 +0100 Subject: [PATCH 2/6] Finish adding seeders and factories --- database/factories/OrderFactory.php | 31 +++++++++++++++++++ database/seeders/DatabaseSeeder.php | 5 +++- database/seeders/OrderSeeder.php | 21 +++++++++++++ database/seeders/ProductSeeder.php | 46 +++++++++++++++++++++++++++++ database/seeders/UserSeeder.php | 21 +++++++++++++ 5 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 database/factories/OrderFactory.php create mode 100644 database/seeders/OrderSeeder.php create mode 100644 database/seeders/ProductSeeder.php create mode 100644 database/seeders/UserSeeder.php diff --git a/database/factories/OrderFactory.php b/database/factories/OrderFactory.php new file mode 100644 index 00000000..f1ef9766 --- /dev/null +++ b/database/factories/OrderFactory.php @@ -0,0 +1,31 @@ + $this->faker->numberBetween(1, 10), + 'transaction_id' => Str::random(16), + 'total' => $this->faker->numberBetween(50000, 200000), + ]; + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 57b73b54..b8a8717a 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -13,6 +13,9 @@ class DatabaseSeeder extends Seeder */ public function run() { - // \App\Models\User::factory(10)->create(); + $this->call([ + UserSeeder::class, + ProductSeeder::class, + ]); } } diff --git a/database/seeders/OrderSeeder.php b/database/seeders/OrderSeeder.php new file mode 100644 index 00000000..a81bf550 --- /dev/null +++ b/database/seeders/OrderSeeder.php @@ -0,0 +1,21 @@ +times(10) + ->create(); + } +} diff --git a/database/seeders/ProductSeeder.php b/database/seeders/ProductSeeder.php new file mode 100644 index 00000000..ba70a696 --- /dev/null +++ b/database/seeders/ProductSeeder.php @@ -0,0 +1,46 @@ +times(20) + ->create(); + + Category::factory() + ->times(4) + ->create(); + + Order::factory() + ->times(10) + ->create(); + + $categories = Category::all(); + Product::all()->each(function ($product) use ($categories) { + $product->categories()->attach( + $categories->random(2)->pluck('id')->toArray() + ); + }); + + $orders = Order::all(); + Product::all()->each(function ($product) use ($orders) { + $orderIds = $orders->random(3)->pluck('id')->toArray(); + foreach ($orderIds as $orderId) { + $product->orders()->attach($orderId, ['quantity' => rand(1, 5)]); + } + }); + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 00000000..5c15a4e2 --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,21 @@ +times(10) + ->create(); + } +} From 0ae3c3e425c85469f2bae74335f93c395cab4474 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Fri, 15 Jan 2021 04:47:24 +0100 Subject: [PATCH 3/6] Add API routes --- routes/api.php | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/routes/api.php b/routes/api.php index bcb8b189..50280ff2 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,19 +1,16 @@ get('/user', function (Request $request) { - return $request->user(); -}); +Route::get('/categories', [CategoryController::class, 'index']); +Route::get('/categories/{category}', [CategoryController::class, 'show']); + +Route::get('/products', [ProductController::class, 'index']); +Route::get('/products/{product}', [ProductController::class, 'show']); + +Route::post('/purchase', [UserController::class, 'purchase']); From 80e61002f68293c1d9f3eeb80038318b436d9d08 Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Fri, 15 Jan 2021 04:53:14 +0100 Subject: [PATCH 4/6] Create API controllers --- app/Http/Controllers/Api/CategoryController.php | 11 +++++++++++ app/Http/Controllers/Api/ProductController.php | 11 +++++++++++ app/Http/Controllers/Api/UserController.php | 11 +++++++++++ 3 files changed, 33 insertions(+) create mode 100644 app/Http/Controllers/Api/CategoryController.php create mode 100644 app/Http/Controllers/Api/ProductController.php create mode 100644 app/Http/Controllers/Api/UserController.php diff --git a/app/Http/Controllers/Api/CategoryController.php b/app/Http/Controllers/Api/CategoryController.php new file mode 100644 index 00000000..e5256ddc --- /dev/null +++ b/app/Http/Controllers/Api/CategoryController.php @@ -0,0 +1,11 @@ + Date: Fri, 15 Jan 2021 04:54:49 +0100 Subject: [PATCH 5/6] Add code for product controller --- app/Http/Controllers/Api/ProductController.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/ProductController.php b/app/Http/Controllers/Api/ProductController.php index cf7ee9c8..af98a7a2 100644 --- a/app/Http/Controllers/Api/ProductController.php +++ b/app/Http/Controllers/Api/ProductController.php @@ -4,8 +4,22 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; +use App\Models\Product; class ProductController extends Controller { - // + public function index() + { + return Product::with(['categories' => function ($query) { + $query->select('id', 'name'); + }]) + ->get(); + } + + public function show(Product $product) + { + $product->load('categories:id,name'); + + return $product; + } } From df79100d2f617a3028efc9712f31dc38ff8984af Mon Sep 17 00:00:00 2001 From: w3bdesign <45217974+w3bdesign@users.noreply.github.com> Date: Fri, 15 Jan 2021 05:22:20 +0100 Subject: [PATCH 6/6] Get product api route to work --- routes/api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.php b/routes/api.php index 50280ff2..764dd203 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,6 +1,6 @@