admin/modules/bid_deposit.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 moment = require('moment')

const mysqclass = require('./mysqli').default
const commonProduct = require('../../common/products').default
/**
 * @class class to handle product functions
 */
class adminBidDepositModule {
    /**
     * 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 data = req.body
        const mysql = {}
        let row = ''
        let order = ''
        const sortorder = data.orderby
        let where = ''
        let limitf = ''

        const dateNow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
        if (typeof req.body.limit === 'undefined') {
            req.body.limit = global.configurations.variables.search_limit || 25
        }
        if (typeof req.body.page === 'undefined') {
            req.body.page = 1
        }
        if (sortorder === 1) {
            order = 'order by p.date_closed asc'
        } else if (sortorder === 2) {
            order = 'order by p.id desc '
        }
        if (req.body.market_status) {
            if (Array.isArray(req.body.market_status)) {
                const values = req.body.market_status.join('","')
                where += ` AND p.market_status in ("${values}") `
            } else if (typeof req.body.market_status === 'string') {
                where += ` AND p.market_status = "${req.body.market_status}" `
            }
        } else {
            where += ` `
        }

        if (req.body.similars) {
            where += commonProduct.similarData(req)
        }
        if (req.body.filters) {
            where += commonProduct.filterData(req)
        }

        const baseTableUsed = global.configColumns.projects
        const customTableUsed = global.configColumns.custom_projects
        const generatedData = commonProduct.generateJoinWithColum(baseTableUsed, customTableUsed, [
            'id',
        ])

        console.log('generatedData', generatedData)
        mysql.customTableJoin = generatedData.customTableJoin
        mysql.columns = generatedData.rowstoFetch
        mysql.mainTable = generatedData.mainTableJoin

        row = count === 1 ? 'get_all_bid_deposit_search' : 'get_all_bid_deposit_search_limit'
        const limitrg = req.body.limit
        let uidc = 0
        if (req.user) {
            uidc = typeof req.user.id === 'undefined' ? 0 : req.user.id
        }

        let escapeData = []
        if (count === 1) {
            let pagen = (req.body.page - 1) * limitrg
            if (parseInt(pagen, 10) < 0) {
                pagen = 0
            }
            limitf = ` limit ${pagen},${limitrg}`
            escapeData = [uidc]
        } else {
            escapeData = [uidc]
        }
        mysql.where = where
        mysql.order = order
        mysql.limitf = limitf
        mysql.dateNow = dateNow

        const strQuery = await mysqclass.mysqli(mysql, row)
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        console.log('Bid Deposit Query', strQuery, escapeData)
        return dataReturn
    }
    /**
     * Get all deposits
     * @param {object} req request data
     * @param {string} count count for the pagination
     * @returns {object} sql response
     */
    static async fetchDepositsAll(req, count) {
        const mysql = {}
        let where = '1 '
        let limitf = ''
        let order = ''
        let row = ''

        const baseTableUsed = global.configColumns.bid_deposit
        const customTableUsed = { enabled: 0 }

        if (typeof req.body.limit === 'undefined') {
            req.body.limit = global.configurations.variables.search_limit || 25
        }
        if (typeof req.body.page === 'undefined') {
            req.body.page = 1
        }

        if (req.body.filters) {
            where += commonProduct.filterData(req)
        }

        if (req.body.orderby || req.body.order) {
            const sortReturn = commonProduct.sortOrderData(req, where)
            if (sortReturn.order) {
                order = sortReturn.order
            }
            if (sortReturn.where) {
                where += sortReturn.where
            }
        }

        const limitrg = req.body.limit

        if (count === 1) {
            let pagen = (req.body.page - 1) * limitrg
            if (parseInt(pagen, 10) < 0) {
                pagen = 0
            }
            limitf = ` limit ${pagen},${limitrg}`
        }

        const generatedData = commonProduct.generateJoinWithColum(
            baseTableUsed,
            customTableUsed,
            [],
        )
        mysql.customTableJoin = generatedData.customTableJoin
        mysql.mainTableJoin = generatedData.mainTableJoin
        mysql.columns = generatedData.rowstoFetch
        mysql.order = order
        mysql.where = where
        mysql.limitf = limitf

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

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

        const additionalTable2 = global.configColumns.users
        const customAdditionalTable2 = global.configColumns.custom_users

        const additionalGeneratedData2 = commonProduct.additionalTableJoin(
            additionalTable2,
            customAdditionalTable2,
            baseTableUsed,
            'inner join',
            'id',
            'user_id',
        )
        mysql.customTableJoin = `${mysql.customTableJoin} ${additionalGeneratedData2.customTableJoin}`
        mysql.columns = mysql.columns.concat(additionalGeneratedData2.rowstoFetch)

        row =
            count === 1
                ? 'get_all_bid_deposit_transactions'
                : 'get_all_bid_deposit_transactions_limit'

        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, row)
        const data = await global.mysql.query(strQuery, escapeData)
        return data
    }
}

module.exports.default = adminBidDepositModule