'use strict' const request = require('request'); const db = require('../../utils/db_config'); const { getCurrentDateTime } = require("../helper"); const crypto = require('crypto'); const { HASH_KEY } = require('../../utils/consts'); const { getInvestorIdQuery } = require('./query'); const { getInvestorPan } = require('./query'); const { errorLogStatus } = require('../Errorlog'); function generateHMACSHA256(input, key) { const hmac = crypto.createHmac('sha256', key); hmac.update(input, 'utf8'); return hmac.digest('hex'); } function getHashCode(req) { const inputString_GetInvestorDashboard = `||${getCurrentDateTime()}`; const key = HASH_KEY; const hash_GetInvestorDashboard = generateHMACSHA256(inputString_GetInvestorDashboard, key); return hash_GetInvestorDashboard } const fetchInvestorDetails = ((req, res) => { getAllInvstorData(); res.send("in procress"); }) const getAllInvstorData = async () => { var options = { method: 'POST', url: 'https://supply-integration.liquiloans.com/api/v2/GetAllInvestors', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ mid: "M00201", checksum: getHashCode(), timestamp: getCurrentDateTime(), filter_on: "", filter_data: [] }) }; request(options, function (error, response) { if (error) throw new Error(error); getAllInvstorDataStore(response.body); }); } const getAllInvstorDataStore = async (body) => { try { const records = JSON.parse(body) let item = records?.data let storeData = []; if (item.length) { for (let i = 0; i < item?.length; i++) { let log = await getInvestorIdQuery(item[i].investor_id); if (log == 0) { let data = {}; data.investor_id = item[i].investor_id, data.name = item[i].name, data.entity_type = item[i].entity_type, data.pan = item[i].pan, data.email = item[i].email, data.contact_number = item[i].contact_number, data.ifa_id = item[i].ifa_id, data.created_at = item[i].created_at, data.rm_name = item[i].rm_name, data.last_updatedAt = new Date storeData.push(data); } } await db.liquiloansInvestors.bulkCreate(storeData); getAllInvestorIdFun(); } } catch (err) { errorLogStatus(err, "nodeJs_liquiloan_getAllInvstorDataStore") } } const getAllInvestorIdFun = async () => { let allInvestorId = await db.liquiloansInvestors.findAll({where: {client_code : null}}); let sendId = JSON.stringify(allInvestorId, null, 2) await getClientCode(sendId); }; const getClientCode = async (body) => { try { const records = JSON.parse(body); let item = records; let storeData = []; if (item.length) { for (let i = 0; i < item?.length; i++) { let clientCode = await getInvestorPan(item[i].pan); if (clientCode.length === 1) { let data = { ...item[i] }; data.client_code = clientCode[0].CLIENT_CODE, storeData.push(data); await db.liquiloansInvestors.update(data, { where: { investor_id: data.investor_id } }); } } } } catch (err) { errorLogStatus(err, "nodeJs_liquiloan_getClientCode") } } module.exports = { fetchInvestorDetails }