Your IP : 216.73.217.95


Current Path : /home/deltalab/PMS/ims-connector/rest/routes/
Upload File :
Current File : //home/deltalab/PMS/ims-connector/rest/routes/products.js

const express = require('express');
const axios = require('axios');
const { dotenv } = require('dotenv').config();

const { productQuery } = require('../queries');

const router = express.Router({ mergeParams: true });

router.get('/', async (req, res) => {
  try {
    const products = await productQuery.readMany(req.params.partnerId);
    return res.status(200).send({ success: true, data: products });
  } catch (error) {
    return res.status(400).send({ success: false, message: 'Error reading the products' });
  }
});

router.get('/imsProduct/:sku/:storeName', async (req, res) => {
  try {
    const result = await productQuery.readOne(req.params.sku, req.params.storeName);
    return res.status(200).send({ success: true, data: result });
  } catch (error) {
    return res.status(400).send({ success: false, message: 'Error reading the products' });
  }
});

router.get('/getProduct/:id', async (req, res) => {
  try {
    const product = await productQuery.readOne(req.params.id);
    return res.status(200).send({ success: true, data: product });
  } catch (error) {
    return res.status(400).send({ success: false, message: 'Error reading the specified product' });
  }
});

router.get('/getProducts/:storeId', async (req, res) => {
  try {
    const storeCatalog = await productQuery.readAllByStore(req.params.storeId);
    return res.status(200).send({ success: true, data: storeCatalog });
  } catch (error) {
    return res.status(400).send({ success: false, message: 'Error reading the products for the specified store.' });
  }
});

router.post('/', async (req, res) => {
  try {
    const reference = await productQuery.createProduct(req.body);
    return res.status(200).send({ success: true, data: reference });
  } catch (error) {
    console.log(error);
    return res.status(400).send({ success: false, message: error });
  }
});

router.put('/:sku', async (req, res) => {
  try {
    const reference = await productQuery.updateProduct(req.body, req.params.sku);
    await productQuery.updateInventorySource(req.body, req.params.sku);
    return res.status(200).send({ success: true, data: reference });
  } catch (error) {
    console.log(error);
    return res.status(400).send({ success: false, message: 'Error updating the products for the specified store.' });
  }
});

router.put('/delete/:sku', async (req, res) => {
  try {
    const product = await productQuery.flagProductAsDeleted(req.body, req.params.sku);
    return res.status(200).send({ success: true, data: product });
  } catch (error) {
    console.log(error);
    return res.status(400).send({ success: false, message: 'Error deleting the products for the specified store.' });
  }
});

router.delete('/:sku', async (req, res) => {
  try {
    const success = await productQuery.deleteProduct(req.params.sku);
    return res.status(200).send({ success });
  } catch (error) {
    return res.status(400).send({ success: false, message: 'Error deleting the products for the specified store.' });
  }
});

router.post('/uploadImage', async (req, res) => {
  try {
    const uploadedImage = await productQuery.uploadImageToProduct(req.body);
    return res.status(200).send({ success: true, data: uploadedImage });
  } catch (error) {
    console.log(error);
    return res.status(400).send({ success: false, message: 'Error uploading the product image for the specified store.' });
  }
});

router.delete('/deleteImage/:sku/:imsgid', async (req, res) => {
  try {
    const success = await productQuery.deleteImageFromProduct(req.params.sku, req.params.imsgid);
    return res.status(200).send({ success });
  } catch (error) {
    console.log(error);
    return res.status(400).send({ success: false, message: 'Error uploading the product image for the specified store.' });
  }
});

module.exports = router;