import { GeneralObject, RESPONSE_TYPE } from "../types/index";
import { SkillCategories } from "./db";

  // Function to retrieve all skill categories
 export const getAllSkillCategories = (): Promise<RESPONSE_TYPE> => {
    return new Promise((resolve, reject) => {
      const categories = Object.keys(SkillCategories);
      if (categories.length > 0) {
        let res: RESPONSE_TYPE = {
            data: categories,
            message: 'Skill categories retrieved successfully.',
            status: 200,
            statusCode: 'SKILL_CATEGORIES_RETRIEVED'
        
        }
        resolve(res);
      } else {
        let notfound: RESPONSE_TYPE = {
            data: categories,
            message: 'Skill categories does not exist.',   
            status: 404,
            statusCode: 'RESOURCE_NOT_FOUND'
        
        }
      }
    });
  };
  
  // Function to check if a category is valid
 export const isValidCategory = (category: string): Promise<boolean> => {
    return new Promise((resolve, reject) => {
      if (SkillCategories.hasOwnProperty(category)) {
        resolve(true);
      } else {
        reject(`Invalid category: ${category}`);
      }
    });
  };
  
  // Function to check if a skill is in a given category
  export const isSkillInCategory = (skill :string[], category :any) : Promise<boolean | string> => {
    return new Promise((resolve, reject) => {
      if (SkillCategories.hasOwnProperty(category)) {

        const skills = SkillCategories[category];
let skillLen = skill.length;
for(let i = 0; i < skillLen; i++){

    if (skills.includes(skill[i] )) {
        
      } else {
        reject(`${skill[i]} is not a valid skill for ${category} `);
        return;
      }

      if(i==skillLen-1){
        resolve(true)
        return;
      }


    }   
       



      } else {
        reject(`Invalid category: ${category}`);
        return;
      }
    });
  };