HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_new/buyercall/buyercall/assets/components/forms/autopay.js
import {template, showConfirm} from '../utils';

const settings = {
	urls: {
		application: template`/api/form_leads/${'leadId'}/external_api_provider/${'providerId'}`
	}
}

export function postApplication(leadId, providerId) {
	return $.ajax({
	  method: "POST",
	  url: `/api/form_leads/${leadId}/external_api_provider/${providerId}`
	})
}

export function wireButton($container, selector, options) {
	$container.on('click', selector, function(e) {
		e.preventDefault();

		let yesCallback = function() {
			var $btn = $(this),
				$icon = $btn.find('i');
			var leadId = $btn.data('leadId');
			var providerId = $btn.attr('data-service-provider-id');
			var providerName = $btn.attr('data-service-provider-name');
			var errorPopupContainer = options.errorPopupContainer ? $(options.errorPopupContainer) : $container;

			if (leadId) {
				// checking if in progress already
				if (!$btn.data('isBusy')) $btn.data('isBusy', true);
				else return;
				$icon.removeClass('material-icons').html('').addClass('fa fa-refresh fa-spin');
				postApplication(leadId, providerId)
					.done(function(result, textStatus, jqXHR) {
						if (jqXHR.status === 200 || jqXHR.status === 201) {
							$btn.addClass(`autopay-sent ${options.willBeDisabled ? 'disabled' : ''}`);
							if (options.createErrorPopup) {
								$('#flash-messages .autopay').remove();
								createFlashMsg(errorPopupContainer, 'Application has been successfully submitted', 'success', providerName);
							}
						}
					})
					// .error(function(jqXHR, textStatus, result) {
					// 	if (options.createErrorPopup) {
					// 		try {
					// 			var xhrMessage = JSON.parse(jqXHR.responseText).message;
					// 		}
					// 		catch(error) {
					// 			xhrMessage = jqXHR.message
					// 		}

                    //         $('#flash-messages .autopay').remove();
					// 		createFlashMsg(errorPopupContainer, xhrMessage, 'danger', providerName);
					// 	}
					// })
					.always(function(result, textStatus, jqXHR) {
						// returning to previous state
						$btn.data('isBusy', false);
						$icon.removeClass('fa fa-refresh fa-spin').html('file_upload').addClass('material-icons');
						if ((jqXHR.status === 200 || jqXHR.status === 201) && options.sentBtnText) $btn.html($btn.html().replace(/Send to Autopay/, options.sentBtnText));
					});
			}
		}.bind(this);

		showConfirm({
			yesCb: yesCallback,
			title: 'CONFIRM',
			body: '<p>Are you sure you want to send this application?</p>'
		});
	})
}

function createFlashMsg($container, message, status, providerName) {
	var $flashMsgContainer = $('#flash-messages');
	var $autopayAlertContainer = $('#flash-messages .autopay.alert');
	var $providerName = providerName;

	if ($providerName.length > 0) {
	    $providerName = $providerName + ": ";
	}

	if (!$flashMsgContainer[0]) {
		$container.before('<div id="flash-messages">'+
			              '<div class="autopay alert alert-'+status+'" role="alert">'+
			                $providerName + `${message}` +
			              '</div>'+
			        '</div>');
	} else if (!$autopayAlertContainer[0]) {
		$flashMsgContainer.append('<div class="autopay alert alert-'+status+'" role="alert">'+
			                $providerName + ` ${message}` +
			              '</div>');
	} else {
		$autopayAlertContainer.html($providerName + `${message}`);
	}

	$('#flash-messages').show();
	window.setTimeout(function() { $('#flash-messages').hide('slow') }, 10000);
}