import { authWithHeaders } from '../../middlewares/api-v3/auth';
import _ from 'lodash';
import {
  NotFound,
} from '../../libs/api-v3/errors';

let api = {};

/**
 * @apiIgnore Not yet part of the public API
 * @api {post} /api/v3/notifications/:notificationId/read Mark one notification as read
 * @apiVersion 3.0.0
 * @apiName ReadNotification
 * @apiGroup Notification
 *
 * @apiParam {UUID} notificationId
 *
 * @apiSuccess {Object} data user.notifications
 */
api.readNotification = {
  method: 'POST',
  url: '/notifications/:notificationId/read',
  middlewares: [authWithHeaders()],
  async handler (req, res) {
    let user = res.locals.user;

    req.checkParams('notificationId', res.t('notificationIdRequired')).notEmpty();

    let validationErrors = req.validationErrors();
    if (validationErrors) throw validationErrors;

    let index = _.findIndex(user.notifications, {
      id: req.params.notificationId,
    });

    if (index === -1) {
      throw new NotFound(res.t('messageNotificationNotFound'));
    }

    user.notifications.splice(index, 1);
    await user.save();

    res.respond(200, user.notifications);
  },
};

module.exports = api;
