import { Request, Response } from "express";
import User from "../../models/user";
const getUsers = async (req: Request, res: Response) => {
  const { page = 1, perPage = 10, search, status } = req.query;

  try {
    const filter: Record<string, any> = { role: "User" };
    if (status && status !== "all") filter.status = status;
    if (search) {
      const escaped = String(search).replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
      const re = new RegExp(escaped, "i");
      filter.$or = [{ name: re }, { email: re }];
    }

    const [users, totalItemCount] = await Promise.all([
      User.find(filter)
        .sort({ createdAt: -1 })
        .skip((Number(page) - 1) * Number(perPage))
        .limit(Number(perPage)),
      User.countDocuments(filter),
    ]);
    res.status(200).json({ users, totalItemCount });
  } catch (err) {
    console.log(err);
    res.status(500).json({ message: err });
  }
};

export default getUsers;
