| Current Path : /var/node/inatote/Inatote-Backend/payment/ |
| 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
})
}
}