<script src="/admin/app-assets/js/core/libraries/jquery.min.js"></script>
<script src="/admin/app-assets/vendors/js/forms/select/select2.full.min.js"></script>
<script src="/admin/app-assets/js/scripts/forms/select/form-select2.js"></script>
<script>
  $(document).ready(function () {
    function handlePermissions(form) {
      const formData = {
        permissions: [],
      };

      // Gather permissions and selected conditions
      $('input[name^="permissions"]:checked').each(function () {
        const permission = $(this).val();
        const selectedConditions = {};

        $(`input[name^="conditions[${permission}]"]:checked`).each(function () {
          const conditionType = $(this)
            .attr("name")
            .split("[")[2]
            .split("]")[0]; // extract condition type
          const conditionValue = $(this).val();

          if (!selectedConditions[conditionType]) {
            selectedConditions[conditionType] = [];
          }
          selectedConditions[conditionType].push(conditionValue);
        });

        formData.permissions.push({
          permission: permission,
          selectedConditions: selectedConditions,
        });
      });

      console.log(formData, "formData");

      // Validate names before proceeding
      const nameAr = String($('input[name="name[ar]"]').val());
      const nameEn = String($('input[name="name[en]"]').val());

      if (!nameAr.trim().length || !nameEn.trim().length) {
        form.removeClass("was-validated");
      } else {
        form.addClass("was-validated");
      }

      return nameAr.trim().length && nameEn.trim().length ? formData : null;
    }

    $(document).on("submit", "#createRole", function (e) {
      e.preventDefault();
      const confirm = "<%= i18n.__('common.add') %>";
      const formData = handlePermissions($(this));
      if (formData) {
        ajaxUpload($(this), formData, "uploadWithOutImage", confirm);
      }
    });

    $(document).on("submit", "#editRole", function (e) {
      e.preventDefault();
      const confirm = "<%= i18n.__('common.edit') %>";
      const formData = handlePermissions($(this));
      if (formData) {
        ajaxUpload($(this), formData, "uploadWithOutImage", confirm);
      }
    });
  });
</script>
