import { ResultSetHeader, RowDataPacket } from "mysql2";
import DB from "../../config/database/db";
import CONSTANTS from "../../config/constants";

const autoComplaintDB: any = {};

autoComplaintDB.getActionRequiredComplaints = async () => {
  const query = `select C.* from Complaints as C join ComplaintRules as CR on C.ruleApplied = CR.id where DATE_ADD(C.createdAt, INTERVAL CR.resolutionTime HOUR) < NOW() and C.status = ?`;

  const data = [
    CONSTANTS.COMPLAINT_STATUS.ASSIGNED,
  ];

  const [rows] = await DB.query<RowDataPacket[]>(query, data);
  if (rows && rows.length > 0) return rows;
  return false;
};

autoComplaintDB.getComplaintRuleById = async ({
    id
}: {id: number}) => {
  const query = `select * from ComplaintRules where id = ?`;

  const data = [
    id,
  ];

  const [rows] = await DB.query<RowDataPacket[]>(query, data);
  if (rows && rows.length > 0) return rows;
  return false;
};

autoComplaintDB.updateAssignedTo = async ({
  id,
  assignedTo,
}: {
  id: number;
  assignedTo: string;
}) => {
  const query = `UPDATE Complaints SET assignedTo = ? WHERE id = ?`;

  const data = [assignedTo, id];
  const [rows] = await DB.execute<ResultSetHeader>(query, data);
  if (rows?.affectedRows > 0) return true;
  else return false;
};

export default autoComplaintDB;
