import MobileApp from "./MobileAppModel.js"; import { ref, uploadBytes, getDownloadURL, deleteObject } from "firebase/storage"; import { storage } from "../../../uploads/firebaseConfig.js"; export const addMobileApp = async (req, res) => { try { const application = await MobileApp.findOne(); const folderPath = "MobileApps/"; let pdapp, rdapp, scapp, tmapp; // Helper function to upload and get `url` for an APK const uploadApp = async (file, currentPublicId) => { // Delete old file if it exists if (currentPublicId) { const oldFileRef = ref(storage, `${folderPath}${currentPublicId}`); await deleteObject(oldFileRef); } // Create a storage reference const storageRef = ref(storage, `${folderPath}${file.name}`); // Upload the file await uploadBytes(storageRef, file.data); // Get the download URL const url = await getDownloadURL(storageRef); return { public_id: file.name, url }; // Use file.name as public_id }; // Upload APKs conditionally based on their presence in `req.files` if (req.files.PDApp) { pdapp = await uploadApp(req.files.PDApp, application?.PDApp?.public_id); } if (req.files.RDApp) { rdapp = await uploadApp(req.files.RDApp, application?.RDApp?.public_id); } if (req.files.SCApp) { scapp = await uploadApp(req.files.SCApp, application?.SCApp?.public_id); } if (req.files.TMApp) { tmapp = await uploadApp(req.files.TMApp, application?.TMApp?.public_id); } // Prepare update object only for fields that have new uploads const updateData = { ...(pdapp && { PDApp: pdapp }), ...(rdapp && { RDApp: rdapp }), ...(scapp && { SCApp: scapp }), ...(tmapp && { TMApp: tmapp }), }; if (!application) { // Create new record if it doesn't exist const newApplication = await MobileApp.create(updateData); return res.status(200).json({ status: "success", message: "Uploaded Apps Successfully", PDAppUrl: newApplication.PDApp?.url, RDAppUrl: newApplication.RDApp?.url, SCAppUrl: newApplication.SCApp?.url, TMAppUrl: newApplication.TMApp?.url, }); } else { // Update existing record await MobileApp.updateOne({}, { $set: updateData }); return res.status(200).json({ status: "success", message: "Updated Apps Successfully", PDAppUrl: pdapp?.url || application.PDApp.url, RDAppUrl: rdapp?.url || application.RDApp.url, SCAppUrl: scapp?.url || application.SCApp.url, TMAppUrl: tmapp?.url || application.TMApp.url, }); } } catch (error) { console.error("Error uploading APKs:", error); return res.status(500).json({ status: "error", message: "An error occurred while uploading APKs.", }); } }; export const getMobileApp = async (req, res) => { try { const application = await MobileApp.findOne(); if (!application) { return res.status(404).json({ status: "error", message: "No Mobile App found", }); } return res.status(200).json({ status: "success", PDAppUrl: application.PDApp?.url, RDAppUrl: application.RDApp?.url, SCAppUrl: application.SCApp?.url, TMAppUrl: application.TMApp?.url, }); } catch (error) { console.error("Error fetching Mobile App:", error); return res.status(500).json({ status: "error", message: "An error occurred while fetching Mobile App.", }); } }; // import cloudinary from "../../../Utils/cloudinary.js"; // export const addMobileApp = async (req, res) => { // try { // const application = await MobileApp.findOne(); // const folderPath = "MobileApps"; // let pdapp, rdapp, scapp, tmapp; // console.log("1", req.files); // console.log("3", application); // // Helper function to upload and get `url` and `public_id` for an APK // const uploadApp = async (file, currentPublicId) => { // // Delete old file if it exists // if (currentPublicId) { // await cloudinary.v2.uploader.destroy(currentPublicId); // } // // Upload new file // const result = await cloudinary.v2.uploader.upload(file.tempFilePath, { // folder: folderPath, // resource_type: "auto", // }); // return { public_id: result.public_id, url: result.secure_url }; // }; // // Upload APKs conditionally based on their presence in `req.files` // if (req.files.PDApp) { // pdapp = await uploadApp(req.files.PDApp, application?.PDApp?.public_id); // } // if (req.files.RDApp) { // rdapp = await uploadApp(req.files.RDApp, application?.RDApp?.public_id); // } // if (req.files.SCApp) { // scapp = await uploadApp(req.files.SCApp, application?.SCApp?.public_id); // } // if (req.files.TMApp) { // tmapp = await uploadApp(req.files.TMApp, application?.TMApp?.public_id); // } // // Prepare update object only for fields that have new uploads // const updateData = { // ...(pdapp && { PDApp: pdapp }), // ...(rdapp && { RDApp: rdapp }), // ...(scapp && { SCApp: scapp }), // ...(tmapp && { TMApp: tmapp }), // }; // if (!application) { // // Create new record if it doesn't exist // const newApplication = await MobileApp.create(updateData); // return res.status(200).json({ // status: "success", // message: "Uploaded Apps Successfully", // PDAppUrl: newApplication.PDApp?.url, // RDAppUrl: newApplication.RDApp?.url, // SCAppUrl: newApplication.SCApp?.url, // TMAppUrl: newApplication.TMApp?.url, // }); // } else { // // Update existing record // await MobileApp.updateOne({}, { $set: updateData }); // return res.status(200).json({ // status: "success", // message: "Updated Apps Successfully", // PDAppUrl: pdapp?.url || application.PDApp.url, // RDAppUrl: rdapp?.url || application.RDApp.url, // SCAppUrl: scapp?.url || application.SCApp.url, // TMAppUrl: tmapp?.url || application.TMApp.url, // }); // } // } catch (error) { // console.error("Error uploading APKs:", error); // return res.status(500).json({ // status: "error", // message: "An error occurred while uploading APKs.", // }); // } // };