This commit is contained in:
payacom
2026-09-13 21:32:36 +03:30
parent 90c5f94b57
commit c302aea177
49 changed files with 4063 additions and 920 deletions

View File

@@ -0,0 +1,73 @@
const UserModel = require('../../../models/UserModel')
const PostModel = require('../../../models/PostModel')
const CommentModel = require('../../../models/CommentModel')
const AdvertisingCommentModel = require('../../../models/AdvertisingCommentModel')
const CourseCommentModel = require('../../../models/CourseComentModel')
const AdvertisingModel = require('../../../models/AdvertisingModel')
const ProjectModel = require('../../../models/ProjectModel')
const CourseModel = require('../../../models/CourseModel')
const AcademyContentModel = require('../../../models/AcademyContentModel')
const ShopModel = require('../../../models/ShopModel')
const ShopProductListingModel = require('../../../models/ShopProductListingModel')
const TicketModel = require('../../../models/TicketModel')
const StoryModel = require('../../../models/StoryModel')
// عین moderationStatsController ولی برخلاف اون (که فقط موارد در انتظار/تایید موقت رو
// می‌شمره)، اینجا مجموع کلِ هر مدل از ابتدای راه‌اندازی سایته — برای بخش «آمار کلی»
// بالای داشبورد
const getOverallStats = async (req, res, next) => {
try {
const token = req.header('Authorization')?.split(' ')[1]
if (!token) return res.status(401).send('Access Denied')
const [
users,
posts,
comments,
vitrineComments,
academyComments,
billboards,
projects,
courses,
academyVideos,
shops,
shopProducts,
tickets,
stories,
] = await Promise.all([
UserModel.countDocuments({}),
PostModel.countDocuments({}),
CommentModel.countDocuments({}),
AdvertisingCommentModel.countDocuments({}),
CourseCommentModel.countDocuments({}),
AdvertisingModel.countDocuments({}),
ProjectModel.countDocuments({}),
CourseModel.countDocuments({}),
AcademyContentModel.countDocuments({}),
ShopModel.countDocuments({}),
ShopProductListingModel.countDocuments({}),
TicketModel.countDocuments({}),
StoryModel.countDocuments({}),
])
res.status(200).json({
users,
posts,
comments,
vitrineComments,
academyComments,
billboards,
projects,
courses,
academyVideos,
shops,
shopProducts,
tickets,
stories,
})
} catch (error) {
next(error)
}
}
module.exports = { getOverallStats }