front/controllers/common/index.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  # ||
|| # ---------------------------------------------------------------------- # ||
|| ########################################################################## ||
\* ============================================================================ */

/* eslint-disable prefer-destructuring */
/* eslint-disable no-param-reassign */
const jwt = require('jsonwebtoken')
const commonModule = require('../../modules/commonModule').default
const commonFunction = require('../../../common/function').default
const schemaModule = require('./schema').default
const { jsonResponse } = require('../logger')

module.exports = {
    /**
     * Get Common Values
     *
     * @memberOf frontend.common
     * @param {object} req req object
     * @param {object} res res object
     */
    commonValues: async (req, res) => {
        try {
            const responseData = global.configurations
            responseData.features = global.configFeatures
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Settings variables successfully retrieved!',
                responseData,
            })
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * Get Static pages
     *
     * @memberOf frontend.common
     * @param {commonModule.getStaticContent} module
     */
    getStaticPage: async (req, res) => {
        let record = {}
        try {
            const id = typeof req.body.id === 'undefined' ? '' : req.body.id
            const [records] = await Promise.all([commonModule.getStaticContent(id)])
            record = records[0]
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        } finally {
            const responseData = { record }
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        }
    },
    /**
     * getPreviousData
     *
     * @memberOf frontend.common
     * @param {commonFunction.fetchFilteredDataFunction} module
     */
    getPreviousData: async (req, res) => {
        try {
            const baseTableUsed = global.configColumns[req.body.primaryTable]
            const customTableUsed = req.body.customTable
                ? global.configColumns[req.body.customTable]
                : { enabled: 0 }
            req.body.filters = req.body.filters ? req.body.filters : {}
            if (req.body.getUser) {
                req.body.filters.user_id = { value: req.user.id, field: 'user_id', type: 'in' }
            }
            const [records, totalRecords] = await Promise.all([
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 1),
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
            ])
            const responseData = { records: records[0], totalRecords: totalRecords[0].length }
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * insertEntry
     *
     * @memberOf frontend.common
     * @param {commonModule.insertentry} module
     */
    insertEntry: async (req, res) => {
        try {
            await Promise.all([commonModule.insertentry(req, req.body)])
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
            })
        } catch (e) {
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * updateEntry
     *
     * @memberOf frontend.common
     * @param {commonModule.insertentry} module
     */
    updateEntry: async (req, res) => {
        try {
            await Promise.all([commonModule.updateentry(req, req.body)])
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
            })
        } catch (e) {
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * categorygetlist
     *
     * @memberOf frontend.common
     * @param {object} req req object
     * @param {object} res res object
     * @param {commonModule.commonselectparenttable} module
     */
    categorygetlist: async (req, res) => {
        try {
            const [catlisting] = await Promise.all([
                commonModule.commonselectparenttable(
                    '*',
                    'id',
                    req.body.id,
                    global.configColumns.categories,
                ),
            ])
            const postinglist = catlisting
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                postinglist,
            })
        } catch (e) {
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * getAllCountries
     *
     * @memberOf frontend.common
     * @param {object} req req object
     * @param {object} res res object
     * @param {commonFunction.fetchFilteredDataFunction} module
     */
    getAllCountries: async (req, res) => {
        try {
            const baseTableUsed = {
                enabled: 1,
                base: 1,
                search: 0,
                ext_name: 'data_country',
                short_name: 'coun',
                foreign_key: null,
                alias_columns: {},
                array_columns: [
                    'id',
                    'isoCode',
                    'name',
                    'phonecode',
                    'currency',
                    'latitude',
                    'longitude',
                    'zoneName',
                    'gmtOffset',
                    'gmtOffsetName',
                    'abbreviation',
                    'tzName',
                ],
                default_values: [
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                    'NULL',
                ],
                default_columns: [
                    'id',
                    'isoCode',
                    'name',
                    'phonecode',
                    'currency',
                    'latitude',
                    'longitude',
                    'zoneName',
                    'gmtOffset',
                    'gmtOffsetName',
                    'abbreviation',
                    'tzName',
                ],
                order: 'name',
            }

            const customTableUsed = { enabled: 0 }
            req.body.filters = req.body.filters ? req.body.filters : {}
            const [records, totalRecords] = await Promise.all([
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
            ])
            const responseData = { records: records[0], totalRecords: totalRecords[0].length }
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * getAllStates
     *
     * @memberOf frontend.common
     * @param {object} req req object
     * @param {object} res res object
     * @param {commonFunction.fetchFilteredDataFunction} module
     */
    getAllStates: async (req, res) => {
        try {
            const baseTableUsed = {
                enabled: 1,
                base: 1,
                search: 0,
                ext_name: 'data_state',
                short_name: 'stat',
                foreign_key: null,
                alias_columns: {},
                array_columns: ['id', 'name', 'isoCode', 'countryCode', 'latitude', 'longitude'],
                default_values: ['NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL'],
                default_columns: ['id', 'name', 'isoCode', 'countryCode', 'latitude', 'longitude'],
                order: 'name',
            }

            const customTableUsed = { enabled: 0 }
            req.body.filters = req.body.filters ? req.body.filters : {}
            const [records, totalRecords] = await Promise.all([
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
            ])
            const responseData = { records: records[0], totalRecords: totalRecords[0].length }
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
    /**
     * getAllCities
     *
     * @memberOf frontend.common
     * @param {object} req req object
     * @param {object} res res object
     * @param {commonFunction.fetchFilteredDataFunction} module
     */
    getAllCities: async (req, res) => {
        try {
            const baseTableUsed = {
                enabled: 1,
                base: 1,
                search: 0,
                ext_name: 'data_city',
                short_name: 'city',
                foreign_key: null,
                alias_columns: {},
                array_columns: ['id', 'name', 'countryCode', 'stateCode', 'latitude', 'longitude'],
                default_values: ['NULL', 'NULL', 'NULL', 'NULL', 'NULL', 'NULL'],
                default_columns: [
                    'id',
                    'name',
                    'countryCode',
                    'stateCode',
                    'latitude',
                    'longitude',
                ],
            }

            const customTableUsed = { enabled: 0 }
            req.body.filters = req.body.filters ? req.body.filters : {}
            const [records, totalRecords] = await Promise.all([
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
                commonFunction.fetchFilteredDataFunction(req, baseTableUsed, customTableUsed, 0),
            ])
            const responseData = { records: records[0], totalRecords: totalRecords[0].length }
            jsonResponse(res, 'success', {
                responseType: 1,
                message: 'Details successfully retrieved!',
                responseData,
            })
        } catch (e) {
            console.error(e)
            jsonResponse(res, 'error', {
                responseType: 3,
                message: 'Internal Server error!',
            })
        }
    },
}