import { Request, Response } from 'express'
import { AlertView } from '../models'
import { Alert } from '../../alerts/models'
import helpers from '../../../utils/helpers'

async function getAlertViews(req: Request, res: Response) {
	await helpers.runApi(res, async () => {
		const alertId = req.params.alertId

		interface Payload {
			limit?: string | number
			page?: string | number
		}
		let { limit = '20', page = '1' } = req.query as Payload
		limit = +limit
		page = +page
		const skip = (page - 1) * limit

		const alert = await Alert.findById(alertId).lean()
		if (!alert) {
			return res.status(404).json({ message: 'alert not found' })
		}

		const views = await AlertView.find({ alert: alertId })
			.sort({ at: -1 })
			.skip(skip)
			.limit(limit)
			.populate({ path: 'user', select: 'name username photo' })
			.lean()

		const count = await AlertView.countDocuments({ alert: alertId })

		return res.json({ views, count })
	})
}

const controllers = {
	getAlertViews,
}

export default controllers
