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