$(document).ready(function () {
// Detect pagination click
$('#pagination').on('click', 'a', function (e) {
e.preventDefault();
if ($(this).attr('href').trim() === '#') {
return;
}
const pageno = $(this).attr('data-ci-pagination-page');
loadPagination(pageno, $('.search-block').serialize());
});
// Prevent submit form by press the enter button
$(window).keydown(function (event) {
if (event.keyCode == 13) {
loadPagination(0);
event.preventDefault();
return false;
}
});
// Load Page
loadPagination(0);
function loadPagination(pagno, filters = null) {
$.ajax({
url: '/credit_cards/loadRecord',
type: 'get',
dataType: 'json',
async: false,
data: {
'rowno': pagno,
'filters': filters
},
success: function (response) {
$('#pagination').html(response.pagination);
createTable(response.result);
},
complete: function () { }
});
}
function createTable(result) {
$('#credit-card-list tbody').empty();
result.forEach(function (value, index) {
let benefits = '';
let benefit_list = '';
value.benefits.forEach(function(value, index, array) {
benefits += value.benefit;
benefit_list += JSON.stringify(value);
if (index !== array.length - 1) {
benefits += '
';
benefit_list += '
';
}
})
let tr =
`
| ${index + 1} |
${value.bank_name} |
${value.card_name} |
|
${value.credit_card_id} |
${benefits}
|
${value.bank_id} |
${benefit_list} |
`;
$('#credit-card-list tbody').append(tr);
})
}
// Add benefit
$('#btn-add-benefit').on('click', function () {
const val = $('#benefit').val().trim();
if (val !== '') {
$('#benefit-list ul').append(
`
${val}
`
);
$('#benefit').val('');
}
})
// Detect on click the update button
$(document).on('click', '.btn-update', function (e) {
const $row = $(this).closest("tr"); // Finds the closest row
const $tds = $row.find("td"); // Finds all children elements
removeHiddenField();
$('.btn-cancel').addClass('hidden');
$('.btn-update').removeClass('hidden');
$('#btn-add').addClass('hidden');
$('#btn-update').removeClass('hidden');
$(this).siblings('.btn-cancel').removeClass('hidden');
$(this).addClass('hidden');
$('[name="bank_name"]').val($tds[1].innerText);
$('[name="bank_name"]').prop('disabled', true);
$('[name="card_name"]').val($tds[2].innerText);
$('[name="credit_card_id"]').val($tds[4].innerText);
$('#benefit-list ul').empty();
$('input[name="expired_date[]"]').remove();
$tds[7].innerHTML.split(' ').forEach(function(val) {
if (val.trim() !== '') {
val = JSON.parse(val);
$('#benefit-list ul').append(
`
${val.benefit}
`
);
// add expired date array
$('').attr({
type: 'hidden',
name: 'expired_date[]',
value: val.expired_date
}).appendTo('#credit-card-form');
}
})
$('').attr({
type: 'hidden',
name: 'old_bank_name',
value: $tds[1].innerText
}).appendTo('#credit-card-form')
$('').attr({
type: 'hidden',
name: 'old_card_name',
value: $tds[2].innerText
}).appendTo('#credit-card-form')
$('#credit-card-form').attr('action', origin + "/credit_cards/update/");
});
// Detect on click the cancel button
$(document).on('click', '.btn-cancel', function (e) {
$(this).siblings('.btn-update').removeClass('hidden');
$(this).addClass('hidden');
$('#btn-add').removeClass('hidden');
$('#btn-update').addClass('hidden');
$('#bank-name').val('');
$('#bank-name').prop('disabled', false);
$('#card-type').val('');
$('#credit-card-id').val('');
$('#benefit-list ul').empty();
removeHiddenField();
$('#credit-card-form').attr('action', origin + "/credit_cards/create");
});
// Detect on click the delete button
$(document).on('click', '.btn-delete', function (e) {
if (!confirm('Are you sure want to delete?')) {
return;
}
const $row = $(this).closest("tr"); // Finds the closest row |
const $tds = $row.find("td"); // Finds all children | elements
$('[name="credit_card_id"]').val($tds[4].innerText);
$('').attr({
type: 'hidden',
name: 'bank_id',
value: $tds[6].innerText
}).appendTo('#credit-card-form');
$('#credit-card-form')
.attr('action', origin + "/credit_cards/destroy/")
.submit();
});
// Detect on click the add button on form
$('#btn-add').click(function (e) {
e.preventDefault();
var form = $('#credit-card-form');
$('input[name="benefits[]"]').remove();
$('.list-group li').each((idx, val) => {
$('').attr({
type: 'hidden',
name: 'benefits[]',
value: val.children[0].innerText
}).appendTo(form);
});
var disabled = form.find(':input:disabled').removeAttr('disabled');
var data = form.serialize();
disabled.attr('disabled','disabled');
$.ajax({
url: '/credit_cards/create',
type: 'POST',
data: data,
})
.done(function( res ) {
if ( res.type && res.type == 'errors' ) {
alert( 'Create Credit Card Benefits Failed\n' + $("").html(res.message).text() );
return;
}
// update item
var page = $('#pagination');
var page = page.length > 0 ? page.find('ul>li.active a').text() : 0;
loadPagination(page, $('.search-block').serialize());
var target = $(document).find('tr.card-'+res.credit_card_id);
target.find('.btn-update').trigger('click');
alert( 'Create Credit Card Benefits Successful' );
})
.fail(function( jqXHR, textStatus, errorThrown ) {
console.log( errorThrown );
})
.always(function() {
lockUpdate = false;
});
});
// Detect on click the update button on form
$('#btn-update').click(function () {
var form = $('#credit-card-form');
$('input[name="benefits[]"]').remove();
$('.list-group li').each((idx, val) => {
$('').attr({
type: 'hidden',
name: 'benefits[]',
value: val.children[0].innerText
}).appendTo(form);
});
var disabled = form.find(':input:disabled').removeAttr('disabled');
var data = form.serialize();
disabled.attr('disabled','disabled');
$.ajax({
url: '/credit_cards/update',
type: 'POST',
data: data,
})
.done(function( res ) {
if ( res.type && res.type == 'errors' ) {
alert( 'Update Credit Card Benefits Failed\n' + $("").html(res.message).text() );
return;
}
// update item
var page = $('#pagination');
var page = page.length > 0 ? page.find('ul>li.active a').text() : 0;
loadPagination(page, $('.search-block').serialize());
var target = $(document).find('tr.card-'+res.credit_card_id);
target.find('.btn-update').trigger('click');
alert( 'Update Credit Card Benefits Successful' );
})
.fail(function( jqXHR, textStatus, errorThrown ) {
console.log( errorThrown );
})
.always(function() {
lockUpdate = false;
});
});
// remove benefit from list
$(document).on('click', '.btn-delete-benefit', function (e) {
$(this).closest("li").remove();
});
// button search for filter
$('.btn-search').on('click', function() {
loadPagination(0, $('.search-block').serialize());
})
// show benefit list modal
$(document).on('click', '.btn-show-benefits', function() {
const $row = $(this).closest("tr"); // Finds the closest row |
const $tds = $row.find("td"); // Finds all children elements
$('#message-benefits').html('');
$("#benefit-list-modal").modal();
let benefit_list = $('#benefit-list-modal #benefit-list tbody');
benefit_list.empty();
$('#cell-actived').removeAttr('id');
$tds[7].setAttribute('id', 'cell-actived');
$tds[7].innerHTML.split(' ').forEach(function (value, index) {
if (value.trim() !== '') {
value = JSON.parse(value);
let tr =
` |
|
|
|
|
`;
benefit_list.append(tr);
}
})
})
$(document).on('click', '#btn-save', function() {
if ($('#benefit-list-modal #benefit-list tbody').children().length > 0) {
const benefit_id = $('input[name="benefit_id_modal[]"]').map(function(){
return this.value;
}).get();
const benefit = $('input[name="benefit_modal[]"]').map(function(){
return this.value;
}).get();
const expired_date = $('input[name="expired_date_modal[]"]').map(function(){
return this.value;
}).get();
let new_val = '';
benefit_id.forEach((value, index, array) => {
new_val += JSON.stringify({
'id': value,
'benefit': benefit[index],
'expired_date': expired_date[index]
})
if (index !== array.length - 1) {
new_val += '
';
}
})
$.ajax({
url: '/credit_card_benefits/update',
type: 'post',
dataType: 'json',
data: {
benefit_id,
benefit,
expired_date
},
success: function (response) {
if (response.code === '200') {
$('#cell-actived').html(new_val);
$('.btn-cancel').click();
}
$('#message-benefits').html(response.message);
},
});
}
})
$('body').on("focus", '.expired_date', function() {
window.addDatePicker(this);
})
function removeHiddenField() {
$('[name="old_bank_name"]').remove();
$('[name="old_card_name"]').remove();
$('[name="expired_date[]"]').remove();
}
});