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 {
-
@@ -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