import moment from "moment";
import log from "../config/log";
import ledgerDB from "../models/ledger.model";

const generateLedgerReferenceId = async ({ clientId }: any) => {
  try {
    const start = moment().format("YYYYMMDDHHmmss");
    let id: string =
      start + clientId.toString() + (Math.floor(Math.random() * 9998) + 987542).toString();
    let isExists = await ledgerDB.getByLedgerReferenceId({
      referenceId: id,
    });
    while (isExists) {
      id =
        start +
        clientId.toString() +
        (Math.floor(Math.random() * 9998) + 987542).toString();
      isExists = await ledgerDB.getByLedgerReferenceId({ referenceId: id });
    }

    return id;
  } catch (error: any) {
    log.info(
      `[Utils], [generateLedgerReferenceId], Error: ${
        error?.message || error
      }`
    );
    return "";
  }
};

export default generateLedgerReferenceId;
