Files
asan-service/server/ArpaWebservice.js
T
2024-12-08 10:33:37 +03:30

183 lines
5.2 KiB
JavaScript

const axios = require('axios')
/// /////////////////////////////////////////////////////////////////////////////////////////////////// verity WebService
const {
// verity
verityBaseUrl,
verityTokenUrl,
// VerityUserGroupId,
VerityBusinessCategoryId,
// VerityStockAreaId,
verityAccount,
// panatech
panatechBaseUrl,
panatechTokenUrl,
// PanatechUserGroupId,
PanatechBusinessCategoryId,
// PanatechStockAreaId,
panatechAccount
} = require('./_env')
// get verity token
let verityToken = ''
module.exports.getVerityToken = async () => {
try {
const getToken = await axios.get(verityTokenUrl, { params: verityAccount })
verityToken = getToken.data
console.log(verityToken)
} catch (err) {
console.log(err)
}
}
const verityAxiosConfig = () => {
return {
baseURL: verityBaseUrl,
headers: {
Authorization: `Bearer ${verityToken}`
}
}
}
// export verity values
module.exports.verityAxiosConfig = verityAxiosConfig
/// /////////////////////////////////////////////////////////////////////////////////////////////////// panatech WebService
// get panatech token
let panatechToken = ''
module.exports.getPanatechToken = async () => {
try {
const getToken = await axios.get(panatechTokenUrl, { params: panatechAccount })
panatechToken = getToken.data
console.log(panatechToken)
} catch (err) {
console.log(err)
}
}
const panatechAxiosConfig = () => {
return {
baseURL: panatechBaseUrl,
headers: {
Authorization: `Bearer ${panatechToken}`
}
}
}
// export panatech values
module.exports.panatechAxiosConfig = panatechAxiosConfig
/// /////////////////////////////////////////////////////////////////////////////////////////////////// methods
function axiosConfig(db) {
if (db === 'verity') return verityAxiosConfig()
else if (db === 'panatech') return panatechAxiosConfig()
else return {}
}
function BusinessCategoryId(db) {
if (db === 'panatech') return PanatechBusinessCategoryId
else if (db === 'verity') return VerityBusinessCategoryId
else return null
}
module.exports.saveTransactionToArpa = (data, items, db) => {
// add static values to data
data.TransactionID = 'null'
data.BusinessCode = 'null'
data.DocAliasID = 144
data.TrMessage = ''
const ArpaData = {
Data: data,
Items: items
}
// @example
// const arpaExample = {
// "Data": {"TransactionID": null, "BusinessID": 3, "DocAliasId": 144, "Description": "تست", "cAddress1": "تهران", "cTel1": "0218884455", "TransCCustom1": "آقای موسوی"},
// "Items": [{"TransLineID": null, "itemId": 5302, "MjQty": 20, "StockAreaId": 1}, {"TransLineID": null, "itemId": 5302, "MjQty": 20, "StockAreaId": 1}]
// }
return new Promise(async (resolve, reject) => {
try {
const transaction = await axios.post('/api/NewTransaction', ArpaData, axiosConfig(db))
const ArpaResponse = transaction.data
if (ArpaResponse.data) resolve(ArpaResponse.data[0].TransNumber)
else reject(ArpaResponse.error || 'ARPA WebService Error')
} catch (e) {
reject(e)
}
})
}
module.exports.saveUserToArpa = (userData, db) => {
const data = {
BusName: userData.first_name + ' ' + userData.last_name + ' (گارانتی سایت) ',
Email: userData.email,
PhoneNo: userData.tel_number,
Mobile: userData.mobile_number,
Name: userData.first_name,
Family: userData.last_name,
NationalCode: userData.national_code,
ProvinceId: userData.province_id,
CityId: userData.city_id,
Address: userData.address,
PostalCode: userData.postal_code,
BusinessCategoryId: BusinessCategoryId(db),
CheckExistNationalCode: true
}
console.log(data)
return new Promise(async (resolve, reject) => {
try {
const ArpaID = await axios.get('/api/postBusiness', { ...axiosConfig(db), params: { ...data } })
console.log(ArpaID)
if (!ArpaID.data.data) return reject(new Error('Cant save new user -- There is a problem in ArpaWebService'))
resolve({
businessID: ArpaID.data.data.BusinessId,
businessCode: ArpaID.data.data.BusinessCode
})
} catch (e) {
// console.log(e)
reject(e)
}
})
}
module.exports.updateUserOnArpa = (userData, arpa_businessID, db) => {
const data = {
BusName: userData.first_name + ' ' + userData.last_name + ' (گارانتی سایت) ',
Email: userData.email,
PhoneNo: userData.tel_number,
Mobile: userData.mobile_number,
Name: userData.first_name,
Family: userData.last_name,
NationalCode: userData.national_code,
ProvinceId: userData.province_id,
CityId: userData.city_id,
Address: userData.address,
PostalCode: userData.postal_code,
BusinessCategoryId: BusinessCategoryId(db),
BusinessID: arpa_businessID,
CheckExistNationalCode: true
}
console.log(data)
return new Promise(async (resolve, reject) => {
try {
const ArpaUpdate = await axios.post('/api/putBusiness', data, axiosConfig(db))
console.log(ArpaUpdate)
if (!ArpaUpdate.data.status) reject(new Error('Cant update user -- There is a problem in ArpaWebService'))
resolve('updated successfully')
} catch (e) {
console.log(e)
reject(e)
}
})
}