$ = jQuery;

$( document ).ready( function() {
  var records_offset  = records_per_page = $( '.cards-container' ).data('offset');
  var records_count   = $( '.cards-container' ).data('count');
  var records_action  = $( '.cards-container' ).data('action');

  $( '.submit-service-providers' ).click( function() {
    if( $( '.sp-clicked' ).length === 0 ) {
      $( '#no-sp-error' ).show();
      return false;
    }
    else {
      var message = $(this).data('message');

      confirmModal(message, function () {
        $('#select-service-providers-form').submit();
      });
    }
  } );

  $( document ).on( 'click', '.sp-card', function() {
    if( $(this).hasClass('sp-clicked') ) {
      $(this).removeClass('sp-clicked');
      $(this).find( 'input[type=checkbox]' ).prop('checked', false);
    }
    else {
      $(this).addClass('sp-clicked');
      $(this).find( 'input[type=checkbox]' ).prop('checked', true);
    }
  } );

  $( '.show-all-sp' ).click( function() {
    $('.provider-container').show();
    $(this).parent().hide();
  } );

  $(".loadmore-records").click(function(event) {

    event.preventDefault();

    $(this).attr( 'disabled', 'disabled' );

    data = { action: records_action, offset : records_offset};

    jQuery.ajax({
        type: "POST",
        url: ajax_object.ajax_url,
        data: data,
        success: function(response) {
          obj=JSON.parse(response);
          if(obj.html != 0){
            current_count = records_offset + obj.count;
            if( records_count <= current_count ) {
              $( '.loadmore-records' ).hide();
            }
            else {
              $( '.loadmore-records' ).removeAttr( 'disabled' );
            }

            records_offset = records_offset  + records_per_page;
            $('.cards-container').append(obj.html);
          }
        }
    });
  });

  $( 'body' ).on('click', '.remove-sp', function() {

    var message = $(this).data('message');
    var user = $(this).data('user');

    var data = { action: 'remove-sp', user: user };

    confirmModal(message, function () {
      showLoader();
      $.ajax({
        url: ajax_object.ajax_url,
        method: 'post',
        data: data,
        dataType: 'json'
      }).done(function () {
        hideLoader();
        location.reload();
      }).fail(function (response) {
        let message   = response.responseJSON.data.message;
        let $errorMsg = $( '#project-error-message' );

        hideLoader();
        $errorMsg.html( message );
        $errorMsg.show();
        $('html, body').animate({ scrollTop: 0 }, 'fast');
      });
    });
  } );

  $( 'body' ).on( 'click', '.change-project-status', function() {

    var message = $(this).data('message');
    var status = $(this).data('status');
    var project = $(this).data('project');

    var data = { action: 'change-project-status', status: status, project: project };

    confirmModal(message, function () {
      $('.change-project-status').attr('disabled', 'disabled');
      showLoader();
      $.ajax({
        url: ajax_object.ajax_url,
        method: 'post',
        data: data,
        dataType: 'json'
      }).done(function () {
        hideLoader();
        location.reload();
      }).fail(function () {
        hideLoader();
        // TODO: Handle errors properly
        alert('error');
      });
    });
  } );

  $( '.show-all-records' ).click( function() {
    $(this).parent().hide();
    $(this).closest( '.records-container' ).find('.single-record').show();
  } );

  $('.invite-service-provider-to-company').submit(function(e) {
    e.preventDefault();

    var formData = new FormData(this);

    $.ajax({
      url: ajax_object.ajax_url,
      method: 'post',
      data: formData,
      dataType: 'json',
      contentType: false,
      processData: false,
      success: function(res) {
        location.reload();
      },
      error: function(err) {
        console.log(err);
      }
    })
  });

  $('body').on('click', '.answer-request', function () {
    var data    = $(this).data();
    var message = $(this).data('message');

    confirmModal(message, function () {
      $.ajax({
        url: ajax_object.ajax_url,
        method: 'POST',
        data: data,
        beforeSend: function () {
          showLoader();
        }
      }).done(function () {
        location.reload();
      }).fail(function (err) {
        // TODO: Handle error properly
        if (err.message === undefined) {
          alert('Unknown error occurred');
        } else {
          alert(err.message);
        }
      });
    });
  });

  $(document).on( 'hidden.bs.modal', 'div[id^="service-provider-"]', function() {
    $('.error').html('').hide();
    $('input[type="file"]').val('').change();
  } );

});

if ( window.history.replaceState ) {
  window.history.replaceState( null, null, window.location.href );
}

function invite_service_provider_success(wrapper_selector, modal_id) {
  return function() {
    $(wrapper_selector).find('.invite-service-provider').remove();
    $(wrapper_selector).find('.reject-status').hide();
    $(wrapper_selector).find('.invitation-sent').show();
    $(modal_id).modal('hide');
  }
}