This commit is contained in:
@@ -2,6 +2,7 @@ const util = require("util");
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var multer = require('multer');
|
var multer = require('multer');
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
const { splitSite } = require("../middlewares");
|
||||||
const dbConfig = require("../config/db.config");
|
const dbConfig = require("../config/db.config");
|
||||||
const MongoClient = require("mongodb").MongoClient;
|
const MongoClient = require("mongodb").MongoClient;
|
||||||
const mongoClient = new MongoClient(dbConfig.url);
|
const mongoClient = new MongoClient(dbConfig.url);
|
||||||
@@ -30,6 +31,12 @@ const getDriverSignatureYear = (req) => {
|
|||||||
return `${new Date().getFullYear()}`;
|
return `${new Date().getFullYear()}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getDriverSignatureSiteYearFolder = (req) => {
|
||||||
|
const year = getDriverSignatureYear(req);
|
||||||
|
const site = splitSite.findSiteNumber(req);
|
||||||
|
return `site${site}_${year}`;
|
||||||
|
};
|
||||||
|
|
||||||
const resolveSignatureExt = (mimetype = '', originalName = '') => {
|
const resolveSignatureExt = (mimetype = '', originalName = '') => {
|
||||||
const safeMimetype = `${mimetype || ''}`.toLowerCase();
|
const safeMimetype = `${mimetype || ''}`.toLowerCase();
|
||||||
if (safeMimetype.includes('png')) return '.png';
|
if (safeMimetype.includes('png')) return '.png';
|
||||||
@@ -45,13 +52,15 @@ const findDriverSignatureFilePath = async (fileBaseName = '') => {
|
|||||||
if (!fs.existsSync(DRIVER_SIGNATURE_DIR)) return null;
|
if (!fs.existsSync(DRIVER_SIGNATURE_DIR)) return null;
|
||||||
|
|
||||||
const yearFolders = await readdir(DRIVER_SIGNATURE_DIR, { withFileTypes: true });
|
const yearFolders = await readdir(DRIVER_SIGNATURE_DIR, { withFileTypes: true });
|
||||||
const yearDirs = yearFolders.filter((entry) => entry.isDirectory()).map((entry) => path.join(DRIVER_SIGNATURE_DIR, entry.name));
|
const siteYearDirs = yearFolders
|
||||||
for (const yearDir of yearDirs) {
|
.filter((entry) => entry.isDirectory() && /^site\d+_\d{4}$/.test(entry.name))
|
||||||
|
.map((entry) => path.join(DRIVER_SIGNATURE_DIR, entry.name));
|
||||||
|
for (const siteYearDir of siteYearDirs) {
|
||||||
const candidates = [
|
const candidates = [
|
||||||
path.join(yearDir, safeName),
|
path.join(siteYearDir, safeName),
|
||||||
path.join(yearDir, `${safeName}.jpg`),
|
path.join(siteYearDir, `${safeName}.jpg`),
|
||||||
path.join(yearDir, `${safeName}.jpeg`),
|
path.join(siteYearDir, `${safeName}.jpeg`),
|
||||||
path.join(yearDir, `${safeName}.png`)
|
path.join(siteYearDir, `${safeName}.png`)
|
||||||
];
|
];
|
||||||
for (const candidate of candidates) {
|
for (const candidate of candidates) {
|
||||||
if (fs.existsSync(candidate)) {
|
if (fs.existsSync(candidate)) {
|
||||||
@@ -146,8 +155,8 @@ const uploadFiles = async (req, res) => {
|
|||||||
if (!req.file) {
|
if (!req.file) {
|
||||||
return res.status(400).send({ message: "You must select a file." });
|
return res.status(400).send({ message: "You must select a file." });
|
||||||
}
|
}
|
||||||
const year = getDriverSignatureYear(req);
|
const siteYearFolder = getDriverSignatureSiteYearFolder(req);
|
||||||
const targetDir = path.join(DRIVER_SIGNATURE_DIR, year);
|
const targetDir = path.join(DRIVER_SIGNATURE_DIR, siteYearFolder);
|
||||||
if (!fs.existsSync(targetDir)) {
|
if (!fs.existsSync(targetDir)) {
|
||||||
fs.mkdirSync(targetDir, { recursive: true });
|
fs.mkdirSync(targetDir, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user