import models from "$models/index.js";

const SEJAM_REQUIRED_MESSAGE =
  "برای انجام عملیات صدور و ابطال، همگام‌سازی سجام الزامی است.";

const requireSejamVerified = async (req, res, next) => {
  try {
    if (!req.user?._id) {
      return res.status(401).send({ message: "Unauthorized" });
    }

    if (req.user.isSejamVerified !== true) {
      return res.status(403).send({
        message: SEJAM_REQUIRED_MESSAGE,
        code: "SEJAM_VERIFICATION_REQUIRED",
      });
    }

    const userInfo = await models.userInfo
      .findOne({ user: req.user._id })
      .select("_id")
      .lean();

    if (!userInfo) {
      return res.status(403).send({
        message: SEJAM_REQUIRED_MESSAGE,
        code: "SEJAM_PROFILE_REQUIRED",
      });
    }

    return next();
  } catch (error) {
    return res.status(500).send({
      message: error.message || "خطا در بررسی وضعیت سجام کاربر",
    });
  }
};

export default requireSejamVerified;
