/* ============================================================================ *\
|| ########################################################################## ||
|| # 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 asyncNPM = require('async')
const dateFormat = require('dateformat')
const bidModule = require('../../modules/bid').default
const sendgridModule = require('../../../common/thirdparty/sendgrid').default
const twilioModule = require('../../../common/thirdparty/twilio').default
const commonFunction = require('../../../common/function').default
const schemaModule = require('./schema').default
const { jsonResponse } = require('../logger')
module.exports = {
/**
* Confirm bid
*
* @memberOf frontend.bid
* @param {object} req request object
* @param {object} res response object
*/
bidConfirm: async (req, res) => {
try {
global.bid_increment = 10
const finalresults = {}
req.session[`${req.body.id}proxybid${req.user.id}`] = req.body.id
req.body.bid_increment = global.bid_increment
let bidtopstatus = ''
// let secondhuname = 'Guest';
let firsthuname = 'Guest'
let cuserRealtimeNextbid = 0
let cuserRealtimeIncerment = 0
let biddingType = 'hard'
if (
req.body.bidding_type &&
(req.body.bidding_type === 'hard' || req.body.bidding_type === 'proxy')
) {
biddingType = req.body.bidding_type
}
// global.general.proxy_bidding = 1;
if (
typeof req.body.wsprice === 'undefined' ||
req.body.wsprice === '' ||
Number.isNaN(req.body.wsprice) ||
(typeof req.body.wsprice !== 'number' && req.body.wsprice % 1 !== 0)
) {
finalresults.bpop_cbidder = req.user.id
finalresults.id = req.body.id
finalresults.status = 'failed'
finalresults.error = 'Bid amount is not a valid one'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
}
req.body.logstdate = new Date()
res.send('ok')
req.body.belowFiveAuction = 0
req.body.auctionid = 0
req.body.first_bidder = false
req.body.first_bidder_amount = req.body.wsprice
req.body.bid_pos = 1
let isdupiuser = 0
const results = await Promise.all([bidModule.bidProductDetail(req.body.id)])
const prdt = results[0][0]
if (prdt.auctionid) {
req.body.auctionid = prdt.auctionid
}
asyncNPM.waterfall(
[
(callback) => {
global.mysqlsingle.beginTransaction(async () => {
try {
req.body.starting_price = prdt.wprice
req.body.title = prdt.title
req.body.spc_startp = prdt.sprice
if (req.body.wsprice < prdt.wprice) {
finalresults.bpop_cbidder = req.user.id
finalresults.id =
req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.error = 'Please submit higher bid'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
} else {
const datenow = dateFormat(new Date(), 'yyyy-mm-dd HH:MM:ss')
const closeddate = dateFormat(
new Date(prdt.date_closed),
'yyyy-mm-dd HH:MM:ss',
)
const datenowas = new Date()
const closeddateas = new Date(prdt.date_closed)
const diffMs = closeddateas.getTime() - datenowas.getTime()
// const diffMins = Math.floor((diffMs / 1000 / 60) % 60)
if (closeddate <= datenow && prdt.market_status === 'open') {
finalresults.bpop_cbidder = req.user.id
finalresults.id =
req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.error = 'item_was_closed'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
} else if (prdt.market_status !== 'open') {
finalresults.bpop_cbidder = req.user.id
finalresults.id =
req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.error = 'item_was_closed'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
} else if (
typeof global.configurations.variables.bidding_extended !==
'undefined'
) {
if (
typeof global.configurations.variables.ext_min_limit !==
'undefined' &&
typeof global.configurations.variables
.max_next_limit !== 'undefined'
) {
const extMinLimit = parseInt(
global.configurations.variables.ext_min_limit *
60000,
10,
)
const extNextLimit = parseInt(
global.configurations.variables.bidding_extended,
10,
)
const maxNextLimit = parseInt(
global.configurations.variables.max_next_limit,
10,
)
if (
parseInt(diffMs, 10) < parseInt(extMinLimit, 10) &&
parseInt(prdt.autobid_count, 10) <
parseInt(maxNextLimit, 10)
) {
const newdt = new Date(prdt.date_closed)
const minutesaddition =
parseInt(extNextLimit, 10) * 60000
// newdt.setMinutes(newdt.getMinutes() + extNextLimit);
req.body.belowFiveIncrement = new Date(
newdt.getTime() + minutesaddition,
)
req.body.belowFive = 1
await Promise.all([
bidModule.updateCloseDate(req),
bidModule.updateAutoBidCount(req),
])
if (
typeof global.configFeatures
.auction_extend_timer !== 'undefined'
) {
if (
parseInt(
global.configFeatures
.auction_extend_timer.enabled,
10,
) === 1 &&
prdt.auctionid
) {
const [auctionDetails] = await Promise.all([
bidModule.getCloseDateAuction(prdt),
])
if (auctionDetails[0].date_closed) {
if (
req.body.belowFiveIncrement >
new Date(
auctionDetails[0].date_closed,
)
) {
req.body.belowFiveAuction = 1
await Promise.all([
bidModule.updateCloseDateAuction(
req,
prdt,
),
])
}
}
}
}
// notification for bidding extended time
if (
typeof global.configFeatures
.bidding_extended_trigger !== 'undefined' &&
prdt.autobid_count === 0
) {
if (
parseInt(
global.configFeatures
.bidding_extended_trigger.enabled,
10,
) === 1
) {
req.body.refer_id = prdt.id
req.body.refer_field =
global.configFeatures.bidding_extended_trigger.cat_name
req.body.type = 'bidding_extended_trigger'
await Promise.all([
commonFunction.notifyinsert(req),
])
}
}
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
req.body.belowFive = 0
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} else {
req.body.belowFive = 0
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} else {
req.body.belowFive = 0
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
}
} catch (err) {
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
})
},
(callpass, callback) => {
req.body.enteramount = req.body.wsprice
req.body.proxyuseramt = req.body.wsprice
req.body.samehigh = ''
global.mysqlsingle.beginTransaction(async () => {
try {
const proxyUserExist = await Promise.all([
bidModule.checkUserExistInBidProxy(req),
bidModule.getProxyDetails(req, 'get_highest_biduser'),
])
req.body.highest_proxy_userid = 0
req.body.highest_proxy_amount = 0
if (proxyUserExist[1].length > 0) {
req.body.highest_proxy_userid = proxyUserExist[1][0].user_id
req.body.highest_proxy_amount = proxyUserExist[1][0].maxamount
}
req.body.is_equal = false
req.body.bid_type = 'hard_bid'
if (
req.user.id !== req.body.highest_proxy_userid &&
parseFloat(req.body.highest_proxy_amount) ===
parseFloat(req.body.wsprice)
) {
const incrementAmount = req.body.bid_increment
// req.body.wsprice = req.body.wsprice - incrementAmount;
req.body.proxyuseramt = req.body.wsprice - incrementAmount
req.body.tied_bidder = 1
req.body.is_equal = true
req.body.bid_type = 'tie_bid'
}
if (proxyUserExist[0].length > 0) {
const incrementCheck = proxyUserExist[0][0].maxamount
const incrementCheckIncrement = commonFunction.calculateArrayIncrement(
incrementCheck,
)
const incrementCheckNextbid = commonFunction.sumFloat(
incrementCheck,
incrementCheckIncrement,
)
// if (proxyUserExist[0][0].maxamount < req.body.wsprice) {
if (incrementCheckNextbid <= req.body.wsprice) {
try {
await Promise.all([bidModule.updateProxyBid(req)])
req.body.samehigh = 'proxy'
req.body.first_bidder_amount =
proxyUserExist[0][0].maxamount
callback(null, 'callpass')
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
} else {
global.mysqlsingle.commit(() => {})
finalresults.bpop_cbidder = req.user.id
finalresults.id =
req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.error = 'Cannot bid lower than proxy value'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
}
} else {
// If user is Not already exist in proxybid table
try {
await Promise.all([bidModule.insertProxyBid(req)])
req.body.first_bidder = true
callback(null, 'callpass')
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
}
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
})
},
(callpass, callback) => {
if (biddingType === 'proxy') {
global.mysqlsingle.beginTransaction(async () => {
try {
const proxyUserExist1 = await Promise.all([
bidModule.getProxyDetails(req, 'get_highest_biduser'),
bidModule.getProxyDetails(req, 'second_highest_biduser'),
bidModule.fetchLastBid(req),
])
const latestProxyBidDetails = proxyUserExist1[0][0]
const secondHighestProxyBidDetails = proxyUserExist1[1][0]
const maxieproposeamount =
proxyUserExist1[2].length > 0
? proxyUserExist1[2][0].proposed_amount
: 0
if (req.body.highest_proxy_userid !== req.user.id) {
req.body.samehigh = 'no_proxy'
const bidDiff =
parseFloat(req.body.wsprice) -
parseFloat(req.body.highest_proxy_amount)
const realBidDiff =
parseFloat(req.body.highest_proxy_amount) -
parseFloat(req.body.wsprice)
req.body.orgwsprice = req.body.wsprice
req.body.current_proxy_highest = false
if (
req.body.highest_proxy_amount > 0 &&
req.body.highest_proxy_amount < req.body.wsprice &&
req.user.id !== req.body.highest_proxy_userid
) {
let anIncre = req.body.bid_increment
anIncre = commonFunction.calculateArrayIncrement(
req.body.highest_proxy_amount,
)
if (bidDiff >= parseFloat(req.body.bid_increment)) {
req.body.wsprice = bidModule.fetchMinimumBid(
req.body.highest_proxy_amount,
anIncre,
)
if (req.body.orgwsprice === req.body.wsprice) {
req.body.bid_type = 'hard_bid'
} else if (req.body.orgwsprice > req.body.wsprice) {
req.body.bid_type = 'bid_as_proxy'
} else {
if (
req.body.orgwsprice >
req.body.highest_proxy_amount &&
req.body.orgwsprice < req.body.wsprice
) {
req.body.wsprice = req.body.orgwsprice
}
req.body.bid_type = 'hard_bid'
}
} else {
req.body.bid_type = 'bid_as_proxy'
}
if (
maxieproposeamount !== req.body.highest_proxy_amount
) {
req.body.second_highest_bid =
secondHighestProxyBidDetails.maxamount
req.body.second_highest_user_pos =
secondHighestProxyBidDetails.user_pos
req.body.next_bid = req.body.highest_proxy_amount
bidModule.insertBidsAsProxy(
req,
secondHighestProxyBidDetails.user_id,
)
}
} else if (req.body.highest_proxy_amount === 0) {
req.body.bid_increment = bidModule.fetchMinimumBid(
req.body.spc_startp,
req.body.bid_increment,
)
req.body.wsprice = req.body.spc_startp
if (bidDiff >= parseFloat(req.body.bid_increment)) {
req.body.bid_type = 'hard_bid'
}
if (req.body.orgwsprice > req.body.bid_increment) {
req.body.bid_type = 'bid_as_proxy'
}
}
try {
const resbid = await Promise.all([
bidModule.placeBidExtra(req),
])
req.body.placebid = resbid[0].insertId
const bidDetails = await Promise.all([
bidModule.fetchLastBid(req),
])
const lastBidDetails = bidDetails[0][0]
if (
lastBidDetails.user_id !==
latestProxyBidDetails.user_id &&
!req.body.is_equal
) {
const reamountlatest =
lastBidDetails.proposed_amount
let orgincrmentafterbid = req.body.bid_increment
orgincrmentafterbid = commonFunction.calculateArrayIncrement(
reamountlatest,
)
req.body.bid_type = 'bid_as_proxy'
if (
latestProxyBidDetails.maxamount >
lastBidDetails.proposed_amount
) {
req.body.bid_increment = orgincrmentafterbid
if (
bidDiff >=
parseFloat(req.body.bid_increment) ||
realBidDiff >=
parseFloat(req.body.bid_increment)
) {
req.body.next_bid = bidModule.fetchMinimumBid(
lastBidDetails.proposed_amount,
orgincrmentafterbid,
)
} else {
req.body.next_bid =
latestProxyBidDetails.maxamount
}
await Promise.all([
bidModule.insertBidsAsProxy(
req,
latestProxyBidDetails.user_id,
),
])
req.body.wsprice = req.body.next_bid
bidModule.updateBid(req)
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else if (
latestProxyBidDetails.maxamount <
lastBidDetails.proposed_amount
) {
await Promise.all([
bidModule.insertBidsAsProxy(
req,
latestProxyBidDetails.user_id,
),
])
bidModule.updateBid(req)
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
callback(null, 'callpass')
}
} else if (req.body.is_equal) {
req.body.bid_type = 'proxy_leads'
req.body.high_proxy_userid =
req.body.highest_proxy_userid
await Promise.all([
bidModule.placeBid(req, 1),
bidModule.updateBid(req),
])
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
await Promise.all([bidModule.updateBid(req)])
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
} else {
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
})
} else {
global.mysqlsingle.beginTransaction(async () => {
try {
const proxyUserExist1 = await Promise.all([
bidModule.getProxyDetails(req, 'get_highest_biduser'),
bidModule.getProxyDetails(req, 'second_highest_biduser'),
bidModule.fetchLastBid(req),
])
const latestProxyBidDetails = proxyUserExist1[0][0]
const secondHighestProxyBidDetails = proxyUserExist1[1][0]
const maxieproposeamount =
proxyUserExist1[2].length > 0
? proxyUserExist1[2][0].proposed_amount
: 0
req.body.beforewsprice = req.body.wsprice
if (req.body.highest_proxy_userid !== req.user.id) {
req.body.samehigh = 'no_proxy'
const bidDiff =
parseFloat(req.body.wsprice) -
parseFloat(req.body.highest_proxy_amount)
const realBidDiff =
parseFloat(req.body.highest_proxy_amount) -
parseFloat(req.body.wsprice)
req.body.orgwsprice = req.body.wsprice
req.body.current_proxy_highest = false
if (
req.body.highest_proxy_amount > 0 &&
req.body.highest_proxy_amount < req.body.wsprice &&
req.user.id !== req.body.highest_proxy_userid
) {
let anIncre = req.body.bid_increment
anIncre = commonFunction.calculateArrayIncrement(
req.body.highest_proxy_amount,
)
if (bidDiff >= parseFloat(req.body.bid_increment)) {
req.body.wsprice = bidModule.fetchMinimumBid(
req.body.highest_proxy_amount,
anIncre,
)
if (req.body.orgwsprice === req.body.wsprice) {
req.body.bid_type = 'hard_bid'
} else if (req.body.orgwsprice > req.body.wsprice) {
req.body.bid_type = 'hard_bid'
} else {
if (
req.body.orgwsprice >
req.body.highest_proxy_amount &&
req.body.orgwsprice < req.body.wsprice
) {
req.body.wsprice = req.body.orgwsprice
}
req.body.bid_type = 'hard_bid'
}
} else {
req.body.bid_type = 'hard_bid'
}
if (
maxieproposeamount !== req.body.highest_proxy_amount
) {
req.body.second_highest_bid =
secondHighestProxyBidDetails.maxamount
req.body.second_highest_user_pos =
secondHighestProxyBidDetails.user_pos
req.body.next_bid = req.body.highest_proxy_amount
bidModule.insertBidsAsProxy(
req,
secondHighestProxyBidDetails.user_id,
)
}
} else if (req.body.highest_proxy_amount === 0) {
req.body.bid_increment = bidModule.fetchMinimumBid(
req.body.spc_startp,
req.body.bid_increment,
)
req.body.wsprice = req.body.spc_startp
if (bidDiff >= parseFloat(req.body.bid_increment)) {
req.body.bid_type = 'hard_bid'
}
if (req.body.orgwsprice > req.body.bid_increment) {
req.body.bid_type = 'hard_bid'
}
}
try {
req.body.wsprice = req.body.beforewsprice
const resbid = await Promise.all([
bidModule.placeBidExtra(req),
])
req.body.placebid = resbid[0].insertId
const bidDetails = await Promise.all([
bidModule.fetchLastBid(req),
])
const lastBidDetails = bidDetails[0][0]
if (
lastBidDetails.user_id !==
latestProxyBidDetails.user_id &&
!req.body.is_equal
) {
const reamountlatest =
lastBidDetails.proposed_amount
let orgincrmentafterbid = req.body.bid_increment
orgincrmentafterbid = commonFunction.calculateArrayIncrement(
reamountlatest,
)
req.body.bid_type = 'bid_as_proxy'
if (
latestProxyBidDetails.maxamount >
lastBidDetails.proposed_amount
) {
req.body.bid_increment = orgincrmentafterbid
if (
bidDiff >=
parseFloat(req.body.bid_increment) ||
realBidDiff >=
parseFloat(req.body.bid_increment)
) {
req.body.next_bid = bidModule.fetchMinimumBid(
lastBidDetails.proposed_amount,
orgincrmentafterbid,
)
} else {
req.body.next_bid =
latestProxyBidDetails.maxamount
}
await Promise.all([
bidModule.insertBidsAsProxy(
req,
latestProxyBidDetails.user_id,
),
])
req.body.wsprice = req.body.next_bid
bidModule.updateBid(req)
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else if (
latestProxyBidDetails.maxamount <
lastBidDetails.proposed_amount
) {
await Promise.all([
bidModule.insertBidsAsProxy(
req,
latestProxyBidDetails.user_id,
),
])
bidModule.updateBid(req)
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
callback(null, 'callpass')
}
} else if (req.body.is_equal) {
req.body.bid_type = 'proxy_leads'
req.body.high_proxy_userid =
req.body.highest_proxy_userid
await Promise.all([
bidModule.placeBid(req, 1),
bidModule.updateBid(req),
])
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
await Promise.all([bidModule.updateBid(req)])
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} catch (err) {
global.mysqlsingle.commit(() => {})
console.log(err)
callback(err, 'callpass')
}
} else {
req.body.bid_type = 'hard_bid'
req.body.samehigh = 'no_proxy'
try {
await Promise.all([
bidModule.placeBidExtra(req),
bidModule.updateBid(req),
])
req.body.first_bidder = true
callback(null, 'callpass')
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
}
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
})
// global.mysqlsingle.beginTransaction(async (terr) => {
// req.body.bid_type = 'hard_bid';
// req.body.samehigh = 'no_proxy';
// try {
// await Promise.all([bid.placeBidExtra(req), bid.updateBid(req)]);
// req.body.first_bidder = true;
// callback(null, 'callpass');
// } catch(err) {
// console.log('err', err);
// global.mysqlsingle.commit(function (cerr3) {
// });
// callback(err, 'callpass');
// }
// });
}
},
(callpass, callback) => {
req.body.userstoomit = []
global.mysqlsingle.beginTransaction(async () => {
try {
const dupecnt = await Promise.all([
bidModule.checkSamountDuplicate(req),
])
if (dupecnt[0].length > 0) {
const uploaderFunction = async (url) => {
return new Promise((resolve, reject) => {
if (url.user_id === req.user.id) {
isdupiuser = 1
if (req.body.first_bidder) {
bidModule.deleteMaxmountDuplicate(
req,
url.user_id,
)
} else {
bidModule.updateMaxmountDuplicate(
req,
url.user_id,
)
}
}
req.body.userstoomit.push(url.user_id)
bidModule.updateSamountDuplicate(url.id)
bidModule.insertSamountDuplicate(req, url.user_id)
resolve()
})
}
const resultloop = []
dupecnt[0].forEach(async (url, index) => {
const looptoformat = await uploaderFunction(url)
resultloop.push(looptoformat)
})
await Promise.all(resultloop)
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
} else {
global.mysqlsingle.commit(() => {})
callback(null, 'callpass')
}
} catch (err) {
console.log('err', err)
global.mysqlsingle.commit(() => {})
callback(err, 'callpass')
}
})
},
],
(err, callpass) => {
if (err !== null) {
console.log('err', err)
finalresults.bpop_cbidder = req.user.id
finalresults.id = req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.error = 'Please submit higher bid'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
}
if (isdupiuser === 1) {
finalresults.bpop_cbidder = req.user.id
finalresults.id = req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.status = 'failed'
finalresults.dupe_status = req.body.first_bidder
finalresults.error = 'Please submit higher bid'
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
}
global.mysqlsingle.beginTransaction(async () => {
try {
bidModule.addUserBidPreference(
prdt,
req.user.id,
req.body.id,
req.body.enteramount,
'bid',
)
const bidders = await Promise.all([
bidModule.totBidcnt(
req.session[`${req.body.id}proxybid${req.user.id}`],
),
commonFunction.checkmailnotify(req, 1),
commonFunction.checksmsnotify(req, 1),
commonFunction.checkmailnotify(req, 2),
commonFunction.checksmsnotify(req, 2),
bidModule.proxyNewbidhistory(
req.session[`${req.body.id}proxybid${req.user.id}`],
),
bidModule.proxyCheckbidPlaced(
req,
req.session[`${req.body.id}proxybid${req.user.id}`],
),
bidModule.proxyGetProxyDetails(
req.session[`${req.body.id}proxybid${req.user.id}`],
'get_highest_biduser',
),
bidModule.proxyGetProxyDetails(
req.session[`${req.body.id}proxybid${req.user.id}`],
'second_highest_biduser',
),
])
global.mysqlsingle.commit(() => {})
isdupiuser = 0
const hgerbiduser = bidders[5].length > 0 ? bidders[5][0].user_id : ''
const hgerbidcompanyid =
bidders[5].length > 0 ? bidders[5][0].companyid : ''
const highrbidamt =
bidders[5].length > 0
? bidders[5][0].proposed_amount
: req.body.wsprice
const orgorgcuserbamt =
bidders[6].length > 0
? bidders[6][0].proposed_amount
: req.body.wsprice
const orgoutcuserbamt =
bidders[8].length > 0 ? bidders[8][0].maxamount : req.body.wsprice
if (bidders[7][0].user_id === req.user.id) {
const cemailEnteramount = req.body.enteramount
if (!req.user.username) {
req.user.username = `${req.user.first_name} ${req.user.last_name}`
}
const orgshtle = commonFunction.shorten(`'${prdt.title}'`, 15)
await Promise.all([
commonFunction.eventTriggerFuction(
{
...req.body,
...req.user,
product_avatar: `${global.url}/uploads/product/${prdt.avatar}`,
amount: cemailEnteramount,
twoamount: highrbidamt,
smstitle: orgshtle,
date_closed: prdt.date_closed,
},
req.user.email,
req.user.phone,
'bid_submitted',
0,
1,
req.user.id,
),
])
} else {
req.body.outbids_ku = 'yes'
req.body.first_name = req.session.first_name
req.body.last_name = req.session.last_name
req.body.toemail = req.session.email
req.body.tophone = req.session.phone
req.body.toid = req.user.id
req.body.pid = req.session[`${req.body.id}proxybid${req.user.id}`]
req.body.r_id = Date.parse(new Date()) / 1000
req.body.subject = `You've been outbid on ${prdt.title}`
req.body.fromid = prdt.user_id
req.body.message = `Your maximum bid of $${orgorgcuserbamt} placed on ${prdt.title} has been outbid by another member.`
req.body.phmessage = `Your maximum bid of $${orgorgcuserbamt} placed on ${prdt.title} has been outbid by another member.`
req.body.to_id = req.body.toid
req.body.from_id = req.body.fromid
req.body.projectmsgpost = req.body.pid
const orgshtle = commonFunction.shorten(`'${prdt.title}'`, 15)
await Promise.all([
commonFunction.eventTriggerFuction(
{
...prdt,
...req.user,
product_avatar: `${global.url}/uploads/product/${prdt.avatar}`,
currentbidamount: orgorgcuserbamt,
wsprice: highrbidamt,
smstitle: orgshtle,
date_closed: prdt.date_closed,
},
req.user.email,
req.user.phone,
'out_bid',
0,
2,
req.user.id,
),
])
// const resultsNotify = await Promise.all([
// commonFunction.bellNotify(req.user.id, prdt.id, 3),
// ])
// const realarrresults = {}
// realarrresults.id = prdt.id
// realarrresults.insertid = resultsNotify[0].insertId
// realarrresults.userid = req.user.id
// realarrresults.typeid = 3
// realarrresults.projtitle = `You have been outbid on ${prdt.title}`
// global.io.sockets.emit(
// 'notificationupdates',
// realarrresults,
// )
}
const cemailSamehigh = req.body.samehigh
if (bidders[8].length > 0 && cemailSamehigh !== 'proxy') {
if (bidders[8][0].user_id !== req.user.id) {
req.body.outbids_ku = 'yes'
req.body.first_name =
bidders[8][0].first_name === null
? ''
: bidders[8][0].first_name
req.body.user_language = bidders[8][0].user_language
req.body.last_name =
bidders[8][0].last_name === null
? ''
: bidders[8][0].last_name
req.body.toemail = bidders[8][0].email
req.body.email = bidders[8][0].email
req.body.tophone = bidders[8][0].phone
req.body.toid = bidders[8][0].user_id
req.body.pid = bidders[8][0].project_id
req.body.r_id = Date.parse(new Date()) / 1000
req.body.subject = `You've been outbid on ${req.body.title}`
req.body.fromid = prdt.user_id
req.body.message = `Unfortunately, your maximum bid of $${orgoutcuserbamt} placed on ${req.body.title} has been outbid by another member.`
req.body.phmessage = `${req.body.title} has been bidded with higher amount by someone.`
req.body.to_id = req.body.toid
req.body.from_id = req.body.fromid
req.body.projectmsgpost = req.body.pid
const orgshtle = commonFunction.shorten(`'${prdt.title}'`, 15)
await Promise.all([
commonFunction.eventTriggerFuction(
{
...prdt,
...req.body,
product_avatar: `${global.url}/uploads/product/${prdt.avatar}`,
currentbidamount: orgorgcuserbamt,
wsprice: highrbidamt,
smstitle: orgshtle,
date_closed: prdt.date_closed,
},
req.body.toemail,
req.body.tophone,
'out_bid_proxy',
0,
2,
bidders[8][0].user_id,
),
])
}
}
const realtimeWprice = bidders[5][0].proposed_amount
let realtimeIncerment = 0
realtimeIncerment = commonFunction.calculateArrayIncrement(
realtimeWprice,
)
let realtimeNextbid = commonFunction.sumFloat(
realtimeWprice,
realtimeIncerment,
)
const orgRealtimeNextbid = commonFunction.sumFloat(
realtimeWprice,
realtimeIncerment,
)
if (bidders[7].length > 0 && bidders[7][0].user_id === req.user.id) {
realtimeNextbid = commonFunction.sumFloat(
bidders[7][0].maxamount,
realtimeIncerment,
)
}
if (bidders[6].length > 0) {
const cuserMaxeproxamt = bidders[6][0].maxeprox
cuserRealtimeIncerment = commonFunction.calculateArrayIncrement(
cuserMaxeproxamt,
)
cuserRealtimeNextbid = commonFunction.sumFloat(
cuserMaxeproxamt,
cuserRealtimeIncerment,
)
if (hgerbiduser !== req.user.id) {
cuserRealtimeNextbid = realtimeNextbid
cuserRealtimeIncerment = realtimeIncerment
}
// if (bidders[8].length > 0) {
// if (typeof (bidders[8][0].username) === 'undefined') {
// secondhuname = ''
// } else {
// secondhuname = (bidders[8][0].username === "" || bidders[8][0].username === null) ? "" : bidders[8][0].username;
// }
// }
if (bidders[7].length > 0) {
if (typeof bidders[7][0].username === 'undefined') {
firsthuname = ''
} else {
firsthuname =
bidders[7][0].username === '' ||
bidders[7][0].username === null
? ''
: bidders[7][0].username
}
}
if (bidders[7][0].user_id === req.user.id) {
if (prdt.market_status === 'open') {
if (realtimeWprice < bidders[7][0].maxamount) {
bidtopstatus = 'winner'
} else {
bidtopstatus = 'winner'
}
} else {
bidtopstatus =
prdt.market_status !== 'sold' ? `lost` : `won`
}
} else if (prdt.market_status === 'open') {
if (bidders[6][0].proposal === 'tie_bid') {
bidtopstatus = 'outbid'
} else {
bidtopstatus = 'outbid'
}
} else {
bidtopstatus = 'outbid'
}
} else {
bidtopstatus = ''
}
const msbtl = new Date() - req.body.logstdate
bidModule.insertBTL(
req,
req.session[`${req.body.id}proxybid${req.user.id}`],
req.user.id,
msbtl,
)
// bidModule.updateScoreBid(
// prdt,
// req,
// realtimeWprice,
// bidders[7][0].maxamount,
// )
finalresults.id = req.session[`${req.body.id}proxybid${req.user.id}`]
finalresults.bpop_wprice = realtimeWprice
finalresults.bpop_wprice_morehigh = bidders[7][0].maxamount
finalresults.bpop_increment = realtimeIncerment
finalresults.bpop_users_to_omit = req.body.userstoomit
finalresults.bpop_nextbid = realtimeNextbid
finalresults.bpop_nextbid_org = orgRealtimeNextbid
finalresults.bpop_cbidder = req.user.id
finalresults.bpop_biddersname = firsthuname
finalresults.bpop_higher = hgerbiduser
finalresults.cuser_enteramount = req.body.enteramount
finalresults.bpop_cuser_increment = cuserRealtimeIncerment
finalresults.bpop_cuser_nextbid = cuserRealtimeNextbid
finalresults.bpop_bidcount = bidders[0][0].bdcnt
finalresults.status = 'success'
finalresults.bpop_companyid = req.session.companyid
finalresults.bpop_highercompanyid = hgerbidcompanyid
finalresults.bpop_error = 'bid_placed_successfully'
finalresults.error = 'bid_placed_successfully'
finalresults.bpop_bidstatus = bidtopstatus
finalresults.bpop_belowFive = req.body.belowFive
finalresults.bpop_belowFiveIncrement = req.body.belowFiveIncrement
finalresults.bpop_belowFiveAuction = req.body.belowFiveAuction
finalresults.bpop_auctionid = req.body.auctionid
finalresults.bpop_bid_type_user = req.body.bid_type_user
req.session[`${req.body.id}proxybid${req.user.id}`] = null
global.io.sockets.emit('bidAddtime', finalresults)
res.end()
} catch (errins) {
console.log(errins)
}
})
},
)
} catch (e) {
console.error(e)
jsonResponse(res, 'error', {
responseType: 3,
message: 'Internal Server error!',
})
}
},
}