/**
 * Gères l'export et l'import des modèles de donnée de DigiRisk
 *
 * @author Evarisk <dev@evarisk.com>
 *
 * @since 6.1.5.5
 *
 * @memberof export
 */

/**
 * Initialise l'objet export dans l'objet digirisk
 * @memberof export
 * @type {Object}
 */
window.eoxiaJS.digirisk.export = {};

/**
 * La méthode init est appelé automatiquement
 *
 * @since 6.1.5.5
 *
 * @memberof export
 *
 * @return {void}
 */
window.eoxiaJS.digirisk.export.init = function() {
	window.eoxiaJS.digirisk.export.event();
};

/**
 * Initialies les évènements submit et change
 *
 * @since 6.1.5.5
 *
 * @memberof export
 *
 * @return {void}
 */
window.eoxiaJS.digirisk.export.event = function() {
	jQuery( document ).on( 'submit', '#digi-data-export #digi-export-form, #digi-data-export #digi-export-tree, #digi-data-export #digi-export-risks, #digi-data-export #digi-export-risksigns, #digi-data-export #digi-export-global', window.eoxiaJS.digirisk.export.create_export );
	jQuery( document ).on( 'change', '#digi-data-export #digi-import-form input[type="file"]', window.eoxiaJS.digirisk.export.make_import );
};

/**
 * Lances la requête XHR pour créer le fichier .zip de l'export du modèle de donnée.
 *
 * @since 6.1.5.5
 *
 * @param  {Object} event [description]
 * @return {void}
 */
window.eoxiaJS.digirisk.export.create_export = function( event ) {
	var form = jQuery( this );
	event.preventDefault();
	jQuery( this ).closest( 'form' ).ajaxSubmit( {
		'beforeSubmit': function() {
			window.eoxiaJS.loader.display( form.find( 'button' ) );
		},
		success: function( response ) {
			window.eoxiaJS.loader.remove( form.find( 'button' ) );
			window.eoxiaJS.global.downloadFile( response.data.url_to_file, response.data.filename );
		}
	} );
},

/**
 * Prépare la première requête pour importer un modèle de donnée.
 *
 * @since 6.1.5.5
 *
 * @param  {[type]} event [description]
 * @return {void}
 */
window.eoxiaJS.digirisk.export.make_import = function( event ) {
	var data = new FormData();

	event.preventDefault();

	data.append( 'file', jQuery( this )[0].files[0] );
	data.append( 'action', 'digi_import_data' );
	data.append( '_wpnonce', jQuery( this ).closest( 'form' ).find( 'input[name="_wpnonce"]' ).val() );
	data.append( 'index_element', 0 );

	window.eoxiaJS.digirisk.export.request_import( data );
},

/**
 * Lances la requête pour importer un modèle de donnée.
 * Modifie la barre de progression.
 *
 * @since 6.1.5.5
 *
 * @param  {object} data Les données pour la requête
 * @return {void}
 */
window.eoxiaJS.digirisk.export.request_import = function( data ) {
	jQuery.ajax( {
		url: ajaxurl,
		data: data,
		processData: false,
		contentType: false,
		type: 'POST',
		beforeSend: function() {
			window.eoxiaJS.loader.display(  jQuery( '#digi-import-form .button.blue' ) );
			jQuery( '.digi-import-detail' ).html( window.digi_tools_in_progress );
		},
		success: function( response ) {
			var data = new FormData();

			if ( response.success ) {
				jQuery( '#digi-import-form progress' ).attr( 'max', response.data.count_element );
				jQuery( '#digi-import-form progress' ).val( ( response.data.index_element / response.data.count_element ) * response.data.count_element );

				if ( ! response.data.end ) {
					data.append( 'action', 'digi_import_data' );
					data.append( '_wpnonce', jQuery( '#digi-import-form' ).find( 'input[name="_wpnonce"]' ).val() );
					data.append( 'path_to_json', response.data.path_to_json );
					data.append( 'index_element', response.data.index_element );
					jQuery( '.digi-import-detail' ).html( window.digi_tools_in_progress );
					window.eoxiaJS.digirisk.export.request_import( data );
				} else {
					jQuery( '.digi-import-detail' ).html( window.digi_tools_done );
					if ( jQuery( '#toplevel_page_digi-setup a' ).attr( 'href' ) ) {
						jQuery( '#toplevel_page_digi-setup a' ).attr( 'href', jQuery( '#toplevel_page_digi-setup a' ).attr( 'href' ).replace( 'digi-setup', 'digirisk' ) );
					}

					jQuery( '#digi-import-form progress' ).attr( 'max', 100 );
					jQuery( '#digi-import-form progress' ).val( 100 );

					window.eoxiaJS.loader.remove(  jQuery( '#digi-import-form .button.blue' ) );
				}
			} else {
				alert( 'Problème lors de l\'importation du modèle' );
			}
		}
	} );
};
