| Current Path : /var/www/html/llcfapp/public/http/ |
| Current File : /var/www/html/llcfapp/public/http/student.js |
//#region Importing form properties from autoloader.js
var form_props = getFormProps("stu");
var form_props_fam = getFormProps("fam");
var form_props_don = getFormProps("don");
var form_props_health = getFormProps("health");
//#endregion
if (window.location.href.indexOf(form_props.grid.replace("#", "")) == -1) {
//#region Get all donar names
if($(form_props.input_donor_id).val()){
url =
getConfig("baseUrl") +
`resource=${form_props_don.resource}&action=${form_props_don.getAllDonors}`;
$.toast({
heading: "Information",
text: "Fetching donors...",
showHideTransition: "fade",
icon: "info",
hideAfter: 3000,
});
if (
window.location.href.indexOf(form_props.input_gr_num.replace("#", "")) >
-1
) {
$(form_props.submit_btn).attr("disabled", true);
$.toast({
heading: "Information",
text: "Please wait...",
showHideTransition: "fade",
icon: "info",
hideAfter: getConfig("toastHideAfter"),
});
}
$.post(url, [], (res) => {
var json = JSON.parse(res);
// console.log(json);
if (json.status == "success") {
fillDropDownMenu($(form_props.input_donor_id), json.result, ['id', 'donor_name'], ['-1', 'Select Donor Name']);
$.toast({
heading: "Success",
text: "Fetched all donors successfully",
showHideTransition: "slide",
icon: "success",
hideAfter: getConfig("toastHideAfter"),
});
} else if (json.status == "failure") {
$.toast({
heading: "Information",
text: json.msg,
showHideTransition: "slide",
icon: "info",
hideAfter: getConfig("toastHideAfter"),
});
} else {
$.toast({
heading: "Error",
text: "Some thing went wrong",
showHideTransition: "fade",
icon: "error",
hideAfter: getConfig("toastHideAfter"),
});
}
}).done(function () {
if (
window.location.href.indexOf(form_props.input_gr_num.replace("#", "")) >
-1
) {
getDataByGrNum();
} else {
// $(form_props.submit_btn).attr("disabled", false);
}
});
}
//#endregion
if (window.location.href.indexOf(form_props.service.replace("#", "")) == -1 && window.location.href.indexOf(form_props.sgrid.replace('#', '')) == -1) {
getAutoGrNum(form_props.input_auto_gr_num);
}
//#region Creating POST request for inserting student
$(form_props.form_id).submit(function (event) {
if ($(form_props.form_id).valid()) {
var url = "";
var update = false;
var msg = "";
if ($(form_props.input_id).val() == "-1") {
url = getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.createOne}`;
} else if (parseInt($(form_props.input_id).val()) > 0) {
url = getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.updateOne}`;
update = true;
}
var disabled = $(this).find(":input:disabled").removeAttr("disabled");
var formData = $(this).serialize();
disabled.attr("disabled", "disabled");
// console.log(formData);
$.post(url, formData, (res) => {
$(form_props.submit_btn).attr("disabled", true);
var json = JSON.parse(res);
// console.log(json);
if (json.status == "success") {
resetForm(form_props.form_id);
getAutoGrNum(form_props.input_auto_gr_num);
if (update) {
msg = `${form_props.resource} has been updated successfully`;
} else {
msg = `${form_props.resource} has been created successfully`;
}
$.toast({heading: "Success", text: msg, showHideTransition: "slide", icon: "success", hideAfter: getConfig("toastHideAfter")});
} else if (json.status == "failure") {
$.toast({heading: "Information", text: json.msg, showHideTransition: "slide", icon: "info", hideAfter: getConfig("toastHideAfter")});
} else {
$.toast({heading: "Error", text: "Some thing went wrong", showHideTransition: "fade", icon: "error", hideAfter: getConfig("toastHideAfter")});
}
});
setTimeout(() => {
$(form_props.submit_btn).attr("disabled", false);
}, getConfig("toastHideAfter"));
}
event.preventDefault();
});
//#endregion
//#region Search for father CNIC when user move out from father cnic field
if (window.location.href.indexOf(form_props.input_father_cnic.replace("#", "")) > -1) {
var father_cnic = $(form_props.input_father_cnic);
var validator = $(form_props.form_id).validate();
father_cnic.focusout(function () {
if (validator.element(father_cnic)) {
url = getConfig("baseUrl") + `resource=${form_props_fam.resource}&action=${form_props_fam.getOneByCnic}`;
if (father_cnic.val().trim() != "") {
var formData = $(this).serialize();
$.post(url, formData, (res) => {
var json = JSON.parse(res);
if (json.status == "success" && json.rowsAffected > 0) {
$(form_props.ref_fam_id).val(json.result[0]["id"]);
setFormInputValues(json.result[0], form_props, [form_props.input_id]);
$.toast({heading: "Success", text: json.msg, showHideTransition: "slide", icon: "success", hideAfter: getConfig("toastHideAfter")});
} else if (json.status == "failure" || json.rowsAffected == 0) {
$.toast({heading: "Information", text: json.msg, showHideTransition: "slide", icon: "info", hideAfter: getConfig("toastHideAfter")});
} else {
$.toast({heading: "Error", text: "Some thing went wrong", showHideTransition: "fade", icon: "error", hideAfter: getConfig("toastHideAfter")});
}
});
}
}
});
if (validator.element(father_cnic)) {
$(form_props.input_father_cnic).trigger("focusout");
}
}
//#endregion
//#region Search for GR # when user move out from gr_num field | Update Case | Setting gr_num from url into input
function getDataByGrNum() {
var gr_num = $(form_props.input_gr_num);
var father_cnic = $(form_props.input_father_cnic);
var validator;
var form;
if(window.location.href.indexOf(form_props.service.replace("#", "")) > -1){
form = form_props.service;
validator = $(form_props.service).validate();
}else{
form = form_props.form_id;
validator = $(form_props.form_id).validate();
}
gr_num.focusout(function () {
if (validator.element(gr_num)) {
url = getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.getOneByGrNumber}`;
if (gr_num.val().trim() != "") {
var formData = $(form).serialize();
$.post(url, formData, (res) => {
var json = JSON.parse(res);
if (json.status == "success" && json.rowsAffected > 0) {
if (window.location.href.indexOf(form_props.service.replace("#", "")) > -1) {
setFormInputValues(json.result[0], form_props, form_props.input_id);
}else{
setFormInputValues(json.result[0], form_props);
}
$(form_props.submit_btn).attr("disabled", false);
$(form_props.input_father_cnic).attr("disabled", true);
if (json.result[0]["zakat"] == "Yes") {
$(form_props.zakat_yes).attr("checked", true);
$(form_props.zakat_yes).parent("label").addClass("active");
} else if (json.result[0]["zakat"] == "No") {
$(form_props.zakat_no).attr("checked", true);
$(form_props.zakat_no).parent("label").addClass("active");
}
$.toast({heading: "Success", text: json.msg, showHideTransition: "slide", icon: "success", hideAfter: getConfig("toastHideAfter")});
} else if (json.status == "failure" || json.rowsAffected == 0) {
$.toast({heading: "Information", text: json.msg, showHideTransition: "slide", icon: "info", hideAfter: getConfig("toastHideAfter")});
} else {
$.toast({ heading: "Error", text: "Some thing went wrong", showHideTransition: "fade", icon: "error", hideAfter: getConfig("toastHideAfter")});
}
});
}
}
});
if ( window.location.href.indexOf(form_props.input_gr_num.replace("#", "")) > -1 && validator.element(gr_num)) {
$(form_props.input_gr_num).trigger("focusout");
$(form_props.input_father_cnic).trigger("focusout");
}
if (window.location.href.indexOf(form_props.input_father_cnic.replace("#", "")) > -1 && validator.element(father_cnic)) {
$(form_props.input_father_cnic).attr("readonly", true);
$(form_props.input_father_cnic).trigger("focusout");
}
}
//#endregion
}
//#region For Specific to student service page
if (window.location.href.indexOf(form_props.service.replace("#", "")) > -1) {
$().ready(()=>{
setDatePicker($('#date'));
$(form_props.getAutoGrNum).val('');
if(window.location.href.indexOf(form_props.input_gr_num.replace("#", "")) > -1){
getDataByGrNum();
}
//#region Student Services Datatable
if (window.location.href.indexOf(form_props.sgrid.replace("#", "")) > -1) {
// DataTable
var table = $(form_props.sgrid)
.DataTable({
scrollY: "56vh",
scrollX: true,
scrollCollapse: true,
// responsive: true,
paging: true,
pageLength: 50,
fixedColumns: {
left: 2,
right: 1
},
fixedColumns: true,
processing: true,
serverMethod: "post",
serverSide: true,
ajax: getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.getAllServices}`,
columns: [
{data: `${form_props.service.replace("#","")}||id`},
{
data: `${form_props.service.replace("#","")}||id`,
render: function (data, type, row, meta) {
var a = `<a title='Click to update ${form_props.service.replace("#","")}' href='${form_props.service.replace("#","")}.php?${form_props.input_service_id.replace("#","")}=`;
a += row[form_props.service.replace("#","") + "||" + form_props.input_service_id.replace("#", "")];
a += "'> Update";
a += "</a>";
return a;
},
},
{ data: `${form_props.service.replace("#","")}||service` },
{ data: `${form_props.service.replace("#","")}||date` },
{ data: `${form_props.resource.toLowerCase()}||auto_gr_num` },
{ data: `${form_props.resource.toLowerCase()}||gr_num` },
{ data: `${form_props.resource.toLowerCase()}||class` },
{ data: `${form_props.resource.toLowerCase()}||stu_full_name` },
{ data: `${form_props.resource.toLowerCase()}||stu_dob` },
{ data: `${form_props.resource.toLowerCase()}||stu_gender` },
],
columnDefs: [
{ targets: [], orderable: false },
],
dom: "Bfrtip",
lengthMenu: [
[10, 25, 50, -1],
["10 rows", "25 rows", "50 rows", "Show all"],
],
buttons: [
{
extend: "colvis",
postfixButtons: ["colvisRestore"],
columnText: function (dt, idx, title) {
return idx + 1 + ": " + title;
},
},
"pageLength",
{
extend: "pdfHtml5",
orientation: "landscape",
pageSize: "LEGAL",
title: `Export: Students Service History | Date: ${setDatePicker()} | Type: PDF`,
exportOptions: {
columns: ':visible',
},
customize: function(doc) {
doc.content[1].table.headerRows = 0
}
},
{
extend: 'csvHtml5',
title: `Export: Students Service History | Date: ${setDatePicker()} | Type: CSV`,
exportOptions: {
columns: ':visible',
}
},
{
extend: 'excelHtml5',
title: `Export: Students Service History | Date: ${setDatePicker()} | Type: EXCEL`,
exportOptions: {
columns: ':visible',
}
},
{
extend: "copy",
attr: { id: "allan" },
exportOptions: {
columns: ':visible',
}
}
],
select: true,
initComplete: function () {
this.api()
.columns([0, 2, 3, 4, 5, 6, 7, 8, 9])
.every(function () {
var that = this;
var input = $('<input type="text" placeholder="Search" />')
.appendTo($(this.footer()).empty())
.on("keyup change", function () {
if (that.search() !== this.value) {
that.search(this.value).draw();
}
});
});
},
})
.columns.adjust()
.responsive.recalc()
$.fn.dataTable.ext.errMode = "throw";
}
//#endregion
});
//#region Creating POST request for inserting student service
$(form_props.service).submit(function (event) {
if ($(form_props.service).valid()) {
var url = "";
var update = false;
var msg = "";
if ($(form_props.input_service_id).val() == "-1") {
url = getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.createService}`;
} else if (parseInt($(form_props.input_service_id).val()) > 0) {
url = getConfig("baseUrl") + `resource=${form_props.resource}&action=${form_props.updateService}`;
update = true;
}
var disabled = $(this).find(":input:disabled").removeAttr("disabled");
var formData = $(this).serialize();
disabled.attr("disabled", "disabled");
// console.log(formData);
$.post(url, formData, (res) => {
$(form_props.submit_btn).attr("disabled", true);
var json = JSON.parse(res);
// console.log(json);
if (json.status == "success") {
resetForm(form_props.service);
if (update) {
msg = `${form_props.resource} has been updated successfully`;
} else {
msg = `${form_props.resource} has been created successfully`;
}
$.toast({heading: "Success", text: msg, showHideTransition: "slide", icon: "success", hideAfter: getConfig("toastHideAfter")});
} else if (json.status == "failure") {
$.toast({heading: "Information", text: json.msg, showHideTransition: "slide", icon: "info", hideAfter: getConfig("toastHideAfter")});
} else {
$.toast({heading: "Error", text: "Some thing went wrong", showHideTransition: "fade", icon: "error", hideAfter: getConfig("toastHideAfter")});
}
});
setTimeout(() => {
$(form_props.submit_btn).attr("disabled", false);
}, getConfig("toastHideAfter"));
}
event.preventDefault();
});
//#endregion
//#region Search for service_id in student_service when service_id exits in url and hidden field
if (window.location.href.indexOf(form_props.sgrid.replace("#", "")) == -1) {
var entity_id = $(form_props.input_service_id);
var validator = $(form_props.service).validate();
entity_id.focusout(function(){
if(validator.element(entity_id)){
url = getConfig("baseUrl")+`resource=${form_props.resource}&action=${form_props.getServiceById}`;
if(entity_id.val().trim() != ""){
var formData = $( this ).serialize();
$.post( url, formData, (res)=>{
var json = JSON.parse(res);
if(json.status == "success" && json.rowsAffected > 0){
setFormInputValues(json.result[0], form_props);
$.toast({heading: 'Success', text: json.msg, showHideTransition: 'slide', icon: 'success', hideAfter: getConfig("toastHideAfter")});
}else if(json.status == "failure" || json.rowsAffected == 0){
$.toast({heading: 'Information', text: json.msg, showHideTransition: 'slide', icon: 'info', hideAfter: getConfig("toastHideAfter")});
}else{
$.toast({heading: 'Error', text: 'Some thing went wrong', showHideTransition: 'fade', icon: 'error', hideAfter: getConfig("toastHideAfter")});
}
});
}
}
});
if(window.location.href.indexOf(form_props.input_service_id.replace("#","")) > -1){
$(form_props.input_service_id).trigger("focusout");
}
//#endregion
}
}
//#endregion
//#region Students Datatable
if (window.location.href.indexOf(form_props.grid.replace("#", "")) > -1) {
$(document).ready(function () {
// DataTable
var table = $(form_props.grid)
.DataTable({
scrollY: "56vh",
scrollX: true,
scrollCollapse: true,
// responsive: true,
paging: true,
pageLength: 50,
fixedColumns: {
left: 2,
right: 1
},
fixedColumns: true,
processing: true,
serverMethod: "post",
serverSide: true,
ajax:
getConfig("baseUrl") +
`resource=${form_props.resource}&action=${form_props.getAll}`,
columns: [
{data: `${form_props.resource.toLowerCase()}||gr_num`},
{
data: `${form_props.resource.toLowerCase()}||gr_num`,
render: function (data, type, row, meta) {
var a = `<a title='Click to update ${form_props.resource.toLowerCase()}' href='${form_props.resource.toLowerCase()}.php?${form_props.input_gr_num.replace("#","")}=`;
a += row[form_props.resource.toLowerCase() + "||" +form_props.input_gr_num.replace("#", "")];
a += "'> Update";
a += "</a>";
a += ` | <a title='Click to goto checkup form' href='${form_props_health.resource.toLowerCase()}.php?${form_props.input_gr_num.replace("#","")}=`;
a += row[form_props.resource.toLowerCase() + "||" +form_props.input_gr_num.replace("#", "")];
a += "'>Check up";
a += "</a>";
a += ` | <a title='Add Student Services' href='${form_props.service.replace("#", "")}.php?${form_props.input_gr_num.replace("#","")}=`;
a += row[form_props.resource.toLowerCase() + "||" +form_props.input_gr_num.replace("#", "")];
a += "'>Services";
a += "</a>";
return a;
},
},
// { data: `${form_props.resource.toLowerCase()}||auto_gr_num` },
{ data: `${form_props.resource.toLowerCase()}||family_id` },
{ data: `${form_props.resource.toLowerCase()}||class` },
{ data: `${form_props.resource.toLowerCase()}||stu_full_name` },
{ data: `${form_props.resource.toLowerCase()}||stu_form_b` },
{ data: `${form_props.resource.toLowerCase()}||stu_dob` },
{ data: `${form_props.resource.toLowerCase()}||stu_age` },
{ data: `${form_props.resource.toLowerCase()}||stu_gender` },
{ data: `${form_props_fam.resource.toLowerCase()}||father_cnic` },
{ data: `${form_props_fam.resource.toLowerCase()}||father_name` },
{ data: `${form_props_fam.resource.toLowerCase()}||father_phone` },
{ data: `${form_props_fam.resource.toLowerCase()}||mother_name` },
{ data: `${form_props_fam.resource.toLowerCase()}||emerg_name` },
{ data: `${form_props_fam.resource.toLowerCase()}||emerg_relation` },
{ data: `${form_props_fam.resource.toLowerCase()}||emerg_num` },
{ data: `${form_props_fam.resource.toLowerCase()}||children_count` },
{ data: `${form_props_don.resource.toLowerCase()}||donor_name` },
{ data: `${form_props_don.resource.toLowerCase()}||donor_ref_name` },
{ data: `${form_props.resource.toLowerCase()}||donation_date` },
{ data: `${form_props.resource.toLowerCase()}||donation_expiry` },
{
data: `${form_props.resource.toLowerCase()}||stu_days_expired`,
render: function (data, type, row, meta) {
var expired = "style=\"color: #3cb371; font-weight: bold;\"";
if(row[form_props.resource.toLowerCase() + "||stu_days_expired"]?.indexOf('-') > -1){
expired = "style=\"color: #ff0000; font-weight: bold;\"";
}
var style = `<span ${expired}>${row[form_props.resource.toLowerCase() + "||stu_days_expired"]}</span>`;
return style;
},
},
{ data: `${form_props_fam.resource.toLowerCase()}||zakat` },
],
columnDefs: [
{ targets: [1, 2, 7, 16, 21, 22], orderable: false },
],
dom: "Bfrtip",
lengthMenu: [
[10, 25, 50, -1],
["10 rows", "25 rows", "50 rows", "Show all"],
],
buttons: [
{
extend: "colvis",
postfixButtons: ["colvisRestore"],
columnText: function (dt, idx, title) {
return idx + 1 + ": " + title;
},
},
"pageLength",
{
extend: "pdfHtml5",
orientation: "landscape",
pageSize: "LEGAL",
title: `Export: Students | Date: ${setDatePicker()} | Type: PDF`,
exportOptions: {
columns: ':visible',
},
customize: function(doc) {
doc.content[1].table.headerRows = 0
}
},
{
extend: 'csvHtml5',
title: `Export: Students | Date: ${setDatePicker()} | Type: CSV`,
exportOptions: {
columns: ':visible',
}
},
{
extend: 'excelHtml5',
title: `Export: Students | Date: ${setDatePicker()} | Type: EXCEL`,
exportOptions: {
columns: ':visible',
}
},
{
extend: "copy",
attr: { id: "allan" },
exportOptions: {
columns: ':visible',
}
},
// {
// extend: 'print',
// text: 'Print all',
// exportOptions: {
// modifier: {
// selected: null
// }
// }
// },
// {
// extend: "print",
// text: "Print",
// autoPrint: false,
// exportOptions: {
// columns: ':visible',
// }
// },
],
select: true,
initComplete: function () {
this.api()
.columns([22])
.every(function () {
var column = this;
var select = $(
'<select class="form-control input-sm dt-select"><option value="">Select</option></select>'
)
.appendTo($(column.footer()).empty())
.on("change", function () {
column.search($(this).val()).draw();
});
column
.data()
.unique()
.sort()
.each(function (d, j) {
select.append('<option value="' + d + '">' + d + "</option>");
});
});
this.api()
.columns([0, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20])
.every(function () {
var that = this;
var input = $('<input type="text" placeholder="Search" />')
.appendTo($(this.footer()).empty())
.on("keyup change", function () {
if (that.search() !== this.value) {
that.search(this.value).draw();
}
});
});
},
})
.columns.adjust()
.responsive.recalc()
// .on("preXhr.dt", function (e, settings, data) {
// updateProcessing();
// $(".dt-buttons").append(
// '<img title="Please wait. Report is updating..." class="spinner_progress" src="assets/images/wip.gif">'
// );
// })
// .on("draw.dt", function () {
// updateProcessing();
// $(".dt-buttons").append(
// '<img title="Data is up to date now!" class="checkmark" src="assets/images/checkmark.png">'
// );
// });
$.fn.dataTable.ext.errMode = "throw";
});
}
//#endregion