import { useApiInterceptor } from "./useApiInterceptor";

export const usePostJob = (jobPostFormState: any) => {
  return new Promise(async (resolve, reject) => {
    try {
      const formData = new FormData();
      formData.append("title", jobPostFormState.title);
      formData.append("description", jobPostFormState.description);
      formData.append("location", jobPostFormState.location);
      formData.append(
        "companyInformation",
        jobPostFormState.company_information
      );
      formData.append(
        "responsibilitiesAndDuties",
        jobPostFormState.duties_and_responsibilities
      );
      formData.append(
        "salary",
        `${jobPostFormState.currency}${jobPostFormState.minSalary} - ${jobPostFormState.currency}${jobPostFormState.maxSalary}`
      );
      formData.append("contactInformation", jobPostFormState.contact_info);
      jobPostFormState.company_logo &&
        formData.append("companyLogo", jobPostFormState.company_logo);
      formData.append("companyBranding", jobPostFormState.company_branding);
      formData.append("benefits", jobPostFormState.benefits);
      formData.append("isDraft", jobPostFormState.isDraft);
      formData.append("openingDate", jobPostFormState.openingDate);
      formData.append("closingDate", jobPostFormState.closingDate);

      // Append employmentType as an array
      jobPostFormState.employmentTypes.forEach((type: any) => {
        formData.append("employmentType[]", type);
      });
      jobPostFormState.workMode.forEach((workMode: any) => {
        formData.append("workMode[]", workMode);
      });

      // Append skillIds as an array
      jobPostFormState.skillIds.forEach((skillId: any) => {
        formData.append("skillIds[]", skillId);
      });

      // Append skillExamIds as an array (only if present and not empty)
      if (
        jobPostFormState.skillExamIds &&
        jobPostFormState.skillExamIds.length > 0
      ) {
        jobPostFormState.skillExamIds.forEach((examId: any) => {
          formData.append("skillExamIds[]", examId);
        });
      }

      // Append qualificationIds as an array
      [jobPostFormState.qualification].forEach((qualificationId) => {
        formData.append("qualificationIds[]", qualificationId);
      });

      const response = await useApiInterceptor().post(
        `/account/job-posts`,
        formData,
        {
          headers: {
            "Content-Type": "multipart/form-data",
          },
        }
      );
      resolve({ resp: response.data, status: response.status });
    } catch (error) {
      console.error("Error fetching POST API (Job Post):", error);
      reject(error);
    }
  });
};
