const pengunjungModel = require('../model/pengunjung.model') const handleError = require('../utils/handleError') const response = require('../utils/responseHandler') const { validate } = require('../utils/validation') exports.create = handleError(async (req, res) => { const { os, ipv4, location } = req.body const isValid = validate(res, req.body, { os: 'string', ipv4: 'string', location: { $$type: 'object', country: 'string', region: 'string', city: 'string', lat: 'number', lon: 'number', timezone: 'string', }, }) if (!isValid) return await pengunjungModel.create({ os, ipv4, location }) return response.success(res, { message: 'data pengunjung berhasil dibuat', }) }) exports.getPengunjung = handleError(async (req, res) => { const { tahun } = req.query let date = {} if (tahun) { date = { $expr: { $eq: [ { $year: '$createdAt' }, parseInt(tahun) || new Date().getFullYear(), ], }, } } const pengunjung = await pengunjungModel.aggregate([ { $match: date }, { $group: { _id: { bulan: { $month: '$createdAt', }, tahun: { $year: '$createdAt', }, }, jumlah_pengunjung: { $sum: 1, }, }, }, ]) return response.success(res, { message: 'data pengunjung', data: pengunjung, }) })