Files
ostandari/server/controllers/counterDayController.js
T
2024-10-21 10:22:26 +03:30

92 lines
3.0 KiB
JavaScript

const CounterDay = require('../models/CounterDay');
const {body, validationResult} = require('express-validator');
const {_sr} = require('../plugins/serverResponses');
const {res404, res500} = require('../plugins/controllersHelperFunctions');
const fs = require('fs');
const sharp = require('sharp');
const moment = require('moment-jalaali');
/////////////////////////////////////////////////////////////////////// admin
module.exports.updateCounterDay = [
[
body('title')
.notEmpty().withMessage(_sr['fa'].required.title),
body('publish')
.optional().isBoolean().withMessage(_sr['fa'].format.boolean),
body('expireDate')
.notEmpty().withMessage(`لطفا یک تاریخ تعیین کنید`),
],
async (req, res) => {
const errors = validationResult(req)
if (!errors.isEmpty()) return res.status(422).json({
validation: errors.mapped()
});
try {
const {title, publish , expireDate} = req.body;
const targetCounterDay = await CounterDay.findOne();
if (targetCounterDay) {
targetCounterDay.title = title;
targetCounterDay.publish = publish;
targetCounterDay.expireDate = moment(expireDate).startOf('days');
targetCounterDay._updatedBy = req.user._id;
await targetCounterDay.save();
return res.json({message: _sr['fa'].response.success_save});
}else {
const data = {
title,
publish,
expireDate : moment(expireDate).startOf('days'),
_creator : req.user._id,
_updatedBy: req.user._id
}
await CounterDay.create(data);
return res.json({message: _sr['fa'].response.success_save});
}
} catch (error) {
return res500(res, `مشکلی در اجرای درخواست پیش آمده است`);
}
}
]
module.exports.getCounterDayByAdmin = [
async (req, res) => {
try {
const targetCounterDay = await CounterDay.findOne();
if (!targetCounterDay) return res.json({title: '', publish: true , expireDate : ''});
return res.json(targetCounterDay);
} catch (error) {
return res500(res, `مشکلی در اجرای درخواست شما پیش آمده است`);
}
}
]
////////////////////////////////////////////////////////////////// public
module.exports.getCounterDayByUser = [
async (req, res) => {
try {
const targetCounterDay = await CounterDay.findOne({publish : true , expireDate : {$gte : new Date()}});
if (!targetCounterDay) return res.json(null);
return res.json(targetCounterDay);
} catch (error) {
return res500(res, `مشکلی در اجرای درخواست شما پیش آمده است`);
}
}
]