/
home
/
infinitibizsol
/
.trash
/
controllers.1
/
File Upload :
llllll
Current File: /home/infinitibizsol/.trash/controllers.1/vehicleController.js
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); // return res.json({ data: weekRange }); /* 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); break; // return { startDate: currentWeekStartDate, endDate: currentWeekEndDate }; case "lastweek": const lastWeekStartDate = new Date(currentDate); lastWeekStartDate.setDate( currentDate.getDate() - currentDate.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); break; case "last4weeks": let last4WeeksStartDate = new Date(currentDate); last4WeeksStartDate.setDate(currentDate.getDate() - 28); last4WeeksStartDate.setHours(0, 0, 0, 0); let last4WeeksEndDate = new Date(currentDate); last4WeeksEndDate.setHours(23, 59, 59, 999); break; // return { startDate: last4WeeksStartDate, endDate: last4WeeksEndDate }; default: last4WeeksStartDate = new Date(currentDate); last4WeeksStartDate.setDate(currentDate.getDate() - 28); last4WeeksStartDate.setHours(0, 0, 0, 0); last4WeeksEndDate = new Date(currentDate); last4WeeksEndDate.setHours(23, 59, 59, 999); } */ let { sortBy, orderDirection } = req.body; const result = await db.tblVehicle.findAll({ 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 sortByConditionLight = async (req, res) => { try { const { user_id, week_id } = req.body; const results = await db.tblOpportunity.findAll({ attributes: ["opportunity_id", "auctioneer_id"], where: { user_id: user_id, week_id: week_id }, include: [ { model: db.tblVehicle, attributes: ["vehicle_id"], include: [ { model: db.tblVehicleRun, attributes: ["condition_light"], order: [["condition_light", "ASC"]], }, ], }, ], }); const groupedData = results.flatMap( ({ auctioneer_id, opportunity_id, tblVehicles }) => { const groupedByCondition = tblVehicles.reduce((acc, vehicle) => { const condition_light = vehicle.tblVehicleRuns[0]?.condition_light || 0; if (!acc[condition_light]) { acc[condition_light] = []; } acc[condition_light].push({ vehicle_id: vehicle.vehicle_id, year: vehicle.year, make: vehicle.make, model: vehicle.model, imageUrl: vehicle.imageUrl, condition_light: condition_light || 0, sale_price: vehicle.tblVehicleRuns[0]?.sale_price || null, sale_status: vehicle.tblVehicleRuns[0]?.sale_status || null, lane_id: vehicle.tblVehicleRuns[0]?.lane_id || null, }); return acc; }, {}); return Object.entries(groupedByCondition).map( ([condition_light, vehicles_list]) => ({ opportunity_id, auctioneer_id, condition_light: Number(condition_light), units: vehicles_list.length, // Add the units property // vehicles_list, }) ); } ); const conditionLightValues = [0, 1, 2, 3]; // Check for missing condition_light values const missingValues = conditionLightValues.filter((value) => { return !groupedData.some((item) => item.condition_light === value); }); // Add missing values to the existing data const newData = groupedData.concat( missingValues.map((value) => ({ opportunity_id: 0, // Replace with the appropriate value auctioneer_id: 0, // Replace with the appropriate value condition_light: value, units: 0, // Replace with the appropriate value })) ); const filteredData = newData.filter((item) => item.condition_light != 0); return res.json({ status: 200, Message: "Success", data: filteredData }); } catch (error) { return res.status(500).json({ error: error.message }); } }; const getConditionLightVehicles = async (req, res) => { try { const { condition_light, opportunity_id } = req.body; const results = await db.tblVehicle.findAll({ attributes: [ "vehicle_id", "year", "make", "model", "vin", "mileage", "imageUrl", "color", ], where: { opportunity_id: opportunity_id }, include: [ { model: db.tblVehicleRun, attributes: [ "condition_light", "announcements", "sale_price", "auction_fee", "net_profit", "reserve", "sale_status", "lane_id", ], where: { condition_light: condition_light }, raw: true, include: [ { model: db.tblAuctionLane, attributes: ["name"], raw: true, // required: true, include: [ { model: db.tblAuction, attributes: ["auction_id", "name"], raw: true, required: false, }, ], }, ], }, ], }); const outputArray = results.map((vehicle) => { const vehicleRun = vehicle.tblVehicleRuns[0]; 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, vehicle_run_id: vehicleRun.vehicle_run_id, condition_light: vehicleRun.condition_light, announcements: vehicleRun.announcements, reserve: vehicleRun.reserve, sale_price: vehicleRun.sale_price, auction_fee: vehicleRun.auction_fee, net_profit: vehicleRun.net_profit, sale_status: vehicleRun.sale_status, run_no: vehicleRun.run_no, lane_id: vehicleRun.lane_id, lane_name: auctionLane.name, auction_id: auction.auction_id || null, auction_name: auction.name || null, }; }); return res.json({ status: true, message: "Success", data: outputArray }); } catch (error) { return res.status(500).json({ error: error.message }); } }; const calculateLength = (data) => { return data.map((group) => ({ sale_status: group.sale_status, vehicles_list_length: group.vehicles_list.length, vehicles_list: group.vehicles_list, })); }; const sortBySaleStatus = async (req, res) => { try { const { auctioneer_id, user_id, week_id } = req.body; const result = await db.tblOpportunity.findAll({ attributes: ["opportunity_id", "auctioneer_id"], where: { user_id: user_id, week_id: week_id }, include: [ { model: db.tblVehicle, attributes: ["vehicle_id", "opportunity_id"], where: { opportunity_id: col("tblOpportunity.opportunity_id") }, raw: true, include: [ { model: db.tblVehicleRun, attributes: ["condition_light", "sale_status"], where: { vehicle_id: col("tblVehicles.vehicle_id") }, }, ], }, ], }); // return res.json({ result }); if (result.length <= 0) { return res.json({ status: 200, message: "Success", data: result }); } let outputData = result[0].tblVehicles.flatMap((vehicle) => { return vehicle.tblVehicleRuns.map((run) => ({ vehicle_id: vehicle.vehicle_id, opportunity_id: vehicle.opportunity_id, auctioneer_id: result[0].auctioneer_id, condition_light: run.condition_light, sale_status: run.sale_status, })); }); const groupedData = outputData.reduce((acc, item) => { const { sale_status, ...rest } = item; if (!acc[sale_status]) { acc[sale_status] = { units: 0, data: [] }; } acc[sale_status].units += 1; acc[sale_status].data.push(rest); return acc; }, {}); // Transform groupedData into the desired format outputData = Object.keys(groupedData).map((sale_status) => { return { ...groupedData[sale_status].data[0], // Assuming all items in a group have the same vehicle_id, condition_light, and sale_status sale_status: sale_status, // sale_status: false, units: groupedData[sale_status].units, }; }); const saleStatusValues = ["true", "false"]; // Check for missing sale_status values const missingValues = saleStatusValues.filter((value) => { return !outputData.some((item) => item.sale_status === value); }); // Add missing values to the existing data const newData = outputData.concat( missingValues.map((value) => ({ vehicle_id: 0, // Replace with the appropriate value opportunity_id: 0, // Replace with the appropriate value auctioneer_id: 0, // Replace with the appropriate value condition_light: 0, // Replace with the appropriate value sale_status: value, units: 0, // Replace with the appropriate value })) ); return res.json({ status: 200, message: "Success", data: newData }); [ { vehicle_id: 0, opportunity_id: 0, auctioneer_id: 0, condition_light: 0, sale_status: "false", units: 0, }, { vehicle_id: 0, opportunity_id: 0, auctioneer_id: 0, condition_light: 0, sale_status: "true", units: 0, }, ]; } catch (error) { return res.json(error.message); } }; const getSaleStatusVehicles = async (req, res) => { try { const { sale_status, opportunity_id, sortBy, orderDirection } = req.body; const results = await db.tblVehicle.findAll({ attributes: [ "vehicle_id", "year", "make", "model", "vin", "mileage", "imageUrl", "color", ], where: { opportunity_id: opportunity_id }, include: [ { model: db.tblVehicleRun, // attributes: ["condition_light","announcements","sale_price","auction_fee","reserve","sale_status","lane_id"], where: { sale_status: sale_status }, raw: true, include: [ { model: db.tblAuctionLane, attributes: ["name"], raw: true, // required: true, include: [ { model: db.tblAuction, attributes: ["auction_id", "name"], raw: true, required: false, }, ], }, ], }, ], order: [[sortBy || "vehicle_id", orderDirection || "ASC"]], }); const outputArray = results.map((vehicle) => { const vehicleRun = vehicle.tblVehicleRuns[0]; 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, vehicle_run_id: vehicleRun.vehicle_run_id, condition_light: vehicleRun.condition_light, announcements: vehicleRun.announcements, reserve: vehicleRun.reserve, sale_price: vehicleRun.sale_price, auction_fee: vehicleRun.auction_fee, net_profit: vehicleRun.net_profit, sale_status: vehicleRun.sale_status, run_no: vehicleRun.run_no, lane_id: vehicleRun.lane_id, lane_name: auctionLane.name, auction_id: auction.auction_id || null, auction_name: auction.name || null, }; }); return res.json({ status: true, 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 updateUserAuctioneerCarsList = 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, }; const promises = car_ids.map((item) => { db.tblVehicle.update(data, { where: { vehicle_id: item, }, }); }); await Promise.all(promises); return res.json({ status: 200, message: "Updated Successfully" }); } catch (error) { console.log(error); return res.json(error.message); } }; const createVehicleController = async (req, res) => { try { 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; const result = await db.tblVehicle.create(body); 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({ 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 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.json({ status: 500, message: `Error in removeCarFromAuctioneer: ${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 deleteUserVehicle = async (req, res) => { try { let vehicle_id = req.params.id; vehicle_id = parseInt(vehicle_id); // Use Promise.all for concurrent execution const [tblVehicleResult] = await db.tblVehicle.destroy({ where: { vehicle_id: vehicle_id, }, }); let tblVehicleRunResult; if (!tblVehicleResult) { [tblVehicleRunResult] = await db.tblVehicleRun.destroy({ where: { vehicle_id: vehicle_id, }, }); } return res.json({ status: 200, message: "Success", tblVehicleRunRueslt: tblVehicleRunResult || 0, }); } catch (error) { return res.json(error.message); } }; module.exports = { getAllUserVehicles, createVehicleControllerWithoutImages, createVehicleController, getVehicleImagesByCarId, getVehicleDetailsById, updateVehicleDetails, updateUserAuctioneerCarsList, getUserCarsData, removeCarFromAuctioneer, updateCarStatus, totalSalePrice, totalSaleAndNetProfit, sortByYear, sortVehicles, sortByMileage, sortByConditionLight, sortBySaleStatus, deleteUserVehicle, getConditionLightVehicles, getSaleStatusVehicles, };
Copyright ©2k19 -
Hexid
|
Tex7ure