import { Injectable } from "@nestjs/common";
import { CreateBankListDto } from "./dto/create-bank-list.dto";
import { UpdateBankListDto } from "./dto/update-bank-list.dto";
import { DataSource } from "typeorm";

@Injectable()
export class BankListService {
  constructor(private readonly connection: DataSource) { }

  create(createBankListDto: CreateBankListDto) {
    return "This action adds a new bankList";
  }

  async findAll() {
    try {
      await this.connection.query(`
  CREATE TABLE \`bank_list\` (
    \`id\` INT NOT NULL AUTO_INCREMENT,
    \`bank_name\` TEXT,
    \`short_code\` VARCHAR(45) DEFAULT NULL,
    \`created_at\` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (\`id\`)
  )
`);
      let a = [
        { bank_name: "State Bank of India", short_code: "SBI" },
        { bank_name: "Punjab National Bank", short_code: "PNB" },
        { bank_name: "Canara Bank", short_code: "CNRB" },
        { bank_name: "Bank of Baroda", short_code: "BOB" },
        { bank_name: "Bank of India", short_code: "BOI" },
        { bank_name: "Union Bank of India", short_code: "UBIN" },
        { bank_name: "Indian Bank", short_code: "INDB" },
        { bank_name: "Indian Overseas Bank", short_code: "IOBA" },
        { bank_name: "Central Bank of India", short_code: "CBIN" },
        { bank_name: "UCO Bank", short_code: "UCOB" },
        { bank_name: "Bank of Maharashtra", short_code: "MAHB" },
        { bank_name: "Punjab & Sind Bank", short_code: "PSIB" },
        { bank_name: "HDFC Bank", short_code: "HDFC" },
        { bank_name: "ICICI Bank", short_code: "ICIC" },
        { bank_name: "Axis Bank", short_code: "UTIB" },
        { bank_name: "Kotak Mahindra Bank", short_code: "KKBK" },
        { bank_name: "IDFC First Bank", short_code: "IDFB" },
        { bank_name: "IndusInd Bank", short_code: "INDB" },
        { bank_name: "RBL Bank", short_code: "RATN" },
        { bank_name: "Federal Bank", short_code: "FDRL" },
        { bank_name: "South Indian Bank", short_code: "SIBL" },
        { bank_name: "City Union Bank", short_code: "CIUB" },
        { bank_name: "Tamilnad Mercantile Bank", short_code: "TMBL" },
        { bank_name: "Bandhan Bank", short_code: "BDBL" },
        { bank_name: "Jammu & Kashmir Bank", short_code: "JAKA" },
        { bank_name: "DCB Bank", short_code: "DCBL" },
        { bank_name: "Karur Vysya Bank", short_code: "KVBL" },
        { bank_name: "Yes Bank", short_code: "YESB" },
        { bank_name: "Standard Chartered", short_code: "SCBL" },
        { bank_name: "HSBC Bank", short_code: "HSBC" },
        { bank_name: "Citibank", short_code: "CITI" },
        { bank_name: "Deutsche Bank", short_code: "DEUT" },
        { bank_name: "Ujjivan Small Finance Bank", short_code: "UJSB" },
        { bank_name: "Jana Small Finance Bank", short_code: "JNSB" },
        { bank_name: "Equitas Small Finance Bank", short_code: "EQSB" },
        { bank_name: "AU Small Finance Bank", short_code: "AUSB" },
        { bank_name: "Capital Small Finance Bank", short_code: "CPSB" },
        { bank_name: "ESAF Small Finance Bank", short_code: "ESAF" },
        { bank_name: "North East Small Finance Bank", short_code: "NESB" },
        { bank_name: "Suryoday Small Finance Bank", short_code: "SURB" },
        { bank_name: "Utkarsh Small Finance Bank", short_code: "UTSB" },
        { bank_name: "Shivalik Small Finance Bank", short_code: "SHVB" },
        { bank_name: "Unity Small Finance Bank", short_code: "UNSB" },
        { bank_name: "Paytm Payments Bank", short_code: "PPBL" },
        { bank_name: "Airtel Payments Bank", short_code: "ABBL" },
        { bank_name: "India Post Payments Bank", short_code: "IPPB" },
        { bank_name: "Prathama Gramin Bank", short_code: "PRGB" },
        { bank_name: "Telangana Grameena Bank", short_code: "TGBK" },
        { bank_name: "Abhyudaya Co-op Bank", short_code: "ABHY" },
        { bank_name: "Saraswat Co-op Bank", short_code: "SARS" },
        { bank_name: "Shamrao Vithal Co-op Bank", short_code: "SVBK" },
      ];

      for (const bank of a) {
        await this.connection.query(
          `INSERT INTO bank_list (bank_name, short_code) VALUES (?, ?)`,
          [bank.bank_name, bank.short_code]
        );
      }
    } catch (error) {
      console.log("Table already exists");
    }
    const bankList = await this.connection.query(`
      SELECT bank_name FROM bank_list order by bank_name asc
    `);

    return bankList;
  }

  findOne(id: number) {
    return `This action returns a #${id} bankList`;
  }

  update(id: number, updateBankListDto: UpdateBankListDto) {
    return `This action updates a #${id} bankList`;
  }

  remove(id: number) {
    return `This action removes a #${id} bankList`;
  }
}
