/* ============================================================================ *\
|| ########################################################################## ||
|| # 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 _ = require('underscore')
const parse = require('csv-parse')
const adminlanguageModule = require('../../modules/language').default
const commonFunction = require('../../../common/function').default
const { jsonResponse } = require('../logger')
const globalLangugae = async (req, text) => {
const phrase = []
const resultsData2 = {}
const languages = await Promise.all([await adminlanguageModule.getHomephraseslang(req)])
const homephrase = await Promise.all([await adminlanguageModule.getHomephrases(req)])
_.each(languages, (val) => {
phrase[val.language] = []
})
if (homephrase.length > 0) {
_.each(homephrase, (phraseexist) => {
_.each(languages, (val) => {
phrase[val.language][phraseexist.phrase] = phraseexist[val.language_slug]
})
})
}
resultsData2.all_languages = languages
resultsData2.phrase = phrase
return resultsData2
}
module.exports = {
/**
* get Language
*
* @memberOf adminside.language
* @param {adminlanguageModule.getAllGroups} modules
* @param {adminlanguageModule.getAllPhrases} modules
* @param {adminlanguageModule.getAllPhrasesLang} modules
*/
getLanguage: async (req, res) => {
const resultsData = {}
try {
const latestlang = await globalLangugae(req, 'language')
req.body.all_languages = latestlang.all_languages
const [grops, phrases, phraseslanguage, phraseslanguageLength] = await Promise.all([
adminlanguageModule.getAllGroups(req),
adminlanguageModule.getAllPhrases(req),
adminlanguageModule.getAllPhrasesLang(req, 0),
adminlanguageModule.getAllPhrasesLang(req, 1),
])
resultsData.languages = latestlang.all_languages[0]
resultsData.grops = grops
resultsData.phrases = phrases
resultsData.phraseslanguage = phraseslanguage
resultsData.phraseslanguageLength = phraseslanguageLength
resultsData.used_language = 'used_language'
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Details successfully retrieved!',
responseData: resultsData,
})
}
},
/**
* add Phrase
*
* @memberOf adminside.language
* @param {adminlanguageModule.checkPhrase} modules
* @param {adminlanguageModule.updatePhrase} modules
* @param {adminlanguageModule.addPhrase} modules
*/
addPhrase: async (req, res) => {
const resultsData = {}
try {
const sellang = req.body.sellang
const [checkPhrase] = await Promise.all([adminlanguageModule.checkPhrase(req)])
if (checkPhrase.length > 0) {
if (req.body.id) {
await adminlanguageModule.updatePhrase(req)
} else {
resultsData.phrase_exist = 1
}
} else {
await adminlanguageModule.addPhrase(req)
}
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, resultsData.phrase_exist ? 'error' : 'success', {
responseType: 1,
message: resultsData.phrase_exist
? 'Variable already exists'
: 'Successfully added',
responseData: resultsData,
})
}
},
/**
* add Language Group
*
* @memberOf adminside.language
* @param {adminlanguageModule.checkGroups} modules
* @param {adminlanguageModule.addGroups} modules
*/
addLangGroup: async (req, res) => {
const resultsData = {}
try {
const [checkGroup] = await Promise.all([adminlanguageModule.checkGroups(req)])
if (checkGroup.length > 0) {
resultsData.group = 1
} else {
await adminlanguageModule.addGroups(req)
}
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Successfully added',
responseData: resultsData,
})
}
},
/**
* Phrase Search
*
* @memberOf adminside.language
* @param {adminlanguageModule.phraseSearch} modules
*/
phraseSearch: async (req, res) => {
const resultsData = {}
try {
const latestlang = await globalLangugae(req, 'language')
req.body.all_languages = latestlang.all_languages
const [phraseslanguage, phraseslanguageLength, activelots] = await Promise.all([
adminlanguageModule.phraseSearch(req, 0),
adminlanguageModule.phraseSearch(req, 1),
])
resultsData.phraseslanguage = phraseslanguage
resultsData.phraseslanguageLength = phraseslanguageLength
resultsData.activelots = activelots
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Details successfully retrieved!',
responseData: resultsData,
})
}
},
/**
* Phrase Search Text
*
* @memberOf adminside.language
* @param {adminlanguageModule.getAllPhrasesLang} modules
* @param {commonFunction.getdynamicinnercontents} modules
*/
phraseSearchText: async (req, res) => {
let resultsData = {}
try {
const latestlang = await globalLangugae(req, 'language')
req.body.all_languages = latestlang.all_languages
const [phraseslanguage, phraseslanguageLength, activelots] = await Promise.all([
adminlanguageModule.getAllPhrasesLang(req, 0),
adminlanguageModule.getAllPhrasesLang(req, 1),
])
resultsData.records = phraseslanguage
resultsData.totalRecords = [phraseslanguageLength]
resultsData.activelots = activelots
resultsData = await commonFunction.getdynamicinnercontents(req, resultsData)
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Details successfully retrieved!',
responseData: resultsData,
})
}
},
/**
* Phrase Search Text
*
* @memberOf adminside.language
* @param {adminlanguageModule.getAllPhrasesLang} modules
* @param {commonFunction.getdynamicinnercontents} modules
*/
getAllGroup: async (req, res) => {
let resultsData = {}
try {
const [group, groupLength, activelots] = await Promise.all([
adminlanguageModule.getAllGroups(req, 0),
adminlanguageModule.getAllGroups(req, 1),
])
resultsData.records = group
resultsData.totalRecords = [groupLength]
resultsData.activelots = activelots
resultsData = await commonFunction.getdynamicinnercontents(req, resultsData)
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Details successfully retrieved!',
responseData: resultsData,
})
}
},
/**
* update phrase
*
* @memberOf adminside.language
* @param {adminlanguageModule.updatesinglePhrase} modules
*/
updatePhrase: async (req, res) => {
const resultsData = {}
try {
await Promise.all([await adminlanguageModule.updatesinglePhrase(req)])
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Successfully changed',
responseData: resultsData,
})
}
},
/**
* getHomePhrase
*
* @memberOf adminside.language
* @param {adminlanguageModule.getHomephrases} modules
*/
getHomePhrase: async (req, res) => {
const resultsData = {}
try {
await Promise.all([await adminlanguageModule.getHomephrases(req)])
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Details successfully retrieved!',
responseData: resultsData,
})
}
},
/**
* getHomePhraseLoad
*
* @memberOf adminside.language
* @param {globalLangugae} modules
*/
getHomePhraseLoad: async (req, res) => {
const resultsData = {}
try {
const latestlang = await globalLangugae(req, 'language')
resultsData.all_languages = latestlang.all_languages
resultsData.phrase = latestlang.phrase
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
} finally {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Successfully changed',
responseData: resultsData,
})
}
},
/**
* languagephrase_import
*
* @memberOf adminside.language
* @param {adminlanguageModule.checkPhrase} modules
* @param {adminlanguageModule.updatePhrase} modules
* @param {adminlanguageModule.updateLanguagePhrase} modules
*/
languagephrase_import: async (req, res) => {
const fs = require('fs')
const languageColumn = req.body.activeLang
const rs = fs.createReadStream(`./public/uploads/temp/${req.body.uploadFiles[0]}`)
const parser = parse(
{
columns: true,
},
async (err, data) => {
const validCols = ['group_id', 'phrase', languageColumn]
const lang = []
if (parser.options.columns.length === validCols.length) {
if (
parser.options.columns[2] &&
parser.options.columns[2].name === validCols[2]
) {
const counts = data.length
for (let i = 0; i < counts; i += 1) {
lang.phrase = data[i].phrase
lang.words = data[i][languageColumn]
lang.group_id = data[i].group_id
lang.lang_column = languageColumn
const [checkPhrase] = await Promise.all([
adminlanguageModule.checkPhrase(req, lang),
])
if (checkPhrase.length > 0) {
await adminlanguageModule.updatePhrase(req, lang)
} else {
await adminlanguageModule.updateLanguagePhrase(req, lang)
}
if (counts === i + 1) {
jsonResponse(res, 'success', {
responseType: 1,
message: 'Status successfully added',
responseData: [],
})
}
}
} else {
jsonResponse(res, 'error', {
responseType: 3,
message: 'Language selected is not added on CSV',
})
}
} else {
jsonResponse(res, 'error', {
responseType: 3,
message:
'Only three columns are permitted in CSV. They are group_id,phrase and Language name in small letter preceeded by for_',
})
}
},
)
await rs.pipe(parser)
},
}