import { ResultSetHeader, RowDataPacket } from "mysql2";
import DB from "../config/database/db";
import tenantInstitutionDetailsTypes from "../schemas/tenantInstitutionDetails.schema";

const tenantInstitutionDetailsDB: any = {};

tenantInstitutionDetailsDB.getByTenantIdAndClientId = async ({ tenantId, clientId }: tenantInstitutionDetailsTypes) => {
  const query = "Select * from TenantInstitutionDetails where tenantId = ? and clientId = ?";
  const data = [tenantId, clientId];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows[0];
  else return false;
};

tenantInstitutionDetailsDB.create = async ({
  tenantId,
  clientId,
  institutionName,
  institutionId,
  occupation,
  tenure,
  designation,
  domain,
  intakeDate,
}: tenantInstitutionDetailsTypes) => {
  const query =
    "INSERT INTO TenantInstitutionDetails (tenantId, clientId, institutionId, institutionName, occupation, tenure, designation, domain, intake) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
  const data = [
    tenantId,
    clientId,
    institutionId,
    institutionName,
    occupation,
    tenure,
    designation,
    domain,
    intakeDate,
  ];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

tenantInstitutionDetailsDB.update = async ({
  tenantId,
  clientId,
  institutionId,
  institutionName,
  occupation,
  tenure,
  designation,
  domain,
  intakeDate,
}: tenantInstitutionDetailsTypes) => {
  const query =
    "UPDATE TenantInstitutionDetails SET institutionName = ?, institutionId = ?, occupation = ?, tenure = ?, designation = ?, domain = ?, intake = ? WHERE tenantId = ? and clientId = ?";
  const data = [
    institutionName,
    institutionId,
    occupation,
    tenure,
    designation,
    domain,
    intakeDate,
    tenantId,
    clientId,
  ];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

export default tenantInstitutionDetailsDB;
