bid-tool/auto-bid-tool/service/app-service.js

83 lines
2.4 KiB
JavaScript

import * as fs from "fs";
import path from "path";
import { GrayApiBid } from "../models/grays.com/grays-api-bid.js";
import { GraysProductBid } from "../models/grays.com/grays-product-bid.js";
import { LangtonsApiBid } from "../models/langtons.com.au/langtons-api-bid.js";
import { LangtonsProductBid } from "../models/langtons.com.au/langtons-product-bid.js";
import { LawsonsApiBid } from "../models/lawsons.com.au/lawsons-api-bid.js";
import { LawsonsProductBid } from "../models/lawsons.com.au/lawsons-product-bid.js";
import { PicklesApiBid } from "../models/pickles.com.au/pickles-api-bid.js";
import { PicklesProductBid } from "../models/pickles.com.au/pickles-product-bid.js";
import configs from "../system/config.js";
import CONSTANTS from "../system/constants.js";
import { sanitizeFileName } from "../system/utils.js";
// Time to update
const TIME = 30 * 1000;
export const handleCloseRemoveProduct = (data) => {
if (!Array.isArray(data)) return;
data.forEach(async (item) => {
if (item.page_context) {
safeClosePage(item);
}
});
};
export const createBidProduct = (web, data) => {
switch (web.origin_url) {
case configs.WEB_URLS.GRAYS: {
return new GraysProductBid({ ...data });
}
case configs.WEB_URLS.LANGTONS: {
return new LangtonsProductBid({ ...data });
}
case configs.WEB_URLS.LAWSONS: {
return new LawsonsProductBid({ ...data });
}
case configs.WEB_URLS.PICKLES: {
return new PicklesProductBid({ ...data });
}
}
};
export const createApiBid = (web) => {
switch (web.origin_url) {
case configs.WEB_URLS.GRAYS: {
return new GrayApiBid({ ...web });
}
case configs.WEB_URLS.LANGTONS: {
return new LangtonsApiBid({ ...web });
}
case configs.WEB_URLS.LAWSONS: {
return new LawsonsApiBid({ ...web });
}
case configs.WEB_URLS.PICKLES: {
return new PicklesApiBid({ ...web });
}
}
};
export const deleteProfile = (data) => {
if (!data?.origin_url) return false;
const filePath = path.join(
CONSTANTS.PROFILE_PATH,
sanitizeFileName(data?.origin_url) + ".json"
);
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath);
return true;
}
return false;
};
export const shouldUpdateProductTab = (productTab) => {
const updatedAt = new Date(productTab.updated_at).getTime();
const now = Date.now();
return now - updatedAt >= TIME;
};