| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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,
- })
- })
|