import Tabla from "../elementos/tabla.js";

import { peticion } from "../../utilidades.js";

(() => {

	let
		id = document.querySelector('#id').value,
		programa = document.querySelector('#programa').value,
		renglon = document.querySelector('#renglon').value,
		tipo_reporte = document.querySelector('#tipo_reporte')?.value ?? ''
	;

	// !
	CKEDITOR.replace('cuerpo', {
		language: 'es',
		height: 150,
		toolbarGroups: [{
			"name": "basicstyles",
			"groups": ["basicstyles"]
		},
		{
			"name": "links",
			"groups": ["links"]
		},
		{
			"name": "paragraph",
			"groups": ["list", "blocks"]
		},
		{
			"name": "document",
			"groups": ["mode"]
		},
		{
			"name": "insert",
			"groups": ["insert"]
		},
		{
			"name": "styles",
			"groups": ["styles"]
		},
		{
			"name": "about",
			"groups": ["about"]
		}
	],
	removeButtons: 'Underline,Strike,Subscript,Superscript,Anchor,Styles,Specialchar,PasteFromWord'
	});

	// !
	if ($('#tablaImpresion').length) {

		new Tabla({
				tabla: $('#tablaImpresion'),
				columna: {
						peticion: {
								ruta: `${window.aplicacion.enlace}/ejecutar`,
								parametro: {
									procedimiento: 'p_traer_encabezado_impresion',
									renglon: renglon,
									tipo_reporte: tipo_reporte
								}
						}
				},
				datos: {
						peticion: {
								ruta: `${window.aplicacion.enlace}/ejecutar`,
								parametro: {
									procedimiento: 'p_traer_datos_para_impresion',
									renglon: renglon,
									tipo_renglon: 'DETALLE',
									id_documento: id
								}
						}
				},
				configuracion: {
						dom: 'T'
				}
		}).inicializar();

	}

	// !
	$(botonEnviarCorreo).click(async function (evento) {

		// +
		$(ventanaEmergenteEnviarCorreo).modal('show')

	});

	// !
	$('#ventanaEmergenteEnviarCorreo .modal-footer button:not([data-bs-dismiss="modal"])').click(function(evento) {

		// +
		$(formularioEnviarCorreo).submit()

	});

	// !
	$(formularioEnviarCorreo).on('submit', async function (evento) {

		// +
		evento.preventDefault();

		// +
		const
			request = new FormData(this),
			boton = { elemento: document.querySelector('#ventanaEmergenteEnviarCorreo .modal-footer button:not([data-bs-dismiss="modal"])') },
			ventana = {
				emergente: {
					elemento: $(ventanaEmergenteAlerta)
				}
			}
		;

		boton.elemento.disabled = true;

		request.set('cuerpo',CKEDITOR.instances.cuerpo.getData());

		request.append('tipo_correo','general')

		const correo = await canvas(document.body,{
			scale:4,
			windowHeight: 700,
			windowWidth: 992,
			onclone: function (doc) {
				$(doc).find('#botonEnviarCorreo, #botonImprimir, .modal-backdrop, .modal').hide();
			}
		});

		if(request.get('tipo_adjunto') === 'PDF')
		{
			const imgData = correo.toDataURL('image/png');
			const docDefinition = {
				pageSize: 'A4',
				pageMargins: [5, 5, 5, 5],
				content: [
				{
					image: imgData,
					fit: [580,580]
				}
				]
			};

			const pdfDoc = pdfMake.createPdf(docDefinition)

			pdfDoc.getBlob((blob) => {
				request.append('imagen',blob)

				$.ajax({
					type: 'POST',
					url: `${window.aplicacion.enlace}/correo`,
					data: request,
					headers: {
						'X-CSRF-TOKEN': $('input[name="_token"]').attr('value')
					},
					dataType: 'json',
					processData: false,
					contentType: false,
					beforeSend: function () {},
					success: function (respuesta,estado) { validacionesCorreo('success') },
					error: function (respuesta,estado) { validacionesCorreo('success') }
				});

			});

		}
		else {
			correo.toBlob((blob) => {
				request.append('imagen',blob)

				$.ajax({
					type: 'POST',
					url: `${window.aplicacion.enlace}/correo`,
					data: request,
					headers: {
						'X-CSRF-TOKEN': $('input[name="_token"]').attr('value')
					},
					dataType: 'json',
					processData: false,
					contentType: false,
					beforeSend: function () {},
					success: function (respuesta,estado) { validacionesCorreo('success') },
					error: function (respuesta,estado) { validacionesCorreo('success') }
				});

			}),'image/png','1';
		}

	});

	// !
	function validacionesCorreo(estado) {

		const
			boton = { elemento: document.querySelector('#ventanaEmergenteEnviarCorreo .modal-footer button:not([data-bs-dismiss="modal"])') },
			ventana = {
				emergente: {
					elemento: $(ventanaEmergenteAlerta)
				}
			}
		;

		if(estado === 'success')
		{

			boton.elemento.disabled = false;

			$(ventanaEmergenteEnviarCorreo).modal('hide');

			ventana.emergente.elemento.find('.modal-header')
				.removeClass('bg-danger')
				.addClass('bg-success')
			;

			ventana.emergente.elemento.find('.modal-body p').text(
				`Correo Enviado Exitosamente.`
			).removeClass('subtitle').addClass('fs-6');

			$(ventana.emergente.elemento).modal('show');

			formularioEnviarCorreo.reset();

			CKEDITOR.instances['cuerpo'].setData('');

		}
		else {

			boton.elemento.disabled = false;

			ventana.emergente.elemento.find('.modal-header')
				.removeClass('bg-success')
				.addClass('bg-danger')
			;

			ventana.emergente.elemento.find('.modal-body p').text(
				`Hubo un error al enviar el correo. Por favor, verifique sus datos e intente más tarde.`
			).removeClass('subtitle').addClass('fs-6 text-center');

			$(ventana.emergente.elemento).modal('show');

		}

	}

	// !
	async function canvas(elemento,configuracion = {}) {

		const canvas = await html2canvas(elemento,configuracion)

		canvas.style.width = '100%';
		canvas.style.marginRight = 'auto';

		return await canvas;

	}

})()
