Skip to content

Commit 33574c0

Browse files
committed
Allow update product images
1 parent 6fc7ab6 commit 33574c0

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

src/api/server/controllers/products.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,11 @@ class ProductsController {
1515
this.router.get('/v1/products/:id', security.checkUserScope.bind(this, security.scope.READ_PRODUCTS), this.getSingleProduct.bind(this));
1616
this.router.put('/v1/products/:id', security.checkUserScope.bind(this, security.scope.WRITE_PRODUCTS), this.updateProduct.bind(this));
1717
this.router.delete('/v1/products/:id', security.checkUserScope.bind(this, security.scope.WRITE_PRODUCTS), this.deleteProduct.bind(this));
18+
19+
this.router.get('/v1/products/:id/images', security.checkUserScope.bind(this, security.scope.READ_PRODUCTS), this.getProductImages.bind(this));
1820
this.router.post('/v1/products/:id/images', security.checkUserScope.bind(this, security.scope.WRITE_PRODUCTS), this.addProductImage.bind(this));
1921
this.router.delete('/v1/products/:id/images/:image', security.checkUserScope.bind(this, security.scope.WRITE_PRODUCTS), this.deleteProductImage.bind(this));
22+
2023
this.router.get('/v1/products/:id/sku', security.checkUserScope.bind(this, security.scope.READ_PRODUCTS), this.isSkuExists.bind(this));
2124
this.router.get('/v1/products/:id/slug', security.checkUserScope.bind(this, security.scope.READ_PRODUCTS), this.isSlugExists.bind(this));
2225
}
@@ -61,6 +64,12 @@ class ProductsController {
6164
}).catch(next);
6265
}
6366

67+
getProductImages(req, res, next) {
68+
ProductsService.getProductImages(req.params.id).then(data => {
69+
res.send(data)
70+
}).catch(next);
71+
}
72+
6473
addProductImage(req, res, next) {
6574
ProductsService.addProductImage(req, res, next);
6675
}

src/api/server/services/products/products.js

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -492,9 +492,9 @@ class ProductsService {
492492
product.related_product_ids = parse.getArrayIfValid(data.related_product_ids) || [];
493493
}
494494

495-
// if(data.images !== undefined) {
496-
// product.images = parse.getArrayIfValid(data.images) || [];
497-
// }
495+
if(data.images !== undefined) {
496+
product.images = parse.getArrayIfValid(data.images) || [];
497+
}
498498

499499
if(data.prices !== undefined) {
500500
product.prices = parse.getArrayIfValid(data.prices) || [];
@@ -611,6 +611,27 @@ class ProductsService {
611611
return item;
612612
}
613613

614+
getProductImages(productId) {
615+
if(!ObjectID.isValid(productId)) {
616+
return Promise.reject('Invalid identifier');
617+
}
618+
let productObjectID = new ObjectID(productId);
619+
620+
return mongo.db.collection('products').findOne({ _id: productObjectID }, {fields: {images: 1}}).then(product => {
621+
if(product && product.images && product.images.length > 0) {
622+
let images = product.images.map(image => {
623+
image.url = `${settings.url.products}/${product._id}/${image.filename}`
624+
return image;
625+
})
626+
627+
images = images.sort((a,b) => (a.position - b.position ));
628+
return images;
629+
} else {
630+
return []
631+
}
632+
})
633+
}
634+
614635
deleteProductImage(productId, imageId) {
615636
if(!ObjectID.isValid(productId) || !ObjectID.isValid(imageId)) {
616637
return Promise.reject('Invalid identifier');

0 commit comments

Comments
 (0)