front/modules/buynow.js

/* ============================================================================ *\
|| ########################################################################## ||
|| # 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 commonSQL = require('../../common/sql').default
const mysqclass = require('./mysqli').default
const commonProduct = require('../../common/products').default
/**
 * @class class to handle cart functions
 */
class buynowModule {
    /**
     * get lot cart details
     * @param {object} data data
     * @param {object} escapeValue escape values
     * @param {object} FilterValue filtervalues
     * @param {string} baseTableUsed basetableused
     * @param {number} limit limit
     * @param {string} groupBy group by
     * @param {string} orderBy order by
     * @returns {object} sql query
     */
    static async getlotcartsdetails(
        data,
        escapeValue,
        FilterValue,
        baseTableUsed,
        limit,
        groupBy,
        orderBy,
    ) {
        const mysqli = {}
        const escapeData = escapeValue
        mysqli.keys = data
        mysqli.values = FilterValue
        mysqli.tables = baseTableUsed
        mysqli.group_by = groupBy || ''
        mysqli.order_by = orderBy || ''
        if (limit > 0) {
            mysqli.limit_by = ` limit ${limit}`
        } else {
            mysqli.limit_by = ''
        }
        const strQuery = await mysqclass.mysqli(mysqli, 'select_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * get buy now project details
     * @param {object} req request object
     * @returns {object} sql query
     */
    static async getBuynowProjectDetails(req) {
        const mysqli = {}
        const escapeData = [req.body.product_id.toString().split(',')]
        mysqli.tables = global.configColumns.projects.ext_name
        const strQuery = await mysqclass.mysqli(mysqli, 'get_project_details_buynow')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * get buy now cart Details
     * @param {object} req request object
     * @param {object} prdt product details
     * @returns {object} sql query
     */
    static async getBuyNowCartDetails(req, prdt) {
        const mysqli = {}
        const escapeData = [prdt.id, req.body.user_id]
        mysqli.tables = global.configColumns.cart_temp.ext_name
        const strQuery = await mysqclass.mysqli(mysqli, 'get_cart_details_buynow')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * get common invoice no
     * @param {object} data data
     * @param {string} baseTableUsed base table used
     * @returns {object} sql query
     */
    static async getCommonInvoiceNo(data, baseTableUsed) {
        const mysqli = {}
        const escapeData = []
        mysqli.keys = data
        mysqli.values = ' id>0 '
        mysqli.tables = baseTableUsed
        mysqli.group_by = ''
        mysqli.order_by = ' order by common_invoice desc'
        mysqli.limit_by = 'limit 1'
        const strQuery = await mysqclass.mysqli(mysqli, 'select_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *get cart quantity prduct sold values
     * @param {object} data data
     * @param {number} proid product id
     * @returns {object} sql query
     */
    static async cartqtyproductsoldvalue(data, proid) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [data, proId]
        mysqli.keys = ' sold = sold + ?'
        mysqli.values = ' id IN (?) '
        mysqli.tables = ' projects '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * update cart buy now
     * @param {object} req request object
     * @param {object} data data
     * @param {string} baseTableUsed base table used
     * @returns {object} sql query
     */
    static async updatecartsbuynow(req, data, baseTableUsed) {
        const mysqli = {}
        let escapeData = []
        const postData = data
        const acceptedObjects = baseTableUsed.array_columns
        const defaultKeys = ['date_added', 'paid_date']
        const defaultValues = [
            dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss'),
            dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss'),
        ]
        const valueInsert = commonSQL.InsertSQLFunction(
            postData,
            acceptedObjects,
            defaultKeys,
            defaultValues,
        )
        mysqli.keys = valueInsert.keys
        escapeData = valueInsert.escapeData
        mysqli.values = valueInsert.values
        mysqli.tables = baseTableUsed.ext_name
        const strQuery = await mysqclass.mysqli(mysqli, 'insert_tables')
        const dataPromise = await global.mysql.query(strQuery, escapeData)
        return dataPromise
    }
    /**
     *
     * @param {object} req request object
     * @param {object} data data
     * @param {number} proid product id
     * @param {number} typeoffield type of filed
     * @param {string } baseTableUsed base table used
     * @returns {object} sql query
     */
    static async updatealltypeofproduct(req, data, proid, typeoffield, baseTableUsed) {
        const mysqli = {}
        let escapeData = []
        const postData = data
        const postID = proid
        const fieldType = typeoffield
        const acceptedObjects = baseTableUsed.array_columns
        const defaultKeys = ['updated_at']
        const defaultValues = [dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')]
        const valueInsert = commonSQL.updateSQLFunction(
            postData,
            acceptedObjects,
            defaultKeys,
            defaultValues,
        )
        mysqli.keys = valueInsert.keys
        escapeData = valueInsert.escapeData
        mysqli.values = ` ${fieldType}=${postID}`
        mysqli.tables = baseTableUsed.ext_name
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataPromise = await global.mysql.query(strQuery, escapeData)
        return dataPromise
    }
    /**
     *get carts details
     * @param {object} data data
     * @param {number} userID number
     * @param {number} sellID seller id
     * @param {string} baseTableUsed base table used
     * @param {string} baseTableUsed2 second base table used
     * @returns {object} sql query
     */
    static async getcartsdetails(data, userID, sellID, baseTableUsed, baseTableUsed2) {
        const mysqli = {}
        let escapeData = []
        if (sellID === 0) {
            escapeData = [userID]
            mysqli.values = ' c.user_id IN (?) '
        } else {
            escapeData = [userID, sellID]
            mysqli.values = ' c.user_id IN (?) and c.seller_id (?) '
        }
        mysqli.keys = data
        mysqli.tables = `${baseTableUsed} as p inner join ${baseTableUsed2} as c on (p.id=c.project_id)`
        mysqli.group_by = ''
        mysqli.order_by = ' order by c.cart_id desc'
        mysqli.limit_by = ''
        const strQuery = await mysqclass.mysqli(mysqli, 'select_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *cart quantity product
     * @param {object} data data
     * @param {number} proid product id
     * @returns {object} sql query
     *
     */
    static async cartqtyproductsub(data, proid) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [data, proId]
        mysqli.keys = ' booked = booked - ?'
        mysqli.values = ' id IN (?) '
        mysqli.tables = ' projects '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *cart table quantity update
     * @param {number} userid user id
     * @param {number} cartid cart id
     * @param {number} proid project id
     * @returns {object} sql query
     */
    static async cartTableqtyUpdate(cartid, userid, proid) {
        const mysqli = {}
        const userId = userid.toString().split(',')
        const cartId = cartid.toString().split(',')
        const proId = proid.toString().split(',')
        const dateUpdate = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        const escapeData = [dateUpdate, cartId, userId, proId]
        mysqli.keys = ' paid = 1,updated_at=? '
        mysqli.values = ' cart_id IN (?) and user_id IN (?) and project_id IN (?) '
        mysqli.tables = ' cart_temp '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * buynow invoice update
     * @param {object} req request object
     * @param {number} buynowID buynow id
     * @param {number} userid user id
     * @returns {object} sql query
     */
    static async buynowinvoiceUpdate(req, buynowID, userid) {
        const mysqli = {}
        const userId = userid.toString().split(',')
        const dateUpdate = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        const escapeData = [
            req.body.common_invoice,
            req.body.payment_method,
            req.body.paid,
            dateUpdate,
            req.body.total_invoice,
            req.body.total_due_amount,
            req.body.appointment_id,
            userId,
            buynowID.toString().split(','),
        ]
        mysqli.keys =
            'common_invoice =?, payment_method = ?, paid = ?,active=1,partial=0,paid_date=?,total_invoice=?,paid_amount =?,appointment_id=? '
        mysqli.values = ' user_id = ? and id IN (?)'
        mysqli.tables = ' buynow '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * buy now invoice partial update
     * @param {object} req request object
     * @param {number} buynowID buynow id
     * @param {number} userid user id
     * @returns {object} sql query
     */
    static async buynowinvoicePartialUpdate(req, buynowID, userid) {
        const mysqli = {}
        const userId = userid.toString().split(',')
        const dateUpdate = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        const escapeData = [
            req.body.common_invoice,
            req.body.payment_method,
            req.body.paid,
            req.body.total_invoice,
            req.body.total_due_amount,
            req.body.appointment_id,
            userId,
            buynowID.toString().split(','),
        ]
        mysqli.keys =
            'common_invoice =?, payment_method = ?, paid = ?,partial=1,total_invoice=?,paid_amount = ?,appointment_id=? '
        mysqli.values = ' user_id = ? and id IN (?)'
        mysqli.tables = ' buynow '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * common delete parent table
     * @param {number} proid product id
     * @param {number} baseid base id
     * @param {string} baseTableUsed base table used
     * @returns {object} sql query
     */
    static async commondeleteparenttable(proid, baseid, baseTableUsed) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [proId]
        mysqli.values = `${baseid} IN (?)`
        mysqli.tables = baseTableUsed
        const strQuery = await mysqclass.mysqli(mysqli, 'delete_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * remove sold temp cart
     * @param {number} proid product id
     * @returns {object} sql query
     */
    static async removeSoldTempCart(proid) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [proId]
        mysqli.values = ' project_id IN (?) and paid = 0 '
        mysqli.tables = ' cart_temp '
        const strQuery = await mysqclass.mysqli(mysqli, 'delete_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * product status udpate
     * @param {object} data data
     * @param {number} proid product id
     * @returns {object} sql query
     */
    static async productstatusupdate(data, proid) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [data, proId]
        mysqli.keys = ' market_status = ?'
        mysqli.values = ' id IN (?) '
        mysqli.tables = ' projects '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /** update cart details
     *
     * @param {object} req request object
     * @param {number} qty quantity
     * @param {number} proid product id
     * @param {number} uid user id
     * @param {number} price price
     * @returns {object} sql query
     */
    static async updatecartdetails(req, qty, proid, uid, price) {
        const mysqli = {}
        const escapeData = [qty, price, proid, uid]
        const strQuery = await mysqclass.mysqli(mysqli, 'update_custom_cart')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * insert user cart details
     * @param {object} req request object
     * @param {number} qty quantity
     * @param {number} proid product id
     * @param {number} uid user id
     * @param {number} price price
     * @returns {object} sql query
     */
    static async insertucartdetails(req, qty, proid, uid, price) {
        const mysqli = {}
        const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        const escapeData = [proid, dateNow, qty, 0, uid, price]
        const strQuery = await mysqclass.mysqli(mysqli, 'insert_custom_cart')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * update cart data
     * @param {object} data obejct data
     * @param {number} proid product id
     * @param {number} uid user id
     * @returns {object} sql query
     */
    static async updateCartData(data, proid, uid) {
        let postData = data
        const mysqli = {}
        const acceptedObjects = [
            'per_total',
            'total_amount',
            'tax_percent',
            'total_tax',
            'shipping_percent',
            'total_shipping',
            'buyer_premium_percent',
            'total_premium',
            'cart_group',
            'delivery_type',
        ]
        postData = _.omit(postData, (value, key) => {
            if (
                _.isNull(value) ||
                _.isUndefined(value) ||
                value === '' ||
                !_.contains(acceptedObjects, key)
            ) {
                return true
            }
            return false
        })
        let escapeData = []
        const defaultKeys = ['updated_at']
        const defaultValues = [dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')]
        const keyswithescape = defaultKeys.concat(_.keys(postData))
        escapeData = defaultValues.concat(_.values(postData))
        mysqli.keys = _.map(keyswithescape, (val) => {
            return `${val} = ?`
        })
        mysqli.pro_id = proid
        mysqli.u_id = uid
        const strQuery = await mysqclass.mysqli(mysqli, 'update_cart_detailsnew')
        const dataPromise = await global.mysql.query(strQuery, escapeData)
        return dataPromise
    }
    /**
     * update buy now data
     * @param {object} data data
     * @param {number} proid projet id
     * @param {number} uid user id
     * @returns {object} sql query
     */
    static async updateBuyNowData(data, proid, uid) {
        let postData = data
        const mysqli = {}
        const acceptedObjects = [
            'per_total',
            'total_amount',
            'tax_percent',
            'total_tax',
            'shipping_percent',
            'total_shipping',
            'buyer_premium_percent',
            'total_premium',
            'cart_group',
            'delivery_type',
        ]
        postData = _.omit(postData, (value, key) => {
            if (
                _.isNull(value) ||
                _.isUndefined(value) ||
                value === '' ||
                !_.contains(acceptedObjects, key)
            ) {
                return true
            }
            return false
        })
        let escapeData = []
        const defaultKeys = []
        const defaultValues = []
        const keyswithescape = defaultKeys.concat(_.keys(postData))
        escapeData = defaultValues.concat(_.values(postData))
        mysqli.keys = _.map(keyswithescape, (val) => {
            return `${val} = ?`
        })
        mysqli.pro_id = proid
        mysqli.u_id = uid
        const strQuery = await mysqclass.mysqli(mysqli, 'update_buynow_detailsnew')
        const dataPromise = await global.mysql.query(strQuery, escapeData)
        return dataPromise
    }
    /**
     * update cart data user
     * @param {object} data data
     * @param {number} uid user id
     * @returns {object} sql query
     */
    static async updateCartDataUser(data, uid) {
        let postData = data
        const mysqli = {}
        const acceptedObjects = ['total_amount', 'total_tax', 'total_shipping', 'total_premium']
        postData = _.omit(postData, (value, key) => {
            if (
                _.isNull(value) ||
                _.isUndefined(value) ||
                value === '' ||
                !_.contains(acceptedObjects, key)
            ) {
                return true
            }
            return false
        })
        let escapeData = []
        const defaultKeys = ['updated_at']
        const defaultValues = [dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')]
        const keyswithescape = defaultKeys.concat(_.keys(postData))
        escapeData = defaultValues.concat(_.values(postData))
        mysqli.keys = _.map(keyswithescape, (val) => {
            return `${val} = ?`
        })
        mysqli.u_id = uid
        const strQuery = await mysqclass.mysqli(mysqli, 'update_cart_detailsuser')
        const dataPromise = await global.mysql.query(strQuery, escapeData)
        return dataPromise
    }
    /**
     *cart qty product
     * @param {object} data data
     * @param {number} proid project id
     * @returns {object} sql query
     */
    static async cartqtyproduct(data, proid) {
        const mysqli = {}
        const proId = proid.toString().split(',')
        const escapeData = [data, proId]
        mysqli.keys = ' booked = booked + ?'
        mysqli.values = ' id IN (?) '
        mysqli.tables = ' projects '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *cart Timer
     * @param {number} cartid cart id
     * @returns {object} sql query
     */
    static async cartTimer(cartid) {
        const mysqli = {}
        const timer = global.configurations.variables.cart_timer || 0
        const escapeData = [
            dateFormat(new Date(new Date().getTime() + timer * 1000), 'yyyy-mm-dd HH:MM:ss'),
            cartid,
        ]
        mysqli.keys = ' date_end = ?'
        mysqli.values = ' cart_id IN (?) '
        mysqli.tables = ' cart_temp '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *cart Timer update
     * @param {number} uid user id
     * @returns {object} sql query
     */
    static async cartTimerUpdate(uid) {
        const mysqli = {}
        const timer = global.configurations.variables.cart_timer || 0
        const escapeData = [
            dateFormat(new Date(new Date().getTime() + timer * 1000), 'yyyy-mm-dd HH:MM:ss'),
            uid,
        ]
        mysqli.keys = ' date_end = ?'
        mysqli.values = ` user_id = ? and paid = 0 and date_end IS NOT NULL`
        mysqli.tables = ' cart_temp '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * get all temp cart group
     * @param {object} req request object
     * @returns {object} sql query
     */
    static async getAllTempCartsGroups(req) {
        let mysql = ''
        let row = ''
        let where = ''
        const order = 'crt.cart_id asc'
        where += ``
        row = 'temp_cart_all_cartid'
        let uidc = 0
        if (req.user) {
            uidc = typeof req.user.id === 'undefined' ? 0 : req.user.id
        }
        const escapeData = [uidc]
        const ordergor = order === '' ? '' : `order by ${order}`
        mysql = {
            where,
            order: ordergor,
            userid: uidc,
        }

        const strQuery = await mysqclass.mysqli(mysql, row)
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *
     * @param {object} req request object
     * @param {object} data data
     * @param {number} count count
     * @returns {object} sql query
     */
    static async allCartItems(req, data, count) {
        const baseTableUsed = global.configColumns.cart_temp
        const customTableUsed = { enabled: 0 }

        const mysql = {}
        let row = ''
        let where = ''
        let subquery = ''
        const order = 'crt.cart_id asc'
        const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        if (req.body.group_id) {
            where +=
                count === 1
                    ? `and crt.cart_group = ${req.body.group_id}`
                    : ' and crt.cart_group = 0'
        } else if (req.body.cart_id) {
            where +=
                count === 1 ? `and crt.cart_id IN (${req.body.cart_id})` : ' and crt.cart_group = 0'
        }

        const generatedData = commonProduct.generateJoinWithColum(baseTableUsed, customTableUsed, [
            'id',
        ])

        row = 'temp_cart_all_item'
        let uidc = 0
        if (req.body.user_id) {
            uidc = req.body.user_id
        }
        if (req.user && uidc === 0) {
            uidc = typeof req.user.id === 'undefined' ? 0 : req.user.id
        }
        const escapeData = [uidc]
        const ordergor = order === '' ? '' : `order by ${order}`

        mysql.customTableJoin = generatedData.customTableJoin
        mysql.columns = generatedData.rowstoFetch

        const additionalTable = global.configColumns.projects
        const customAdditionalTable = global.configColumns.custom_projects

        const additionalGeneratedData = commonProduct.additionalTableJoin(
            additionalTable,
            customAdditionalTable,
            baseTableUsed,
            'left join',
            'id',
            'project_id',
        )
        mysql.customTableJoin = `${mysql.customTableJoin} ${additionalGeneratedData.customTableJoin}`
        mysql.columns = mysql.columns.concat(additionalGeneratedData.rowstoFetch)

        if (global.configFeatures.ttw_bidding && global.configFeatures.ttw_bidding.enabled) {
            subquery += `  ,if(it.public_start_date < "${dateNow}",1,0) isPublic `
            subquery += ` ,(select coalesce(sum(Case when ttw.update_proposed_amount = 0 then ttw.proposed_amount else ttw.update_proposed_amount end),0) as ttwQty from ttwbids as ttw where ttw.project_id = it.ttw_offer_project_id and ttw.user_id = ${uidc}) as ttwQty`
            subquery += ` ,(select coalesce(sum(bb.qty),0) from buynow as bb where bb.project_id = p.id and bb.user_id = ${uidc}) as ttwSold`
        }

        mysql.where = where
        mysql.order = ordergor
        mysql.dateNow = dateNow
        mysql.userid = uidc
        mysql.subquery = subquery

        const strQuery = await mysqclass.mysqli(mysql, row)

        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     *
     * @param {number} buynowID buynow id
     * @param {number} userId user id
     * @param {string} type type
     * @returns {object} sql query
     */
    static async updateAddress(buynowID, userId, type) {
        const mysql = {}
        const escapeData = [type, userId]
        const strQuery = await mysqclass.mysqli(mysql, 'insert_in_invoice_address')
        const dataReturn = await global.mysqlsingle.query(strQuery, escapeData)
        if (typeof dataReturn.insertId !== 'undefined') {
            const mysql1 = {}
            const escapeData1 = [dataReturn.insertId, buynowID.toString().split(','), userId]
            const strQuery1 = await mysqclass.mysqli(mysql1, 'update_invoice_address')
            const dataReturn1 = await global.mysqlsingle.query(strQuery1, escapeData1)
            return dataReturn1
        }
        return ''
    }
    /**
     *update Admin fee
     * @param {object} req request object
     * @returns {object} sql query
     * @returns {object} sql query
     */
    static async updateAdminFee(req) {
        const mysql = {}
        const escapeData = [
            parseFloat(req.body.admin_fee_percent).toFixed(2),
            parseFloat(req.body.admin_fee).toFixed(2),
            req.body.common_invoice,
            req.body.user_id,
        ]
        const strQuery = await mysqclass.mysqli(mysql, 'update_adminfee')
        const dataReturn = await global.mysqlsingle.query(strQuery, escapeData)
        return dataReturn
    }

    static async extendCartTimer(req) {
        const mysqli = {}
        const timer = 600
        const escapeData = [
            dateFormat(new Date(new Date().getTime() + timer * 1000), 'yyyy-mm-dd HH:MM:ss'),
            req.body.user_id,
        ]
        mysqli.keys = ' date_end = ?'
        mysqli.values = ' user_id IN (?) and date_end IS NOT NULL '
        mysqli.tables = ' cart_temp '
        const strQuery = await mysqclass.mysqli(mysqli, 'update_tables')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
}

module.exports.default = buynowModule