110 lines
3.8 KiB
JavaScript
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)
|
|
}
|
|
}
|
|
]
|