import Joi from 'joi';

export class NotificationValidation {
  /**
   * Validation for getting notifications
   */
  public static getNotifications = Joi.object({
    page: Joi.number().optional(),
    limit: Joi.optional(),
    is_read: Joi.boolean().optional(),
    type: Joi.string()
      .valid('MESSAGE', 'EMERGENCY', 'QRSCAN', 'MEMORY', 'DEFAULT', 'UNREAD')
      .optional(),
  });

  /**
   * Validation for marking notification as read
   */
  public static markAsRead = Joi.object({
    id: Joi.string()
      .pattern(/^[0-9a-fA-F]{24}$/)
      .required(),
  });

  /**
   * Validation for deleting notification
   */
  public static deleteNotification = Joi.object({
    id: Joi.string()
      .pattern(/^[0-9a-fA-F]{24}$/)
      .required(),
  });

  /**
   * Validation for creating notification
   */
  public static createNotification = Joi.object({
    title: Joi.string().min(1).max(200).required(),
    message: Joi.string().min(1).max(1000).required(),
    type: Joi.string()
      .valid('MESSAGE', 'EMERGENCY', 'QRSCAN', 'MEMORY', 'DEFAULT')
      .default('DEFAULT'),
    link: Joi.string().uri().optional(),
    user_id: Joi.string()
      .pattern(/^[0-9a-fA-F]{24}$/)
      .optional(), // Only for admin users
    qrcode_id: Joi.string()
      .pattern(/^[0-9a-fA-F]{24}$/)
      .optional(),
    scan_id: Joi.string()
      .pattern(/^[0-9a-fA-F]{24}$/)
      .optional(),
    data: Joi.object().optional(),
    sendPush: Joi.boolean().default(true),
  });

  /**
   * Validation for toggling push notifications
   */
  public static togglePushNotifications = Joi.object({
    enabled: Joi.boolean().required(),
  });
}
