import { RFRPUtility } from "../../rfrp-utility.js";

export default class RMSSToolsSCImporter extends FormApplication {

  constructor(selectOptions, character) {
    super();
    this.selectOptions = selectOptions;
    this.character = character;
  }

  static get defaultOptions() {
    return foundry.utils.mergeObject(super.defaultOptions, {
      classes: ["form"],
      width: 520,
      popOut: true,
      title: "Import Skill Categories",
      template: "systems/fvtt-rolemaster-frp/templates/sheets/apps/app_skill_category_importer.html"
    });
  }

  getData() {
    // Send data to the template
    return {
      selectOptions: this.selectOptions
    };
  }

  activateListeners(html) {
    super.activateListeners(html);
  }

  async _updateObject(event, formData) {
    await this.character.setFlag("world", "importing", true); 

    let itemType = event.submitter.value;
    let toDelete = [];
    for (const item of this.character.items) {
      if (item.type === itemType) {
        toDelete.push(item.id);
      }
      if (itemType == "skill_category" && item.type === "skill") {
        toDelete.push(item.id); // Delete also skill when re-importing skill categories.
      }
    }
    await this.character.deleteEmbeddedDocuments("Item", toDelete);

    let comp = (itemType == "skill") ? formData.selectOptionsSkills : formData.selectOptionsCategories;
    const pack = game.packs.get(comp);
    const skillCategoryData = await pack.getIndex();

    console.log("Importing New Skills/Skill Categories.");
    let newDocuments = [];
    let gameSystem = RFRPUtility.getGameSystem();
    for (const sc of skillCategoryData) {
      const newitem = await pack.getDocument(sc._id);      
      if (newitem.type === itemType && (newitem.system.game_system === "common" || newitem.system.game_system === gameSystem)) {
        newDocuments.push(newitem);
      }
    }
    if (newDocuments.length > 0) {
      await Item.createDocuments(newDocuments, {parent: this.character});
    }

    await this.character.setFlag("world", "importing", false); 
  }
}

