168 lines
4.2 KiB
JavaScript
168 lines
4.2 KiB
JavaScript
const asyncHandler = require("express-async-handler");
|
|
const fetch = require('node-fetch');
|
|
const { LotDb } = require("../services/lotDb");
|
|
const lotDb = new LotDb();
|
|
const { SaleDb } = require("../services/saleDb");
|
|
const saleDb = new SaleDb();
|
|
|
|
const ApiURL = "http://host.docker.internal:3020/api";
|
|
|
|
// scrapping
|
|
exports.getInfos = asyncHandler(async (req, res, next) => {
|
|
let url = req.params.url
|
|
|
|
url = encodeURIComponent(url);
|
|
|
|
fetch(ApiURL+'/lot/getInfos/'+url)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
res.json(data);
|
|
})
|
|
.catch(error => {
|
|
console.error(error);
|
|
});
|
|
});
|
|
|
|
exports.getPictures = asyncHandler(async (req, res, next) => {
|
|
let url = req.params.url
|
|
|
|
url = encodeURIComponent(url);
|
|
|
|
fetch(ApiURL+'/lot/getPictures/'+url)
|
|
.then(response => response.json())
|
|
.then(data => {
|
|
res.json(data);
|
|
})
|
|
.catch(error => {
|
|
console.error(error);
|
|
});
|
|
});
|
|
|
|
|
|
exports.getLotsBySale = asyncHandler(async (req, res, next) => {
|
|
let id = req.params.id
|
|
|
|
const Sale = await saleDb.get(id);
|
|
if(!Sale){
|
|
console.error("Sale not found");
|
|
return res.status(404).send("Sale not found");
|
|
}
|
|
|
|
Lots = await lotDb.getBySaleId(Sale._id.toString(),Sale.platform);
|
|
res.json(Lots);
|
|
|
|
});
|
|
|
|
// Follow Sale
|
|
exports.NextItem = asyncHandler(async (req, res, next) => {
|
|
try{
|
|
|
|
|
|
Sale = await saleDb.getByIDPlatform(req.body.idSalePlatform, req.body.platform);
|
|
if(!Sale){
|
|
console.error("Sale not found");
|
|
return res.status(404).send("Sale not found");
|
|
}
|
|
|
|
let Lot = await lotDb.getByIDPlatform(req.body.idPlatform, req.body.platform);
|
|
if(Lot == null){
|
|
console.log("Creating new Lot");
|
|
|
|
Lot = {
|
|
idPlatform: String(req.body.idPlatform),
|
|
platform: req.body.platform,
|
|
timestamp: req.body.timestamp,
|
|
lotNumber: String(req.body.lotNumber),
|
|
title: req.body.title,
|
|
description: req.body.description,
|
|
EstimateLow: req.body.EstimateLow,
|
|
EstimateHigh: req.body.EstimateHigh,
|
|
RawData: req.body.RawData,
|
|
sale_id: Sale._id,
|
|
}
|
|
|
|
await lotDb.post(Lot);
|
|
|
|
}else{
|
|
console.log("Updating Lot");
|
|
|
|
Lot.timestamp = req.body.timestamp;
|
|
Lot.lotNumber = String(req.body.lotNumber);
|
|
Lot.title = req.body.title;
|
|
Lot.description = req.body.description;
|
|
Lot.EstimateLow = req.body.EstimateLow;
|
|
Lot.EstimateHigh = req.body.EstimateHigh;
|
|
Lot.RawData = req.body.RawData;
|
|
|
|
await lotDb.put(Lot._id, Lot);
|
|
}
|
|
|
|
res.status(204).send();
|
|
}catch(err){
|
|
console.log(err);
|
|
return res.status(500).send(err);
|
|
}
|
|
});
|
|
|
|
exports.Bid = asyncHandler(async (req, res, next) => {
|
|
try{
|
|
let Lot = await lotDb.getByIDPlatform(req.body.idPlatform, req.body.platform);
|
|
|
|
if(Lot){
|
|
console.log("Update Lot Bid");
|
|
|
|
BidInfo = {
|
|
timestamp: req.body.timestamp,
|
|
amount: req.body.amount,
|
|
auctioned_type: req.body.auctioned_type,
|
|
}
|
|
// If Lot.BidInfo doesn't exist, initialize it as an empty array
|
|
if (!Lot.Bids) {
|
|
Lot.Bids = [];
|
|
}
|
|
|
|
// Add BidInfo to the array
|
|
Lot.Bids.push(BidInfo);
|
|
|
|
await lotDb.put(Lot._id, Lot);
|
|
}else{
|
|
console.error("Lot not found");
|
|
return res.status(404).send("Lot not found");
|
|
}
|
|
|
|
res.status(204).send();
|
|
}catch(err){
|
|
console.log(err);
|
|
return res.status(500).send(err);
|
|
}
|
|
});
|
|
|
|
exports.AuctionedItem = asyncHandler(async (req, res, next) => {
|
|
try{
|
|
|
|
let Lot = await lotDb.getByIDPlatform(req.body.idPlatform, req.body.platform);
|
|
|
|
if(Lot){
|
|
console.log("Update Lot AuctionedItem");
|
|
|
|
Lot.auctioned = {
|
|
timestamp: req.body.timestamp,
|
|
amount: req.body.amount,
|
|
auctioned_type: req.body.auctioned_type,
|
|
sold: req.body.sold,
|
|
}
|
|
|
|
await lotDb.put(Lot._id, Lot);
|
|
}else{
|
|
console.error("Lot not found");
|
|
return res.status(404).send("Lot not found");
|
|
}
|
|
|
|
res.status(204).send();
|
|
}catch(err){
|
|
console.log(err);
|
|
return res.status(500).send(err);
|
|
}
|
|
});
|
|
|