diff --git a/web/app/Http/Controllers/Controller.php b/web/app/Http/Controllers/Controller.php
index 63bfe5c..0b881b8 100644
--- a/web/app/Http/Controllers/Controller.php
+++ b/web/app/Http/Controllers/Controller.php
@@ -12,6 +12,9 @@ use App\Models\Category;
use App\Models\Post;
use App\Models\Reply;
use App\Models\Staff;
+use App\Models\CatalogCategory;
+use App\Models\Item;
+use App\Models\Inventory;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
@@ -41,6 +44,8 @@ class Controller extends BaseController
$array = $user->toArray();
$staff = Staff::where('user_id', $user->id)->first();
if ($staff) {$array['power'] = $staff->power_level;}
+ $array['bank'] = $user->bank;
+ $array['email'] = $user->email;
return Response()->json(["data"=>$array]);
break;
case "fetchedUser":
@@ -86,6 +91,29 @@ class Controller extends BaseController
}
+ public function fetchCategoriesCatalog() {
+
+ $categories = CatalogCategory::get();
+
+ return Response()->json(["categories"=>$categories]);
+
+ }
+
+ public function fetchCategoryCatalog($id) {
+
+ $category = CatalogCategory::where('id', $id)->first();
+
+ if (!$category) {return Response()->json(false);}
+
+ $items = $category->items()->orderBy('updated_at', 'desc')->paginate(25);
+
+ foreach ($items as &$item) {
+ $item['creator'] = User::where('id', $item['creator_id'])->first();
+ }
+
+ return Response()->json(["data"=>$category, "items"=>$items]);
+ }
+
public function fetchCategory($id) {
$category = Category::where('id', $id)->first();
diff --git a/web/app/Models/CatalogCategory.php b/web/app/Models/CatalogCategory.php
new file mode 100644
index 0000000..588671a
--- /dev/null
+++ b/web/app/Models/CatalogCategory.php
@@ -0,0 +1,20 @@
+morphMany('App\Models\Item', 'category');
+ }
+
+}
diff --git a/web/app/Models/Inventory.php b/web/app/Models/Inventory.php
new file mode 100644
index 0000000..f7bdf38
--- /dev/null
+++ b/web/app/Models/Inventory.php
@@ -0,0 +1,19 @@
+belongsTo(Item::class);
+ }
+
+}
diff --git a/web/app/Models/Item.php b/web/app/Models/Item.php
new file mode 100644
index 0000000..935f698
--- /dev/null
+++ b/web/app/Models/Item.php
@@ -0,0 +1,15 @@
+id)->first();
return $staff;
}
+
+ public function inventory() {
+ return $this->morphMany('App\Models\Inventory', 'owner');
+ }
}
diff --git a/web/database/migrations/2021_12_16_011849_create_users_table.php b/web/database/migrations/2021_12_16_011849_create_users_table.php
index f91f29d..3dd6eb8 100644
--- a/web/database/migrations/2021_12_16_011849_create_users_table.php
+++ b/web/database/migrations/2021_12_16_011849_create_users_table.php
@@ -20,6 +20,7 @@ class CreateUsersTable extends Migration
$table->timestamp('email_verified_at')->default(null);
$table->string('password');
$table->string('token');
+ $table->integer('bank')->default(150);
$table->string('about')->default(null);
$table->timestamps();
});
diff --git a/web/database/migrations/2022_03_23_215614_create_items_table.php b/web/database/migrations/2022_03_23_215614_create_items_table.php
new file mode 100644
index 0000000..ce26c93
--- /dev/null
+++ b/web/database/migrations/2022_03_23_215614_create_items_table.php
@@ -0,0 +1,40 @@
+id();
+ $table->string('title');
+ $table->string('description');
+ $table->string('thumbnail');
+ $table->integer('creator_id');
+ $table->integer('starting_price')->default(5);
+ $table->integer('current_price')->default(5);
+ $table->integer('category_id')->default(1);
+ $table->string('category_type');
+ //may need to add more later idk.
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('items');
+ }
+}
diff --git a/web/database/migrations/2022_03_23_215624_create_inventories_table.php b/web/database/migrations/2022_03_23_215624_create_inventories_table.php
new file mode 100644
index 0000000..00387e9
--- /dev/null
+++ b/web/database/migrations/2022_03_23_215624_create_inventories_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->string('item_id');
+ $table->string('owner_id');
+ $table->string('owner_type');
+ $table->string('uid'); //unique id | used for limiteds, the original id of the inventory row. once set, it never changes
+ $table->boolean('status')->default(true);
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('inventories');
+ }
+}
diff --git a/web/database/migrations/2022_03_23_215847_create_catalog_categories_table.php b/web/database/migrations/2022_03_23_215847_create_catalog_categories_table.php
new file mode 100644
index 0000000..c0c259c
--- /dev/null
+++ b/web/database/migrations/2022_03_23_215847_create_catalog_categories_table.php
@@ -0,0 +1,33 @@
+id();
+ $table->string('title');
+ $table->string('description');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('catalog_categories');
+ }
+}
diff --git a/web/resources/js/components/Navbar.js b/web/resources/js/components/Navbar.js
index ce7099e..aba49c0 100644
--- a/web/resources/js/components/Navbar.js
+++ b/web/resources/js/components/Navbar.js
@@ -51,13 +51,16 @@ const Navbar = (props) => {
<>
There are currently no items!
: null} +${item.current_price}
+{validity.message}