From c2d1857093428a9133b69493c95baec4240ae723 Mon Sep 17 00:00:00 2001
From: Troplo
Date: Wed, 18 Nov 2020 01:04:25 +1100
Subject: [PATCH] Check if item owned API
---
frontend/src/App.vue | 59 +------------------
.../src/components/routes/MarketplaceItem.vue | 32 +++++++++-
models/item.js | 1 -
routes/marketplace.js | 34 +++++++++++
4 files changed, 65 insertions(+), 61 deletions(-)
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index e41709d..f49142e 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -128,7 +128,7 @@ blockquote {
-
-
- Sign up to {{name}} today!
-
It's fast and easy.
-
-
-
-
-
@@ -470,7 +415,7 @@ blockquote {
:hide-header="true"
>
{{user.description}}
- Team founded at {{user.createdAt | formatDate}}
+ Asset uploaded at {{user.createdAt | formatDate}}
This item costs {{user.price}} Koins
This item costs {{user.price}} {{user.salePrice}} Koins
-
Buy item
-
+ Buy item
+ Loading purchase status
+ Item Owned
+ Failed to load status
+
Sell item
@@ -73,6 +76,7 @@
diff --git a/models/item.js b/models/item.js
index 3b8c083..40cd73a 100644
--- a/models/item.js
+++ b/models/item.js
@@ -132,7 +132,6 @@ module.exports = (sequelize, DataTypes) => {
classMethods: {
associate (models) {
Item.belongsTo(models.ItemCategory)
- Item.belongsTo(models.Inventory)
Item.belongsTo(models.User, {through: 'User'})
},
includeOptions (from, limit) {
diff --git a/routes/marketplace.js b/routes/marketplace.js
index 19bdef8..e971cb5 100644
--- a/routes/marketplace.js
+++ b/routes/marketplace.js
@@ -108,11 +108,15 @@ router.get('/purchase/:id', auth, async(req, res, next) => {
let queryObj = {
where: {id: req.params.id},
}
+ let queryObj3 = {
+ where: {UserId: req.userData.UserId, ItemId: req.params.id},
+ }
let queryObj2 = {
where: {username: req.userData.username},
}
let marketplace = await Item.findOne(queryObj)
let user = await User.findOne(queryObj2)
+ let inventory = await Inventory.findOne(queryObj3)
if (!marketplace) throw Errors.invalidItem
if (user.koins < marketplace.price && !marketplace.saleEnabled) {
throw Errors.insufficientKoins
@@ -123,6 +127,12 @@ router.get('/purchase/:id', auth, async(req, res, next) => {
if (marketplace.offSale) {
throw Errors.offSale
}
+ if(inventory && !marketplace.limited) {
+ throw Errors.itemOwned
+ }
+ if(inventory && marketplace.limited) {
+ throw Errors.itemOwnedLimited
+ }
if(marketplace.saleEnabled) {
const UserId = user.id
const priceTotal = marketplace.salePrice
@@ -146,4 +156,28 @@ router.get('/purchase/:id', auth, async(req, res, next) => {
} catch (err) { next(err) }
})
+router.get('/check/:id', auth, async(req, res, next) => {
+try {
+ let queryObj = {
+ where: {id: req.params.id},
+ }
+ let queryObj3 = {
+ where: {UserId: req.userData.UserId, ItemId: req.params.id},
+ }
+ let inventory = await Inventory.findOne(queryObj3)
+ let marketplace = await Item.findOne(queryObj)
+ if(marketplace) {
+ if (inventory) {
+ res.status(200)
+ res.json({purchased: true})
+ } else {
+ res.status(200)
+ res.json({purchased: false})
+ }
+ } else {
+ throw Errors.invalidItem
+ }
+} catch (err) { next(err) }
+})
+
module.exports = router