143 lines
3.6 KiB
JavaScript
143 lines
3.6 KiB
JavaScript
const YearBanner = require('../models/YearBanner');
|
|
const {body, validationResult, checkSchema} = require('express-validator');
|
|
const {_sr} = require('../plugins/serverResponses');
|
|
const {res404, res500} = require('../plugins/controllersHelperFunctions');
|
|
const {uploadProcessedImage} = require('../plugins/yearBannerImageStorage');
|
|
|
|
////// variables
|
|
const yearBannerWidth = 1920
|
|
const yearBannerHeight = 160
|
|
const yearBannerQuality = 100
|
|
|
|
|
|
module.exports.updateYearBanner = [
|
|
checkSchema({
|
|
iranFlag: {
|
|
optional: true,
|
|
isBoolean: true,
|
|
errorMessage: _sr['fa'].format.boolean
|
|
}
|
|
}),
|
|
async (req, res) => {
|
|
const errors = validationResult(req)
|
|
if (!errors.isEmpty()) return res.status(422).json({validation: errors.mapped()});
|
|
|
|
try {
|
|
/**
|
|
* get data from input
|
|
*/
|
|
const {
|
|
iranFlag,
|
|
electionBtn,
|
|
hasEmail,
|
|
hasGPlus,
|
|
hasTweeter,
|
|
hasInstagram,
|
|
email,
|
|
gPlus,
|
|
tweeter,
|
|
instagram
|
|
} = req.body
|
|
|
|
const yearBanner = await YearBanner.findOne();
|
|
|
|
let imageName
|
|
if (req.files?.mainCover) {
|
|
const image = req.files.mainCover;
|
|
if (!_sr.supportedImageFormats.includes(image.mimetype.split('/')[1])) {
|
|
return res.status(422).json({validation: {cover: {msg: _sr['fa'].format.image}}});
|
|
}
|
|
|
|
imageName = `mainPage_cover.jpg`;
|
|
|
|
await uploadProcessedImage(
|
|
image.data,
|
|
imageName,
|
|
yearBannerWidth,
|
|
yearBannerHeight,
|
|
yearBannerQuality
|
|
);
|
|
}
|
|
|
|
if (yearBanner) {
|
|
yearBanner.iranFlag = iranFlag;
|
|
yearBanner.electionBtn = electionBtn;
|
|
// footerOptions
|
|
yearBanner.hasEmail = hasEmail;
|
|
yearBanner.hasGPlus = hasGPlus;
|
|
yearBanner.hasTweeter = hasTweeter;
|
|
yearBanner.hasInstagram = hasInstagram;
|
|
yearBanner.email = email;
|
|
yearBanner.gPlus = gPlus;
|
|
yearBanner.tweeter = tweeter;
|
|
yearBanner.instagram = instagram;
|
|
|
|
if (req.files?.mainCover) yearBanner.mainCover = imageName;
|
|
yearBanner._updatedBy = req.user._id;
|
|
|
|
await yearBanner.save();
|
|
|
|
return res.json({message: _sr['fa'].response.success_save});
|
|
} else {
|
|
const data = {
|
|
iranFlag,
|
|
electionBtn,
|
|
hasEmail,
|
|
hasGPlus,
|
|
hasTweeter,
|
|
hasInstagram,
|
|
email,
|
|
gPlus,
|
|
tweeter,
|
|
instagram,
|
|
_updatedBy: req.user._id
|
|
}
|
|
if (req.files?.mainCover) data.mainCover = imageName;
|
|
await YearBanner.create(data);
|
|
return res.json({message: _sr['fa'].response.success_save});
|
|
}
|
|
|
|
} catch (error) {
|
|
return res500(res, `مشکلی در اجرای درخواست پیش آمده است`);
|
|
}
|
|
}
|
|
]
|
|
|
|
module.exports.getYearBanner = [
|
|
async (req, res) => {
|
|
try {
|
|
/**
|
|
* get getYearBanner
|
|
*/
|
|
const getYearBanner = await YearBanner.findOne();
|
|
|
|
/**
|
|
* if not exist
|
|
*/
|
|
if (!getYearBanner) return res.json({
|
|
mainCover: '',
|
|
iranFlag: true,
|
|
electionBtn: true,
|
|
hasEmail: true,
|
|
hasGPlus: true,
|
|
hasTweeter: true,
|
|
hasInstagram: true,
|
|
email: '',
|
|
gPlus: '',
|
|
tweeter: '',
|
|
instagram: ''
|
|
});
|
|
|
|
/**
|
|
* show result
|
|
*/
|
|
return res.json(getYearBanner);
|
|
} catch (error) {
|
|
/**
|
|
* if we got unkown error show to client
|
|
*/
|
|
return res500(res, `مشکلی در اجرای درخواست شما پیش آمده است`);
|
|
}
|
|
}
|
|
]
|