admin/modules/language.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
/**
 * @class class to handle langauage functions
 */
class adminlanguageModule {
    /**
     * Get all Groups
     * @param {object} req request data
     * @param {number} c by default 1
     * @returns {object} sql response
     */
    static async getAllGroups(req, c = 1) {
        const mysql = {}

        mysql.limit = ''
        const perlimit = req.body.limit ? req.body.limit : 10
        let page = typeof req.body.page !== 'undefined' ? req.body.page : 1
        page = page > 0 ? (page - 1) * perlimit : 0
        if (c === 0) {
            mysql.limit = `limit ${page},${perlimit}`
        }

        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, 'get_groups')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * Get all Phrases
     * @param {object} req request data
     * @param {number} c by default 1
     * @returns {object} sql response
     */
    static async getAllPhrases(req) {
        const mysql = {}
        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, 'get_phrases')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * check phrase
     * @param {object} req request data
     * @param {Object} dataArray by default {phrase:'', group_id:''}
     * @returns {object} sql response
     */
    static async checkPhrase(req, dataArray = { phrase: '', group_id: '' }) {
        const mysql = {}
        const escapeData = [req.body.temp_var || dataArray.phrase]
        const strQuery = await mysqclass.mysqli(mysql, 'check_phrase')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * update phrase
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async updatePhrase(req) {
        const mysql = {}
        mysql.clname = req.body.sellang
        const escapeData = [req.body.phrase, req.body.temp_var]
        const strQuery = await mysqclass.mysqli(mysql, 'updatephrase')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * Get Home phrases
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async getHomephrases(req) {
        const mysql = {}
        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, 'get_home_phrase')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * Get all Groups
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async getHomephraseslang(req) {
        const mysql = {}
        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, 'get_home_phraselang')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * updat single phrase
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async updatesinglePhrase(req, dataArray = {}) {
        const mysql = {}
        mysql.clname = req.body.lang_list || dataArray.lang_column
        const escapeData = [
            req.body.phrase_value || dataArray.words,
            req.body.phrase_list || dataArray.phrase,
        ]
        const strQuery = await mysqclass.mysqli(mysql, 'update_single_phrase')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * add Phrase
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async addPhrase(req) {
        const mysql = {}
        mysql.clname = req.body.sellang
        const escapeData = [req.body.selgroup, req.body.temp_var, req.body.phrase]
        const strQuery = await mysqclass.mysqli(mysql, 'new_phrase')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * chekGroups
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async checkGroups(req) {
        const mysql = {}
        const escapeData = [req.body.group_name]
        const strQuery = await mysqclass.mysqli(mysql, 'check_group')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * add groups
     * @param {object} req request data
     * @returns {object} sql response
     */
    static async addGroups(req) {
        const mysql = {}
        const escapeData = [req.body.group_name, req.body.group_desc]
        const strQuery = await mysqclass.mysqli(mysql, 'new_language_group')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * phrase Search
     * @param {object} req request data
     * @param {object} c number of values we want
     * @returns {object} sql response
     */
    static async phraseSearch(req, c) {
        const mysql = {}
        let where = ''
        let limit = ''
        const lang = req.body.lang_list != null ? req.body.lang_list : 'for_english'
        let page = typeof req.body.page !== 'undefined' ? req.body.page : 1
        const perlimit = 10
        page = page > 0 ? (page - 1) * perlimit : 0
        if (c === 0) {
            limit = `limit ${page},${perlimit}`
        } else {
            limit = ''
        }
        if (typeof req.body.searchkey !== 'undefined') {
            where += `where lp.phrase like '%${req.body.searchkey}%'`
            _.each(req.body.all_languages, async (element) => {
                where += `OR lp.${element.language_slug} like '%${req.body.searchkey}%'`
            })
        }
        mysql.slname = lang
        mysql.where = where
        mysql.limit = limit
        const escapeData = [req.body.group_name, req.body.group_desc]
        const strQuery = await mysqclass.mysqli(mysql, 'get_phrases_lang')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * get all phrases language
     * @param {object} req request data
     * @param {object} c number of values we want
     * @returns {object} sql response
     */
    static async getAllPhrasesLang(req, c) {
        const mysql = {}
        const lang = req.body.lang_list != null ? req.body.lang_list : 'for_english'
        let where = ''
        let page = typeof req.body.page !== 'undefined' ? req.body.page : 1
        const perlimit = req.body.limit ? req.body.limit : 10
        page = page > 0 ? (page - 1) * perlimit : 0
        let limit = ''
        if (c === 0) {
            limit = `limit ${page},${perlimit}`
        }
        if (typeof req.body.selgroup !== 'undefined' && req.body.selgroup) {
            where += `where lp.group_id =${req.body.selgroup}`
        }
        if (typeof req.body.searchkey !== 'undefined' && req.body.searchkey) {
            if (req.body.searchkey !== '') {
                where += ` AND lp.phrase like '%${req.body.searchkey}%'`
                _.each(req.body.all_languages, async (element, index) => {
                    where += `OR lp.${element[index].language_slug} like '%${req.body.searchkey}%'`
                })
            }
        }
        mysql.slname = lang
        mysql.where = where
        mysql.limit = limit
        const escapeData = []
        const strQuery = await mysqclass.mysqli(mysql, 'get_phrases_lang')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
    /**
     * gupdate language phrases
     * @param {object} req request data
     * @param {object} dataArray request data
     * @returns {object} sql response
     */
    static async updateLanguagePhrase(req, dataArray) {
        let mysql = {}
        mysql = { clname: dataArray.lang_column }
        const escapeData = [dataArray.words, dataArray.phrase, dataArray.group_id]
        const strQuery = await mysqclass.mysqli(mysql, 'update_phrases')
        const dataReturn = await global.mysql.query(strQuery, escapeData)
        return dataReturn
    }
}

module.exports.default = adminlanguageModule