<script src="{{ url('https://cdn.jsdelivr.net/npm/[email protected]/moment.min.js') }}"></script>
<script>
// Create an instance of Notyf
var notyf = new Notyf();
// REFRESH FORM -Start-
function refreshForm() {
$('#addForm #email').val('');
$('#addForm #paket_id').val('');
}
// REFRESH FORM -End-
function status_domain_label(status) {
if (status === 'not_found') {
return '<span class="badge bg-light-danger">Not Found</span>';
} else if (status === 'pending') {
return `<span class="badge bg-light-warning">Pending</span>`;
} else if(status === "success") {
return `<span class="badge bg-light-success">Success</span>`;
} else {
return `<span class="badge bg-light-default">${status}</span>`;
}
}
function render_row(langganan) {
var row = `
<tr id="langganan-${langganan.id}">
<td>${langganan.no_langganan}</td>
<td>${langganan.user.email}</td>
<td>${langganan.user.profile.no_telp}</td>
<td>${langganan.paket.nama_paket}</td>
<td>${langganan.tgl_mulai}</td>
<td>${langganan.tgl_selesai}<br>
${langganan.kadaluwarsa == true ? '<span class="badge bg-light-warning">Kadaluwarsa</span>' : ''}
</td>
<td>
${langganan.status === 'paket aktif'
? '<span class="badge bg-light-success">paket aktif</span>'
: `<span class="badge bg-light-secondary">${langganan.status}</span>`}
</td>
<td>${langganan.status_domain == "success"?`<a href="${langganan.link}" target="_blank">${langganan.domain}</a>`:langganan.domain}<br>${status_domain_label(langganan.status_domain)}</td>
<td>
<div>
<div class="btn-group mb-1">
<span class="loading" style="display:none;">Loading...</span>
<div class="dropdown">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="dropdownMenuButton7"
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton7">
<li>
<button class="dropdown-item" onclick="checkCreatedDomain('${langganan.log_file}','${langganan.domain}',${langganan.id})" >Cek Domain</button>
</li>
<li>
<button class="dropdown-item aktivasi-btn" data-id="${langganan.id}" >${langganan.status === 'paket aktif' ? 'Nonaktifkan Paket' : 'Aktifkan Paket'}</button>
</li>
</ul>
</div>
</div>
<button class="btn btn-info text-white edit-btn btn-sm" data-bs-toggle="modal"
data-bs-target="#modalEdit" data-id="${langganan.id}" data-email="${langganan.user.email}" data-paket_id="${langganan.paket.id}"
data-bs-target="#modalEdit" data-id="${langganan.id}" data-email="${langganan.user.email}" data-paket_id="${langganan.paket.id}"
data-link="${langganan.link}"
data-domain="${langganan.domain}"
data-username="${langganan.username}"
data-password="${langganan.password}"
>
<i class="bi bi-pencil-square"></i>
</button>
<button class="btn btn-danger btn-sm delete-btn" data-id="${langganan.id}">
<i class="bi bi-trash-fill"></i>
</button>
<a href="https://wa.me/${langganan.user.profile.no_telp != undefined ? langganan.user.profile.no_telp.replace(/^0/, '+62') : "-"}"
target="blank_" class="btn btn-success btn-sm"
> <i class="bi bi-whatsapp"></i></a>
</div>
</td>
</tr>`;
return row;
}
// REFRESH TABLE -Start-
function refreshTable(searchQuery) {
var TableBody = $('#mainTable tbody');
var currentPageUrl = '/getLangganan?page=1';
TableBody.html('<tr><td colspan="6" class="text-center">Memuat data...</td></tr>');
$.ajax({
url: currentPageUrl,
type: 'GET',
data: {
search: searchQuery
},
cache: false,
success: function (response) {
if (response.status === 'success') {
TableBody.empty();
nextPageUrl = response.next_page_url || null;
$.each(response.data, function (index, langganan) {
// var kadaluwarsa = false;
// if (moment(langganan.tgl_selesai).isBefore(moment(), 'day')) {
// kadaluwarsa = true;
// } else {
// kadaluwarsa = false;
// }
// langganan.kadaluwarsa = kadaluwarsa;
var row = render_row(langganan);
TableBody.append(row);
});
} else {
TableBody.html(
'<tr><td colspan="6" class="text-center">Data Tidak Ditemukan!</td></tr>');
}
},
error: function (xhr) {
TableBody.html('<tr><td colspan="6" class="text-center">Data Tidak Ditemukan!</td></tr>');
},
complete: function () {
isLoading = false;
}
});
}
// REFRESH TABLE -End-
// LOAD DATA -Start-
let nextPageUrl = '/getLangganan?page=2'
var isLoading = false;
function loadData(searchQuery = '') {
var TableBody = $('#mainTable tbody');
if (!nextPageUrl || isLoading) return;
isLoading = true;
$.ajax({
url: nextPageUrl,
type: 'GET',
data: {
search: searchQuery
},
success: function (response) {
if (response.status === 'success') {
nextPageUrl = response.next_page_url || null;
$.each(response.data, function (index, langganan) {
// var kadaluwarsa = false;
// if (moment(langganan.tgl_selesai).isBefore(moment(), 'day')) {
// kadaluwarsa = true;
// } else {
// kadaluwarsa = false;
// }
// langganan.kadaluwarsa = kadaluwarsa;
var row = render_row(langganan);
TableBody.append(row);
});
} else {
TableBody.html(
'<tr><td colspan="6" class="text-center">Gagal Memuat Data!</td></tr>');
}
},
error: function (xhr) {
TableBody.html('<tr><td colspan="6" class="text-center">Data Tidak Ditemukan!</td></tr>');
},
complete: function () {
isLoading = false; // Selesai memuat data
}
});
}
// LOAD DATA -End-
// LOAD DATA WHEN SCROLL -Start-
$(window).on('scroll', function () {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 50) {
loadData();
}
});
// LOAD DATA WHEN SCROLL -End-
// FILL EDIT MODAL -Start-
$(document).on('click', '.edit-btn', function (e) {
var id = $(this).data('id');
var email = $(this).data('email');
var paket_id = $(this).data('paket_id');
var link = $(this).data('link');
var domain = $(this).data('domain');
var username = $(this).data('username');
var password = $(this).data('password');
$('#editForm #edit_id').val(id);
$('#editForm #edit_email').val(email);
$('#editForm #edit_paket_id').val(paket_id);
$('#editForm #link').val(link);
$('#editForm #domain').val(domain);
$('#editForm #username').val(username);
$('#editForm #password').val(password);
});
// FILL EDIT MODAL -End-
// ADD DATA WHEN SUBMIT BUTTON GET CLICK -Start-
$('#submit-btn').click(function (e) {
e.preventDefault();
var formData = new FormData();
formData.append('_method', 'POST');
formData.append('email', $('#email').val());
formData.append('paket_id', $('#paket_id').val());
$.ajax({
url: '{{ route('langganan.store') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status == 'success') {
showAlert(
'Data Berhasil Di Tambahkan!',
response.message,
response.status,
function () { }
);
refreshTable();
refreshForm();
} else {
showAlert(
'Data Gagal Di Tambahkan!',
response.message,
response.status,
function () { }
);
}
},
error: function (xhr) {
if (xhr.status === 422) {
var errors = xhr.responseJSON.errors;
console.log(errors);
var errorMessage = '';
if (typeof errors === "object" && errors !== null) {
$.each(errors, function (key, value) {
errorMessage += value + '\n';
});
} else {
errorMessage = errors;
}
showAlert(
'Gagal Ditambahkan!',
errorMessage,
'error',
function () { }
);
} else {
alert('Terjadi kesalahan server.');
}
}
});
});
// ADD DATA WHEN SUBMIT BUTTON GET CLICK -End-
// UPDATE WHEN UPDATE BUTTON GET CLICK -Start-
$(document).on('click', '#update-btn', function (e) {
e.preventDefault();
var id = $('#edit_id').val();
var formData = new FormData();
formData.append('_method', 'PUT');
formData.append('email', $('#edit_email').val());
formData.append('paket_id', $('#edit_paket_id').val());
formData.append('link', $('#link').val());
formData.append('domain', $('#domain').val());
formData.append('username', $('#username').val());
formData.append('password', $('#password').val());
$.ajax({
url: `{{ route('langganan.update', ':id') }}`.replace(':id', id),
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status == 'success') {
showAlert(
'Berhasil Diubah!',
response.message,
response.status,
function () {
refreshTable()
}
);
} else {
showAlert(
'Gagal Diubah!',
response.errors,
response.status,
function () { }
);
}
},
error: function (xhr) {
if (xhr.status === 422) {
var errors = xhr.responseJSON.errors;
var errorMessage = '';
if (typeof errors === "object" && errors !== null) {
$.each(errors, function (key, value) {
errorMessage += value + '\n';
});
} else {
errorMessage = errors;
}
showAlert(
'Gagal Diubah!',
errorMessage,
'error',
function () { }
);
} else {
alert('Terjadi kesalahan server.');
}
}
});
});
// UPDATE WHEN UPDATE BUTTON GET CLICK -End-
// DELETE WHEN DELETE BUTTON GET CLICK -Start-
$(document).on('click', '.delete-btn', function (e) {
e.preventDefault();
var id = $(this).data('id');
deleteAlert(function () {
$.ajax({
url: '/langganan/' + id,
type: 'DELETE',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status === 'success') {
showAlert(
'Data Berhasil Dihapus!',
response.message,
response.status,
function () {
refreshTable();
}
);
} else {
showAlert(
'Data Gagal Dihapus!',
response.message,
response.status,
function () { }
);
}
},
error: function (xhr) {
if (xhr.status === 422) {
var errors = xhr.responseJSON.errors;
var errorMessage = '';
$.each(errors, function (key, value) {
errorMessage += value + '\n';
});
showAlert(
'Gagal Diubah!',
errorMessage,
'error',
function () { }
);
} else {
alert('Terjadi kesalahan server.');
}
}
});
});
});
// DELETE WHEN DELETE BUTTON GET CLICK -End-
// REFRESH THE TABLE WHEN THERE IS INPUT IN SEARCH BAR -Start-
$('#search-bar').on('input', function () {
const searchQuery = $(this).val();
refreshTable(searchQuery);
});
// REFRESH THE TABLE WHEN THERE IS INPUT IN SEARCH BAR -End-
// WHEN DOCUMENT IS FULLY LOADED -Start
$(document).ready(function () {
refreshTable('');
});
// WHEN DOCUMENT IS FULLY LOADED -End-
function checkCreatedDomain(logFile, subdomain, id) {
$.ajax({
url: `{{ route('check.created.domain') }}?logFile=${logFile}&subdomain=${subdomain}`,
type: 'GET',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status === 'success') {
$(`#langganan-${id}`).find('.loading').hide();
$(`#langganan-${id}`).find('.dropdown').show();
notyf.success(`Subdomain ${subdomain} berhasil dibuat!`);
refreshTable();
} else if (response.status === 'pending') {
$(`#langganan-${id}`).find('.loading').show();
$(`#langganan-${id}`).find('.dropdown').hide();
setTimeout(function () {
checkCreatedDomain(logFile, subdomain, id);
}, 5000); // Cek lagi setelah 5 detik
} else {
notyf.error(`Subdomain ${subdomain} gagal dibuat: ` + response.message);
$(`#langganan-${id}`).find('.loading').hide();
$(`#langganan-${id}`).find('.dropdown').show();
}
},
error: function (xhr) {
// $(`#langganan-${id}`).find('.loading').hide();
// $(`#langganan-${id}`).find('.dropdown').show();
// alert('Terjadi kesalahan server.');
setTimeout(function () {
checkCreatedDomain(logFile, subdomain, id);
}, 5000);
}
});
}
$(document).on('click', '.aktivasi-btn', function (e) {
e.preventDefault();
var id = $(this).data('id');
//find parent .dropdown and hide and show .loading in same td
$(this).closest('td').find('.loading').show();
$(this).closest('td').find('.dropdown').hide();
$.ajax({
url: `{{ route('langganan.aktifasi', ':id') }}`.replace(':id', id),
type: 'POST',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status === 'success') {
if (response.domainResult != undefined && response.domainResult != null) {
showAlert(
'Berhasil diaktifkan!',
"menunggu proses pembuatan domain...",
"warning",
function () {
checkCreatedDomain(response.domainResult.log_file, response.domainResult.subdomain, id);
}
);
} else {
showAlert(
'Langganan',
response.message,
response.status,
function () {
refreshTable();
}
);
$(this).closest('td').find('.loading').hide();
$(this).closest('td').find('.dropdown').show();
}
} else {
showAlert(
'Gagal!',
response.message,
response.status,
function () { }
);
$(this).closest('td').find('.loading').hide();
$(this).closest('td').find('.dropdown').show();
}
},
error: function (xhr) {
if (xhr.status === 422) {
var errors = xhr.responseJSON.errors;
var errorMessage = '';
$.each(errors, function (key, value) {
errorMessage += value + '\n';
});
showAlert(
'Gagal Diubah!',
errorMessage,
'error',
function () { }
);
} else {
alert('Terjadi kesalahan server.');
}
$(this).closest('td').find('.loading').hide();
$(this).closest('td').find('.dropdown').show();
}
});
});
$(document).on('click', '.sub-btn', function (e) {
e.preventDefault();
var user_id = $(this).data('user_id');
var paket_id = $(this).data('paket_id');
var formData = new FormData();
formData.append('_method', 'POST');
formData.append('user_id', user_id);
formData.append('paket_id', paket_id);
confirmAlert(function () {
$.ajax({
url: '{{ route('user.langganan') }}',
type: 'POST',
data: formData,
processData: false,
contentType: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success: function (response) {
if (response.status == 'success') {
showAlert(
'Data Berhasil Di Tambahkan!',
response.message,
response.status,
function () { }
);
refreshTable();
refreshForm();
} else {
showAlert(
'Data Gagal Di Tambahkan!',
response.message,
response.status,
function () { }
);
}
},
error: function (xhr) {
if (xhr.status === 422) {
console.log(xhr.responseJSON);
var errors = xhr.responseJSON.error;
var errorMessage = '';
$.each(errors, function (key, value) {
errorMessage += value + '\n';
});
showAlert(
'Gagal Ditambahkan!',
errorMessage,
'error',
function () { }
);
} else {
alert('Terjadi kesalahan server.');
}
}
});
});
});
// $(document).ready(function() {
// fetchPaket();
// function fetchPaket() {
// $.ajax({
// url: '/getPaket',
// method: 'GET',
// success: function(data) {
// let options = '<option value="">-paket-</option>';
// $.each(data.paket, function(index, paket) {
// options +=
// `<option value="${paket.id}">${paket.nama_paket}</option>`;
// });
// $('#paket_id').html(options);
// $('#edit_paket_id').html(options);
// },
// error: function() {
// alert('Gagal memuat data paket');
// }
// });
// }
// });
</script>
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]