$(document).ready(function () {
  var isSubmitting = false; // Flag để ngăn chặn gửi trùng lặp

  $(".btnApply").on("click", function () {
    $("#mdlApply").modal("show");
  });
  $(".btnCancelApply").on("click", function () {
    $("#frmApply").trigger("reset");
    $("#frmApply")[0].reset();
    $("#frmApply").removeClass("was-validated");
    $("#mdlApply").modal("hide");
    isSubmitting = false; // Reset flag khi cancel
  });

  // Validation cho file upload
  $("#ctrlCvFile").on("change", function () {
    var file = this.files[0];
    var fileInput = $(this);
    var maxSize = 5 * 1024 * 1024; // 5MB
    var allowedTypes = [
      "application/pdf",
      "application/msword",
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
      "image/jpeg",
      "image/jpg",
      "image/png",
    ];

    if (file) {
      // Kiểm tra kích thước file
      if (file.size > maxSize) {
        alert("File CV không được vượt quá 5MB. Vui lòng chọn file khác.");
        fileInput.val("");
        return;
      }

      // Kiểm tra định dạng file
      if (!allowedTypes.includes(file.type)) {
        alert(
          "Chỉ hỗ trợ các định dạng: PDF, DOC, DOCX, JPG, PNG. Vui lòng chọn file khác."
        );
        fileInput.val("");
        return;
      }

      console.log(
        "File CV hợp lệ:",
        file.name,
        "Size:",
        (file.size / 1024 / 1024).toFixed(2) + "MB"
      );
    }
  });

  // Xử lý sự kiện submit form
  $("#frmApply").on("submit", function (event) {
    event.preventDefault();
    event.stopPropagation();

    var isValid = frmValidate(this);
    this.classList.add("was-validated");
    if (isValid) {
      console.log("da vao apply");

      // Kiểm tra xem có đang gửi không
      if (isSubmitting) {
        console.log("Đang gửi, bỏ qua request");
        return false;
      }

      // Đánh dấu đang gửi và disable nút submit
      isSubmitting = true;
      var $submitBtn = $('button[type="submit"]');
      var originalText = $submitBtn.html();
      $submitBtn.prop("disabled", true);
      $submitBtn.html(
        '<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span>Đang gửi...'
      );

      // Validate file size if CV file is selected
      var cvFile = $("#ctrlCvFile")[0].files[0];
      if (cvFile && cvFile.size > 5 * 1024 * 1024) {
        // 5MB
        alert("File CV không được vượt quá 5MB. Vui lòng chọn file khác.");
        // Reset flag và re-enable button
        isSubmitting = false;
        $submitBtn.prop("disabled", false);
        $submitBtn.html(originalText);
        return false;
      }

      // Tạo FormData thay vì JSON object
      var formData = new FormData();
      formData.append("JobPostId", $("#ctrlJobpostId").val());
      formData.append("FullName", $("#ctrlFullName").val());
      formData.append("PhoneNumber", $("#ctrlPhone").val());
      formData.append("YearOfBirth", $("#ctrlYearOfBirth").val());
      formData.append("Address", $("#ctrlAddress").val());
      formData.append("Introduction", $("#ctrlIntro").val());

      // Thêm file CV nếu có
      if (cvFile) {
        formData.append("CvFile", cvFile);
      }

      //Gửi yêu cầu POST đến API với FormData
      $.ajax({
        url: "/api/Candidate/Apply",
        method: "POST",
        data: formData,
        processData: false, // Không xử lý data
        contentType: false, // Không set content-type (để browser tự set với boundary)
        success: function (data) {
          console.log(data);
          // Reset flag và re-enable button
          isSubmitting = false;
          $submitBtn.prop("disabled", false);
          $submitBtn.html(originalText);

          if (data.result === 1) {
            alert("Thông tin đã được gửi thành công!");
            $("#frmApply").trigger("reset");
            $("#frmApply")[0].reset();
            $("#frmApply").removeClass("was-validated");
              $("#mdlApply").modal("hide");

              // === THÊM DÒNG NÀY ===
              window.dataLayer = window.dataLayer || [];
              window.dataLayer.push({
                  'event': 'ung_tuyen_thanh_cong' // Ứng tuyển thành công
              });
              // ====================

          } else {
            console.error("Có lỗi xảy ra khi gửi thông tin:", data.message);
            alert(
              "Ứng tuyển thất bại: " + (data.message || "Vui lòng thử lại sau!")
              );
              // === THÊM DÒNG NÀY ===
              window.dataLayer = window.dataLayer || [];
              window.dataLayer.push({
                  'event': 'ung_tuyen_that_bai' // Ứng tuyển thất bại
              });
              // ====================

          }

          //$('#contactModal').modal('hide');
        },
        error: function (xhr, status, error) {
          console.error("Có lỗi xảy ra khi gửi thông tin:", error);
          // Reset flag và re-enable button
          isSubmitting = false;
          $submitBtn.prop("disabled", false);
          $submitBtn.html(originalText);

          var errorMessage =
            "Có lỗi xảy ra khi gửi thông tin. Vui lòng thử lại sau.";
          if (xhr.responseJSON && xhr.responseJSON.message) {
            errorMessage = xhr.responseJSON.message;
          }
          alert(errorMessage);
        },
      });
    } else {
      console.log("Cần điền đủ thông tin");
      isSubmitting = false; // Reset flag khi validation thất bại
      return false;
    }
  });
});

function frmValidate(form) {
  var isValid = form.checkValidity();
  if (isValid) {
    return true;
  } else {
    return false;
  }
}
