import { DialogItemAchat } from "../achat-vente/dialog-item-achat.js";
import { Misc } from "../misc.js";
import { RdDUtility } from "../rdd-utility.js";
import { RdDBaseActor } from "./base-actor.js";

export class RdDCommerce extends RdDBaseActor {

  static get defaultIcon() {
    return "systems/foundryvtt-reve-de-dragon/icons/services/commerce.webp";
  }

  canReceive(item) {
    return item.isInventaire('all');
  }

  getQuantiteDisponible(item) {
    return (this.system.illimite || item?.isService()) ? undefined : item.getQuantite();
  }

  verifierFortune(cout) {
    return this.system.illimite || super.verifierFortune(cout);
  }

  async depenserSols(cout) {
    if (this.system.illimite) {
      return
    }
    await super.depenserSols(cout)
  }

  async decrementerQuantiteItem(itemId, quantite) {
    if (this.system.illimite) {
      return;
    }
    await super.decrementerQuantiteItem(itemId, quantite, { supprimerSiZero: false });
  }

  calculerPrix(item) {
    const pourcentage = this.system.pourcentage ?? 100;
    return Misc.keepDecimals(Math.ceil(item.system.cout * pourcentage) / 100, 2);
  }
  async vente(item) {
    const acheteur = RdDUtility.getSelectedActor();
    if (!acheteur) {
      ui.notifications.warn(`Pas d'acheteur sélectionné`);
      return;
    }
    const disponible = this.getQuantiteDisponible(item)
    if (disponible == 0) {
      ui.notifications.warn(`${this.getAlias()} n'a plus de ${item.name} en vente`);
      return;
    }

    await DialogItemAchat.onAcheter({
      item,
      vendeur: this,
      acheteur,
      quantiteIllimite: disponible == undefined,
      nbLots: disponible ?? 1,
      tailleLot: 1,
      prixLot: item.calculerPrixCommercant()
    });
  }
  
}