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

const landlordBankAccountsDB: any = {};

landlordBankAccountsDB.addBank = async ({
  clientId,
  landlordId,
  holderName,
  accountNum,
  ifsc,
  bankAddress,
  bankName,
}: landlordBankAccountsTypes) => {
  const query =
    "Insert into LandlordBankAccounts (clientId, landlordId, holderName, accountNum, ifsc, bankAddress, bankName) values (?, ?, ?, ?, ?, ?, ?)";
  const data = [
    clientId,
    landlordId,
    holderName,
    accountNum,
    ifsc,
    bankAddress,
    bankName,
  ];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

landlordBankAccountsDB.update = async ({
  id,
  holderName,
  accountNum,
  ifsc,
  bankAddress,
  bankName,
}: landlordBankAccountsTypes) => {
  const query =
    "Update LandlordBankAccounts set holderName = ?, accountNum = ?, ifsc = ?, bankAddress = ?, bankName = ? where id = ?";
  const data = [
    holderName,
    accountNum,
    ifsc,
    bankAddress,
    bankName,
    id,
  ];
  const [rows] = await DB.query<ResultSetHeader>(query, data);
  return rows.insertId;
};

landlordBankAccountsDB.getByClientIdAndLandlordId = async ({
  clientId,
  landlordId,
}: landlordBankAccountsTypes) => {
  const query = "Select * from LandlordBankAccounts where clientId = ? and landlordId = ?";
  const data = [
    clientId,
    landlordId,
  ];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows;
  else return false;
};

landlordBankAccountsDB.getById = async ({
  id,
}: landlordBankAccountsTypes) => {
  const query = "Select * from LandlordBankAccounts where id = ?";
  const data = [
    id,
  ];
  const [rows] = await DB.execute<RowDataPacket[]>(query, data);
  if (rows?.length > 0) return rows[0];
  else return false;
};

landlordBankAccountsDB.deleteById = async ({
  id,
}: landlordBankAccountsTypes) => {
  const query = "Delete from LandlordBankAccounts where id = ?";
  const data = [
    id,
  ];
  const [rows] = await DB.execute<ResultSetHeader[]>(query, data);
  if (rows?.length > 0) return true;
  else return false;
};

export default landlordBankAccountsDB;
