/* ============================================================================ *\
|| ########################################################################## ||
|| # Auction Software Marketplace Release: 0.6 Build 0.7 # ||
|| # ---------------------------------------------------------------------- # ||
|| # License # 35YAHCNR9344X6O666C123AB # ||
|| # ---------------------------------------------------------------------- # ||
|| # Copyright ©2014–2021 Develop Scripts LLC. All Rights Reserved # ||
|| # This file may not be redistributed in whole or significant part. # ||
|| # ------------- AUCTION SOFTWARE IS NOT FREE SOFTWARE ------------------ # ||
|| # http://www.auctionsoftwaremarketplace.com|support@auctionsoftware.com # ||
|| # ---------------------------------------------------------------------- # ||
|| ########################################################################## ||
\* ============================================================================ */
const dateFormat = require('dateformat')
const md5 = require('md5')
const _ = require('underscore')
const moment = require('moment')
const mysqclass = require('./mysqli').default
/**
* @class class to handle product functions
*/
class adminProductModule {
/**
* Get all products
* @param {object} req request data
* @param {string} count count for the pagination
* @returns {object} sql response
*/
static async fetchProductsAll(req, count) {
const mysql = {}
mysql.where = ''
const { action } = req.body
const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
if (action === 'unsold') {
mysql.where += ' and (p.market_status = "unsold" or p.market_status = "closed") '
} else {
mysql.where += ` and p.market_status = "${action}"`
}
mysql.order = 'order by p.id desc'
const order = req.body.order === '' ? 'asc' : req.body.order
const orderby = req.body.orderby === '' && !req.body.orderby ? '' : req.body.orderby
if (orderby !== '') {
mysql.order = ` order by ${orderby} ${order}`
}
if (req.body.searchterm !== '' && req.body.searchterm !== undefined) {
let changed = req.body.searchterm.replace(/\\/g, '\\\\\\\\')
changed = changed.replace(/"/g, '\\"')
mysql.where += `and (p.title like "%${changed}%" or p.id like "%${changed}%")`
}
const dateSortValue = req.body.fielddate ? req.body.fielddate : 'p.date_added'
if (req.body.fromdate !== '' && req.body.fromdate !== undefined) {
const date1 = dateFormat(
new Date(
moment(req.body.fromdate, global.configurations.variables.time_format).format(),
),
'yyyy-mm-dd',
)
mysql.where += ` and ${dateSortValue} >= "${date1} 00:00:00"`
}
if (req.body.todate !== '' && req.body.todate !== undefined) {
const date2 = dateFormat(
new Date(
moment(req.body.todate, global.configurations.variables.time_format).format(),
),
'yyyy-mm-dd',
)
mysql.where += ` and ${dateSortValue} <= "${date2} 23:59:59"`
}
let row = ''
const pagen = (req.body.page - 1) * req.body.limit
const limitf = ` limit ${pagen},${req.body.limit}`
mysql.limit = limitf
mysql.dateNow = dateNow
const escapeData = []
if (count === 1) {
row = 'get_all_products_limit'
} else {
row = 'get_all_products'
}
const strQuery = await mysqclass.mysqli(mysql, row)
const dataReturn = await global.mysql.query(strQuery, escapeData)
return dataReturn
}
/**
* Get all active Auctions
* @returns {object} sql response
*/
static async fetchActiveAuctions() {
const mysql = {}
const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
const escapeData = [dateNow, dateNow]
const strQuery = await mysqclass.mysqli(mysql, 'get_all_auct_active')
const dataReturn = await global.mysql.query(strQuery, escapeData)
return dataReturn
}
/**
* Update Project status
* @param {string} status Status which has to be updated
* @param {number} pid Project ID which status has to be updated
* @returns {object} sql response
*/
static async marketStatusUpdate(status, pid) {
const mysql = {}
const escapeData = [status, pid]
const strQuery = await mysqclass.mysqli(mysql, 'prod_change_market_status')
const dataReturn = await global.mysql.query(strQuery, escapeData)
console.log('dataReturn', strQuery, escapeData)
return dataReturn
}
}
module.exports.default = adminProductModule