Your IP : 216.73.216.91


Current Path : /var/node/inatote/Inatote-Backend/payment/
Upload File :
Current File : /var/node/inatote/Inatote-Backend/payment/payment-endpoints.js

import {
    UniqueConstraintError,
    InvalidPropertyError,
    RequiredParameterError,
    ApiTokenError,
    AuthorizationTokenError
} from '../helpers/errors.js'
import makeHttpError from '../helpers/http-error.js'
import makeProduct from './product.js'
import multer from 'multer'
import validateHeaders from '../helpers/validate-headers.js'
import config from '../config.js'
import makeDb from '../db/index.js'


const database = makeDb()



export default function makePaymentEndpointHandler({ paymentList }) {
    //  return async function handle(httpRequest) {
    return {
        // postproduct : postproduct,
        // getproducts : getproducts,
        // updateproduct : updateproduct,
        // deleteproduct : deleteproduct
    }
   
    // todo
    async function updateproduct(req , res) {
        const { categoryId, id } = req.params || {}
        //console.log("files" , req.files , req.file)
        //console.log(id)
        let productInfo = req.body;
        let imageArr = []
        for (var i = 0; i < req.files.length; i++) {
            var file = req.files[i]
            //console.log("files" , file);
            imageArr.push(file.filename)
        }
        if(typeof productInfo.inStock == "string"){
            productInfo["inStock"] = productInfo["inStock"] == "true" ? true : false
        }

        productInfo['imageURL'] = [...imageArr , ...productInfo["images"]];
        //console.log("image---------------" , productInfo);

        //console.log(productInfo)
        //console.log("type" ,typeof productInfo.colors , productInfo.colors);
        productInfo["colors"] = JSON.parse(productInfo.colors)
        productInfo["sizes"] = JSON.parse(productInfo.sizes)
        //console.log("type" ,typeof productInfo.colors);
        
        const result = await productList.update({ productId: id, categoryId: categoryId, product: productInfo })

        res.status(200).json({
            headers: config.app.headers,
            statusCode: 200,
            data: result
        })
    }

    // todo
    async function replaceproduct(httpRequest) { }

    // todo
    async function postproduct(req , res) {
        let productInfo = req.body
        //console.log("productInfo" ,productInfo , req.files);
        if (!productInfo) {
            return makeHttpError({
                statusCode: 400,
                errorMessage: 'Bad request. No POST body.'
            })
        }

        if (typeof req.body === 'string') {
            try {
                productInfo = JSON.parse(productInfo)
            } catch {
                return makeHttpError({
                    statusCode: 400,
                    errorMessage: 'Bad request. POST body must be valid JSON.'
                })
            }
        }


        try {
            if (productInfo.sizes)
                productInfo.sizes = JSON.parse(productInfo.sizes)
            if (productInfo.colors)
                productInfo.colors = JSON.parse(productInfo.colors)
            if(productInfo.isEnabled){
                productInfo.isEnabled = productInfo.isEnabled == 'true' || productInfo.isEnabled == true ? true : false
            }
            if(productInfo.inStock)
            {
                productInfo.inStock = productInfo.inStock == 'true' || productInfo.inStock == true ? true : false
            }


            let imageArr = []
            var d = Date.now()
            for (var i = 0; i < req.files.length; i++) {
                var file = req.files[i]
                //console.log("files" , file);
                imageArr.push(file.filename)
            }

            productInfo['imageURL'] = imageArr;
            const product = makeProduct(productInfo)
            const result = await productList.add(product)
            res.json({
                headers: config.app.headers,
                statusCode: 201,
                data: result
            })
        } catch (e) {
            //console.log("errs", e);
            return makeHttpError({
                errorMessage: e.message ? e.message : e,
                statusCode:
                    e instanceof UniqueConstraintError
                        ? 409
                        : e instanceof InvalidPropertyError ||
                            e instanceof RequiredParameterError
                            ? 400
                            : 500
            })
        }
    }

    // todo
    async function getproducts(req , res) {
       //console.log("req" , req.query);
        const { id } =req.params || {}
        const { max, page, _id , name , search_by, latitude , longitude } = req.query || {}
        const result = id
            ? await productList.findById({ productId: id , latitude , longitude })
            : await productList.getItems({ max, page, _id, name , search_by })

        res.status(200).json({
            headers: config.app.headers,
            statusCode: 200,
            data: result
        })
    }

    // todo
    async function deleteproduct(req , res) {
        const { id } = req.params || {}
        let product = {isEnabled : false}
        const result = await productList.remove({ productId: id  ,product})

        res.status(200).json({
            headers: config.app.headers,
            statusCode: 200,
            data: result
        })
    }

}