Sindbad~EG File Manager
const { Op } = require("sequelize");
const db = require("../models");
const { col, literal, fn, transaction } = require("sequelize");
function calculateDateRange(timeRange) {
const currentDate = new Date();
switch (timeRange) {
case "currentweek":
const currentWeekStartDate = new Date(currentDate);
currentWeekStartDate.setDate(
currentDate.getDate() - currentDate.getDay()
);
currentWeekStartDate.setHours(0, 0, 0, 0);
const currentWeekEndDate = new Date(currentDate);
currentWeekEndDate.setDate(
currentWeekEndDate.getDate() + (6 - currentWeekEndDate.getDay())
);
currentWeekEndDate.setHours(23, 59, 59, 999);
return { startDate: currentWeekStartDate, endDate: currentWeekEndDate };
case "lastweek":
const lastWeekStartDate = new Date(currentDate);
lastWeekStartDate.setDate(
lastWeekStartDate.getDate() - lastWeekStartDate.getDay() - 7
);
lastWeekStartDate.setHours(0, 0, 0, 0);
const lastWeekEndDate = new Date(currentDate);
lastWeekEndDate.setDate(
lastWeekEndDate.getDate() - lastWeekEndDate.getDay() - 1
);
lastWeekEndDate.setHours(23, 59, 59, 999);
return { startDate: lastWeekStartDate, endDate: lastWeekEndDate };
case "last4weeks":
const last4WeeksStartDate = new Date(currentDate);
last4WeeksStartDate.setDate(last4WeeksStartDate.getDate() - 28);
last4WeeksStartDate.setHours(0, 0, 0, 0);
const last4WeeksEndDate = new Date(currentDate);
last4WeeksEndDate.setDate(last4WeeksEndDate.getDate());
last4WeeksEndDate.setHours(23, 59, 59, 999);
return { startDate: last4WeeksStartDate, endDate: last4WeeksEndDate };
case "last12weeks":
const last12WeeksStartDate = new Date(currentDate);
last12WeeksStartDate.setDate(last12WeeksStartDate.getDate() - 84);
last12WeeksStartDate.setHours(0, 0, 0, 0);
const last12WeeksEndDate = new Date(currentDate);
last12WeeksEndDate.setDate(last12WeeksEndDate.getDate());
last12WeeksEndDate.setHours(23, 59, 59, 999);
return { startDate: last12WeeksStartDate, endDate: last12WeeksEndDate };
default:
// Handle other cases or return an error
return null;
}
}
const getAllUserVehicles = async (req, res) => {
try {
const user_id = req.params.id;
let timeRange;
if (!req.body.timeRange) {
timeRange = "currentweek";
} else {
timeRange = req.body.timeRange;
}
timeRange = timeRange.replace(/\s/g, "");
timeRange = timeRange.toLowerCase();
const weekRange = calculateDateRange(timeRange);
let { sortBy, orderDirection } = req.body;
const result = await db.tblVehicle.findAll({
attributes: {
exclude: [
"color",
"color_name",
"details",
"createdAt",
"updatedAt",
"user_id",
],
},
where: {
user_id: user_id,
createdAt: {
[Op.between]: [weekRange.startDate, weekRange.endDate],
},
},
order: [[sortBy || "vehicle_id", orderDirection || "ASC"]],
});
return res.json({
status: 200,
message: "Success",
data: result,
});
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const sortVehicles = async (req, res) => {
try {
const user_id = req.params.id;
let { sortBy, orderDirection } = req.body;
// Define the base where clause
let whereClause = {
user_id: user_id,
};
// Adjust the where clause based on sortBy
if (sortBy == "sold_price") {
sortBy = "vehicle_id";
/* whereClause.sold_price = {
[Op.not]: null,
}; */
}
let result = await db.tblVehicle.findAll({
where: whereClause,
order: [[sortBy || "vehicle_id", orderDirection || "ASC"]],
});
return res.json({ status: 200, message: "Success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const sortByYear = async (req, res) => {
try {
const user_id = req.params.id;
let { orderDirection } = req.body;
/* sortOrder = sortOrder.replace(/\s/g, "");
sortOrder = sortOrder.toLowerCase();
const orderDirection = sortOrder === "lowest" ? "ASC" : "DESC";
*/
let result = await db.tblVehicle.findAll({
where: {
user_id: user_id,
},
order: [["year", orderDirection]],
});
return res.json({ status: 200, message: "Success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const sortByMileage = async (req, res) => {
try {
const user_id = req.params.id;
let { orderDirection } = req.body;
let result = await db.tblVehicle.findAll({
where: {
user_id: user_id,
mileage: {
[Op.not]: null, // Exclude records with null sold_price
},
},
order: [["mileage", orderDirection]],
});
return res.json({ status: 200, message: "Success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const filterByConditionLight = async (req, res) => {
try {
const { user_id, week_id } = req.body;
let results;
results = await db.sequelize.query(
"CALL uFilterByConditionLight(:user_id,:week_id)",
{
replacements: { user_id, week_id },
type: db.Sequelize.QueryTypes.SELECT,
}
);
const data = results[0];
const formattedData = Object.values(data)
.flat()
.filter(
(item) => typeof item === "object" && !item.hasOwnProperty("fieldCount")
);
// return res.json(formattedData);
const conditionLightValues = [0, 1, 2, 3, 4];
// Check for missing condition_light values
const missingValues = conditionLightValues.filter((value) => {
return !formattedData.some((item) => item.condition_light === value);
});
// Add missing values to the existing data
const newData = formattedData.concat(
missingValues.map((value) => ({
condition_light: value,
units: 0,
}))
);
const filteredData = newData.filter((item) => item.condition_light != 0);
// # Sorting the list in-place in ascending order of 'condition_light'
filteredData.sort((a, b) => a.condition_light - b.condition_light);
return res.json({
status: 200,
Message: "Success",
filter_type: "condition_light",
data: filteredData,
});
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: error.message,
});
}
};
const getConditionLightVehicles = async (req, res) => {
try {
const {
condition_light,
opportunity_id,
sortBy = "vehicle_id",
orderDirection = "ASC",
} = req.body;
const results = await db.tblVehicleRun.findAll({
where: {
opportunity_id: opportunity_id,
condition_light: condition_light,
},
include: [
{
model: db.tblVehicle,
raw: true,
},
{
model: db.tblAuctionLane,
attributes: ["name"],
raw: true,
// required: true,
include: [
{
model: db.tblAuction,
attributes: ["auction_id", "name"],
raw: true,
required: false,
},
],
},
],
order: [[db.tblVehicle, sortBy, orderDirection]],
});
// return res.json({ status: 200, data: results });
const outputArray = results.map((vehicleRun) => {
const vehicle = vehicleRun.tblVehicle || {};
const auctionLane = vehicleRun.tblAuctionLane || {};
const auction = auctionLane.tblAuction || {};
return {
vehicle_id: vehicle.vehicle_id,
year: vehicle.year,
make: vehicle.make,
model: vehicle.model,
vin: vehicle.vin,
mileage: vehicle.mileage,
imageUrl: vehicle.imageUrl,
color: vehicle.color,
color_name: vehicle.color_name,
vehicle_run_id: vehicleRun.vehicle_run_id,
condition_light: vehicleRun.condition_light || 0,
announcements: vehicleRun.announcements,
reserve: vehicleRun.reserve || 0,
sale_price: vehicleRun.sale_price || 0,
auction_fee: vehicleRun.auction_fee || 300,
net_proceed: vehicleRun.net_proceed || 0,
vehicle_total_fee: vehicleRun.vehicle_total_fee || 0,
sale_status: vehicleRun.sale_status || false,
run_no: vehicleRun.run_no || null,
lane_id: vehicleRun.lane_id || null,
lane_name: auctionLane.name || null,
auction_id: auction.auction_id || null,
auction_name: auction.name || null,
};
});
return res.json({ status: 200, message: "Success", data: outputArray });
} catch (error) {
return res.status(500).json({ error: error.message });
}
};
const filterBySaleStatus = async (req, res) => {
try {
const { user_id, week_id } = req.body;
// Call the stored procedure and destructure the result.
let results = await db.sequelize.query(
"CALL uFilterBySaleStatus(:user_id, :week_id)",
{
replacements: { user_id, week_id },
type: db.Sequelize.QueryTypes.SELECT,
}
);
const data = results[0];
/* // return res.json(data);
/* // Check if data received from the stored procedure is in an unexpected format.
if (!Array.isArray(data) || data.length === 0) {
return res.json({ status: 200, message: "No data found", data: [] });
} */
// Transform the data to the required flat array format. */
const formattedData = Object.values(data)
.flat()
.filter(
(item) => typeof item === "object" && !item.hasOwnProperty("fieldCount")
);
const saleStatusValues = ["true", "false"];
// Check for missing sale_status values
const missingValues = saleStatusValues.filter((value) => {
return !formattedData.some((item) => item.sale_status === value);
});
// Add missing values to the existing data
const newData = formattedData.concat(
missingValues.map((value) => ({
opportunity_id: 0,
auctioneer_id: 0,
sale_status: value,
units: 0,
}))
);
return res.json({ status: 200, message: "Success", data: newData });
} catch (error) {
// Send back a structured error response with proper status code.
return res.status(500).json({ status: 500, message: error.message });
}
};
const getSaleStatusVehicles = async (req, res) => {
try {
const { sale_status, opportunity_id, sortBy, orderDirection } = req.body;
const results = await db.tblVehicleRun.findAll({
where: { sale_status: sale_status, opportunity_id: opportunity_id },
include: [
{
model: db.tblVehicle,
raw: true,
},
{
model: db.tblAuctionLane,
attributes: ["name"],
raw: true,
// required: true,
include: [
{
model: db.tblAuction,
attributes: ["auction_id", "name"],
raw: true,
required: false,
},
],
},
],
order: [[db.tblVehicle, sortBy || "vehicle_id", orderDirection || "ASC"]],
});
// return res.json({ status: 200, message: results });
const outputArray = results.map((vehicleRun) => {
const vehicle = vehicleRun.tblVehicle || {};
const auctionLane = vehicleRun.tblAuctionLane || {};
const auction = auctionLane.tblAuction || {};
return {
vehicle_id: vehicle.vehicle_id,
year: vehicle.year,
make: vehicle.make,
model: vehicle.model,
vin: vehicle.vin,
mileage: vehicle.mileage,
imageUrl: vehicle.imageUrl,
color: vehicle.color,
color_name: vehicle.color_name,
vehicle_run_id: vehicleRun.vehicle_run_id,
condition_light: vehicleRun.condition_light || 0,
announcements: vehicleRun.announcements,
reserve: vehicleRun.reserve || 0,
sale_price: vehicleRun.sale_price || 0,
auction_fee: vehicleRun.auction_fee || 300,
net_proceed: vehicleRun.net_proceed || 0,
vehicle_total_fee: vehicleRun.vehicle_total_fee || 0,
sale_status: vehicleRun.sale_status || false,
run_no: vehicleRun.run_no || null,
lane_id: vehicleRun.lane_id || null,
lane_name: auctionLane.name || null,
auction_id: auction.auction_id || null,
auction_name: auction.name || null,
};
});
return res.json({ status: 200, message: "Success", data: outputArray });
} catch (error) {
return res.status(500).json({ error: error.message });
}
};
const totalSalePrice = async (req, res) => {
try {
let days = 1;
if (req.body.days) {
days = req.body.days;
}
console.log(`days are ${days}`);
const currentDate = new Date();
const last24Hours = new Date(currentDate - days * 24 * 60 * 60 * 1000);
const user_id = req.params.id;
const result = await db.tblVehicle.findAll({
attributes: ["sold_price"],
where: {
user_id: user_id,
createdAt: {
[Op.between]: [last24Hours, currentDate],
},
},
order: [["createdAt", "ASC"]],
});
const total_price = result
.filter((item) => item.sold_price !== null)
.reduce((sum, item) => sum + item.sold_price, 0);
console.log("Total Price:", total_price);
return res.json({ status: 200, message: "Success", data: total_price });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
//testingsale
const totalSaleAndNetProfit = async (req, res) => {
try {
let { user_id } = req.body;
let timeRange;
if (!req.body.timeRange) {
timeRange = "currentweek";
} else {
timeRange = req.body.timeRange;
}
timeRange = timeRange.replace(/\s/g, "");
timeRange = timeRange.toLowerCase();
/* const currentDate = new Date();
let startDate;
let endDate;
switch (timeRange) {
case "currentweek":
startDate = new Date(currentDate);
startDate.setHours(0, 0, 0, 0 - currentDate.getDay());
startDate.setDate(startDate.getDate());
endDate = new Date(currentDate);
endDate.setHours(23, 59, 59, 999 - currentDate.getDay());
break;
case "lastweek":
startDate = new Date(currentDate);
startDate.setHours(0, 0, 0, 0 - currentDate.getDay());
startDate.setDate(startDate.getDate() - 7);
endDate = new Date(currentDate);
endDate.setDate(endDate.getDate() - endDate.getDay());
endDate.setHours(23, 59, 59, 999);
break;
case "last4weeks":
startDate = new Date(currentDate);
startDate.setDate(currentDate.getDate() - 28);
endDate = new Date(currentDate);
endDate.setDate(endDate.getDate() - endDate.getDay());
endDate.setHours(23, 59, 59, 999);
break;
default:
startDate = new Date(currentDate);
startDate.setHours(0, 0, 0, 0 - currentDate.getDay());
startDate.setDate(startDate.getDate() - 3);
endDate = new Date(currentDate);
endDate.setHours(23, 59, 59, 999 - endDate.getDay());
} */
const weekRange = calculateDateRange(timeRange);
const results = await db.tblVehicle.findAll({
attributes: [
"vehicle_id",
"user_id",
/* [
db.sequelize.literal("SUM(`tblVehicleRuns`.`sale_price`)"),
"total_sale",
],
[
db.sequelize.literal("SUM(`tblVehicleRuns`.`net_profit`)"),
"total_net_profit",
], */
],
include: [
{
model: db.tblVehicleRun,
attributes: [
"vehicle_run_id",
"sale_price",
"auction_fee",
"net_profit",
"sale_status",
],
raw: true,
where: {
sale_price: { [Op.ne]: null },
},
},
],
where: {
user_id: user_id,
createdAt: {
[Op.between]: [weekRange.startDate, weekRange.endDate],
},
},
// order: [["createdAt", "ASC"]],
});
if (results.length === 0) {
return res.json({
status: 200,
message: "Success",
net_profit: 0,
total_profit: 0,
unit_sold: 0,
});
}
const transformedData = results.reduce((result, vehicle) => {
const existingUser = result.find(
(user) => user.user_id === vehicle.user_id
);
if (existingUser) {
// If user exists, update totals
existingUser.total_profit += vehicle.tblVehicleRuns.reduce(
(sum, run) => sum + run.sale_price,
0
);
existingUser.net_profit += vehicle.tblVehicleRuns.reduce(
(sum, run) => sum + run.net_profit,
0
);
existingUser.sold_units += vehicle.tblVehicleRuns.length;
} else {
// If user doesn't exist, add a new user entry
const newUser = {
user_id: vehicle.user_id,
total_profit: vehicle.tblVehicleRuns.reduce(
(sum, run) => sum + run.sale_price,
0
),
net_profit: vehicle.tblVehicleRuns.reduce(
(sum, run) => sum + run.net_profit,
0
),
sold_units: vehicle.tblVehicleRuns.length,
};
result.push(newUser);
}
return result;
}, []);
return res.json({
status: 200,
message: "Success",
net_profit: transformedData[0]?.net_profit || 0,
total_profit: transformedData[0]?.total_profit || 0,
unit_sold: transformedData[0]?.sold_units || 0,
});
} catch (error) {
return res.status(500).json({ status: 500, error: error.message });
}
};
/* const assignVehicleToAuctioneerCtrl = async (req, res) => {
try {
const { car_ids, auctioneerId, userId, weekId } = req.body;
const week_id = parseInt(weekId);
const [opportunity_id] = await db.tblOpportunity.findAll({
where: {
[Op.and]: [
{
week_id: week_id,
},
{
auctioneer_id: auctioneerId,
},
{
user_id: userId,
},
],
},
attributes: ["opportunity_id"],
});
const data = {
opportunity_id: opportunity_id.opportunity_id,
};
let isExisted;
const promises = car_ids.map(async (item) => {
// Assuming db.tblVehicleRun.findAll returns an array
isExisted = await db.tblVehicleRun.findAll({
where: { vehicle_id: item },
});
if (isExisted.length <= 0) {
// No vehicles found with the given id, so create a new record
await db.tblVehicleRun.create({
opportunity_id: data.opportunity_id,
vehicle_id: item,
});
} else {
// Vehicle exists, perform an update
await db.tblVehicleRun.update(data, {
where: {
vehicle_id: item,
},
});
}
});
await Promise.all(promises);
return res.json({ status: 200, message: "assigned vehicles successfully" });
} catch (error) {
console.log(error);
return res.json(error.message);
}
}; */
const assignVehicleToAuctioneerCtrl = async (req, res) => {
try {
const { car_ids, auctioneerId, userId, weekId } = req.body;
// Find the opportunity_id just once outside of the loop
const opportunity = await db.tblOpportunity.findOne({
where: {
week_id: parseInt(weekId),
auctioneer_id: auctioneerId,
user_id: userId,
},
attributes: ["opportunity_id"],
});
if (!opportunity) {
return res
.status(404)
.json({ status: 404, message: "Opportunity not found." });
}
const data = {
opportunity_id: opportunity.opportunity_id,
};
// Create or update vehicles in parallel
const promises = car_ids.map((item) => {
return db.tblVehicleRun
.findOrCreate({
where: { vehicle_id: item },
defaults: {
// Used only if a new instance is created
vehicle_id: item,
...data,
},
})
.then(([vehicleRun, created]) => {
if (!created) {
// Update the record only if it's necessary.
// You might want to add logic to check if an update is required
return db.tblVehicleRun.update(data, {
where: {
vehicle_id: item,
},
});
}
});
});
await Promise.all(promises);
return res
.status(200)
.json({ status: 200, message: "Assigned vehicles successfully" });
} catch (error) {
console.error(error);
return res.status(500).json({ message: error.message });
}
};
const createVehicleController = async (req, res) => {
try {
// return res.json({data:req.body});
const { user_id } = req.body;
const userId = parseInt(user_id);
let imageFiles;
req.body.user_id = userId;
if (req.files.length > 0) {
console.log(req.files);
imageFiles = req.files;
const mainImageUrl = imageFiles[0].filename;
req.body.imageUrl = mainImageUrl;
}
let result = await db.tblVehicle.create(req.body);
const car_id = result.vehicle_id;
if (req.files.length > 0) {
console.log("Images Files Existed");
await Promise.all(
imageFiles.map(async (item) =>
db.tblVehicleImage.create({
vehicle_id: car_id,
imageUrl: item.filename,
})
)
);
}
if (!result) {
return res.status(500).json({ status: 500, message: "Operation Failed" });
}
return res
.status(200)
.json({ status: 200, message: "data created successfully" });
} catch (error) {
console.log(error.message);
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const createVehicleControllerWithoutImages = async (req, res) => {
try {
const body = req.body;
return res.json({status:200,message:"success",data:req.body});
const result = await db.tblVehicle.create(body);
if(result.length<=0){
return res.json({ status: 200, message: "Failure" ,data:result});
}
return res.json({ status: 200, message: "Success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const getVehicleDetailsById = async (req, res) => {
try {
const vehicle_id = req.params.id;
let result = await db.tblVehicle.findAll({
attributes:[
"vehicle_id",
"vin",
"year",
"make",
"model",
"mileage",
"trim",
"color",
"color_name",
"details",
"imageUrl",
],
where: {
vehicle_id: vehicle_id,
},
});
return res
.status(200)
.json({ status: 200, message: "success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const getUserCarsData = async (req, res) => {
try {
const userId = req.params.id;
const result = await db.tblVehicle.findAll({
where: {
user_id: userId,
},
});
return res
.status(200)
.json({ status: 200, message: "success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const getVehicleImagesByCarId = async (req, res) => {
try {
const vehicle_id = req.params.id;
let result = await db.tblVehicleImage.findAll({
where: {
vehicle_id: vehicle_id,
},
});
return res
.status(200)
.json({ status: 200, message: "success", data: result });
} catch (error) {
return res.status(500).json({ status: 500, message: `${error.message}` });
}
};
const updateVehicleDetails = async (req, res) => {
try {
const vehicle_id = req.params.id;
console.log(req.body);
const { imagesListIds } = req.body;
let result = await db.tblVehicle.update(req.body, {
where: {
vehicle_id: vehicle_id,
},
});
const promises = imagesListIds.map(async (id) => {
try {
result = await db.tblVehicleImage.destroy({
where: { image_id: id },
});
} catch (error) {
console.error(error);
return res
.status(500)
.json({ status: 500, message: "Internal Server Error" });
}
});
await Promise.all(promises);
console.log(result);
return res.json({ status: 200, message: "succes", data: result });
} catch (error) {
return res.json(error.message);
}
};
const removeCarFromAuctioneer = async (req, res) => {
try {
const { carIds } = req.body;
const results = await Promise.all(
carIds.map(async (vehicle_id) => {
let result;
await db.sequelize.transaction(async (t) => {
// Update tblVehicleRunFee
const vehicle_run_id = await db.tblVehicleRun.findOne({
where: { vehicle_id: vehicle_id },
transaction: t,
});
await db.tblVehicleRunFee.destroy({
where: {
vehicle_run_id: vehicle_run_id.vehicle_run_id,
},
transaction: t,
});
// Update tblVehicleRun
result = await db.tblVehicleRun.destroy({
where: {
vehicle_id: vehicle_id,
},
transaction: t,
});
// Update tblVehicle
await db.tblVehicle.update(
{
opportunity_id: null,
},
{
where: {
vehicle_id: vehicle_id,
},
transaction: t,
}
);
});
return result;
})
);
return res.json({ status: 200, message: "Success", data: results });
} catch (error) {
return res.status(500).json({
status: 500,
message: "Internal Server Error",
error: error.message,
});
}
};
const updateCarStatus = async (req, res) => {
try {
// const { vehicle_id, anoucements, reserve } = req.body;
// console.log(req.body);
let result;
const vehicle_id = req.body.vehicle_id;
[result] = await db.tblVehicleRun.findAll({
where: {
vehicle_id: vehicle_id,
},
});
if (!result) {
await db.tblVehicleRun.create(req.body);
} else {
await db.tblVehicleRun.update(req.body, {
where: {
vehicle_id: vehicle_id,
},
});
}
return res.json({ status: 200, message: "Success" });
} catch (error) {
console.log(error);
return res.json(error.message);
}
};
const deleteInventoryVehicle = async (req, res) => {
// const vehicle_id = parseInt(req.params.id);
// // Validate if vehicle ID is a number
// if (isNaN(vehicle_id)) {
// return res.status(400).json({
// status: 400,
// message: "Invalid vehicle ID",
// });
// }
// // Start a transaction
// const transaction = await db.sequelize.transaction();
// try {
// // Get vehicle_run_id using the transaction
// const vehicle_run = await db.tblVehicleRun.findOne({
// attributes: ["vehicle_run_id"],
// where: { vehicle_id },
// transaction,
// });
// if (vehicle_run) {
// const { vehicle_run_id } = vehicle_run;
// // Perform all destroy operations within the transaction
// const [vehicleRunFeeRmvdCount, vehicleRunRmvdCount] = await Promise.all([
// db.tblVehicleRunFee.destroy({
// where: { vehicle_run_id },
// transaction,
// }),
// db.tblVehicleRun.destroy({
// where: { vehicle_run_id },
// transaction,
// }),
// ]);
// const vehicleRmvdCount = await db.tblVehicle.destroy({
// where: { vehicle_id },
// transaction,
// });
// // Commit the transaction
// await transaction.commit();
// // Respond with the results of the destructions
// return res.json({
// status: 200,
// message: "Success"
// // vehicleRmvdCount: vehicleRmvdCount || 0,
// // vehicleRunRmvdCount: vehicleRunRmvdCount || 0,
// // vehicleRunFeeRmvdCount: vehicleRunFeeRmvdCount || 0,
// });
// } else {
// // If no associated vehicle run exists, nothing further to do
// await transaction.commit();
// return res.json({
// status: 200,
// message: "No associated vehicle runs found.No action taken.",
// });
// }
// } catch (error) {
// // Rollback the transaction in case of error
// await transaction.rollback();
// return res.status(500).json({
// status: 500,
// message: "Internal Server Error",
// error: error.message,
// });
// }
};
const insertYears = async (req, res) => {
try {
const startingYear = 1990;
const currentYear = new Date().getFullYear();
let result;
for (let year = startingYear; year <= currentYear; year++) {
result = await db.tblYear.create({ vehicle_year: year });
}
console.log("Years added successfully.");
return res.json({ status: 200, message: "Success", data: result });
} catch (error) {
console.error("Error adding years:", error);
}
};
const getYears = async (req, res) => {
try {
let result;
result = await db.tblYear.findAll();
const convertedData = result.map((entry) => parseInt(entry.vehicle_year));
return res.json({ status: 200, message: "Success", data: convertedData });
} catch (error) {
console.error("Error adding years:", error);
return res.json({ status: 502, errorMessage: error });
}
};
module.exports = {
getAllUserVehicles,
createVehicleControllerWithoutImages,
createVehicleController,
getVehicleImagesByCarId,
getVehicleDetailsById,
updateVehicleDetails,
assignVehicleToAuctioneerCtrl,
getUserCarsData,
removeCarFromAuctioneer,
updateCarStatus,
totalSalePrice,
totalSaleAndNetProfit,
sortByYear,
sortVehicles,
sortByMileage,
filterByConditionLight,
filterBySaleStatus,
deleteInventoryVehicle,
getConditionLightVehicles,
getSaleStatusVehicles,
insertYears,
getYears,
};
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists