Files
2024-10-21 10:22:26 +03:30

110 lines
3.8 KiB
JavaScript

const { body, validationResult } = require("express-validator");
const { _sr } = require("../plugins/serverResponses");
const { checkValidations } = require("../plugins/controllersHelperFunctions");
const Book = require("../models/Book");
var convertapi = require('convertapi')('6zZB0nquI5V3P3Vg');
module.exports.AddPDF = [
[
body('title')
.notEmpty().withMessage(_sr['fa'].required.title)
],
checkValidations(validationResult),
async (req, res) => {
try {
const firstbook = [];
if (!req.files?.file) {
return res.status(422).json({ validation: { file: { msg: _sr['fa'].required.file } } });
}
if (req.files?.file.mimetype.split('/')[1] !== 'pdf') {
return res.status(422).json({ validation: { file: { msg: 'فقط فرمت PDF قابل قبول است' } } });
}
const book = await Book.findById(req.body.bookId);
const bookId = book ? book._id : null;
const data = { title: req.body.title };
const file = req.files.file;
const fileName = req.body.title.replace(Date.now(), '-') + '_' + Date.now() + '.pdf';
const imageName = req.body.title.replace(Date.now(), '-') + '_' + Date.now();
const filePath = `./static/uploads/pdf/${fileName}`;
await file.mv(filePath);
data.file = fileName;
const convertPromise = convertapi.convert('jpg', {
File: filePath
}, 'pdf');
const result = await convertPromise;
const savedFiles = await result.saveFiles(`./static/uploads/books/${imageName}.jpeg`);
const imagePath = `https://ostan-mr.ir/uploads/books/${imageName}.jpeg`;
firstbook.push(imagePath);
if (bookId) {
const update = await Book.findByIdAndUpdate(
{_id:bookId},
{ $push: { slides: imagePath } },
{ upsert: true }
);
return res.status(201).json({ msg: "اسلاید کتاب اضافه شد", Data: update });
} else {
const newBook = new Book({
title: req.body.title,
uri: `https://ostan-mr.ir/uploads/pdf/${fileName}`,
slides: firstbook
});
await newBook.save();
return res.status(201).json({ msg: "کتاب ایجاد شد", Data: newBook });
}
} catch (error) {
console.error(error);
return res.status(500).json({ msg: "خطایی در پردازش فایل رخ داد", error: error.message });
}
}
];
module.exports.GetAll = [
async (req, res,next) => {
try {
const Books = await Book.find({});
return res.status(200).json({ Books });
} catch (error) {
next(error)
}
}
];
module.exports.GetOne = [
async (req, res,next) => {
try {
const id = req.params.id
const book = await Book.findById(id);
return res.status(200).json({ msg: book });
} catch (error) {
next(error)
}
}
];
module.exports.DeleteOne = [
async(req,res,next)=>{
try {
const book = await Book.deleteOne({_id:req.params.id})
if(!book){
return res.status(200).json({ msg: 'کتاب وجود ندارد ' });
}
return res.status(200).json({ msg: 'کتاب حذف شد' });
} catch (error) {
next(error)
}
}
]