Source: KL_IN_ECM.js

'use strict';

/**
 * Controller for KL_IN_ECM.
 *
 * @module controllers/KL_IN_ECM
 */

var app = require('sitegenesis_controllers/cartridge/scripts/app');
var guard = require('sitegenesis_controllers/cartridge/scripts/guard');

/* API Includes */
var PaymentMgr = require('dw/order/PaymentMgr');
var OrderMgr = require('dw/order/OrderMgr');
var Transaction = require('dw/system/Transaction');
var URLUtils = require('dw/web/URLUtils');

var libPayment = require('int_payment_core/cartridge/scripts/lib/libPayment.ds')
var parameterMap = request.httpParameterMap;
var CheckEcommercePayment = require('int_payment_controllers/cartridge/controllers/PAYMENT_ECOMMERCE').CheckEcommercePayment;
var SubmitImpl = app.getModel('Order').submit;

/**
 * Accept Ecommerce Return Url
 */

function EcommAccept() {
	var res = CheckEcommercePayment();
	if(res.EndNode == 'success') {
		Transaction.wrap(function () {
			res.Order.custom.ecommerceResponseCount = 1;
			res.Order.custom.payment_isAuthorized = true;
			res.Order.custom.payment_needCapture = true;
			res.Order.custom.payment_captureAttempts = 0;
			res.Order.custom.payment_authorizationStatus = 'AUTHORISED';
		});
		SubmitImpl(res.Order, true);
	} else if(res.EndNode == 'error' || res.EndNode == 'declined') {
		var PlaceOrderError = new dw.system.Status(dw.system.Status.ERROR, "confirm.error.declined")
	}
	Transaction.wrap(function () {
		OrderMgr.failOrder(res.Order);
	});
	app.getController('COSummary').Start({
		Order : res.Order,
		PlaceOrderError : PlaceOrderError
	});
}
/**
 * Decline Ecommerce Return Url
 */
function EcommDecline() {
	EcommCancel(true);
}
/**
 * Cancel Ecommerce Return Url
 */
function EcommCancel(showPlaceOrderError) {
	var PlaceOrderError = null;
	if(showPlaceOrderError){
		PlaceOrderError = new dw.system.Status(dw.system.Status.ERROR, "confirm.error.declined")
	}
	var res = CheckEcommercePayment();
	if(res.EndNode == 'success') {
		SubmitImpl(res.Order, true);
	} else {
		Transaction.wrap(function () {
			OrderMgr.failOrder(res.Order);
		});
		app.getController('COSummary').Start({
			Order : res.Order,
			PlaceOrderError : PlaceOrderError
		});
	}
}

/*
 * Export the publicly available controller methods
 */

/** Accept Ecommerce Return Url
 * @see module:controllers/KL_IN_ECM~EcommAccept */
exports.EcommAccept = guard.ensure(['https'], EcommAccept);
/** Decline Ecommerce Return Url
 * @see module:controllers/KL_IN_ECM~EcommDecline */
exports.EcommDecline = guard.ensure(['https'], EcommDecline);
/** Cancel Ecommerce Return Url
 * @see module:controllers/KL_IN_ECM~EcommCancel */
exports.EcommCancel = guard.ensure(['https'], EcommCancel);