Your IP : 216.73.216.91


Current Path : /var/www/html/llcfapp/public/http/
Upload File :
Current File : /var/www/html/llcfapp/public/http/family.js

//#region Importing form properties from autoloader.js
var form_props = getFormProps('fam');
var form_props_stu = getFormProps('stu');
//#endregion

if(window.location.href.indexOf(form_props.grid.replace('#', '')) == -1 && window.location.href.indexOf(form_props.sgrid.replace('#', '')) == -1){
	//#region Applying auto complete feature of jQuery-UI for mother and father occupation | Start
	$( function() {
		$( form_props.input_mother_occup ).autocomplete({source: occupations});
		$( form_props.input_father_occup ).autocomplete({source: occupations});
	} );
	//#endregion

	//#region Creating POST request for inserting family
	$(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 formData = $( this ).serialize();
			// 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);
					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 family id when family id exits in url and hiddent field
	var validator;
    var form;
	var entity_id;
    if(window.location.href.indexOf(form_props.service.replace("#", "")) > -1){
      form = form_props.service;
      validator = $(form_props.service).validate();
	  entity_id = $(form_props.input_family_id);
    }else if(window.location.href.indexOf(form_props.input_id.replace("#", "")) > -1){
      form = form_props.form_id;
      validator = $(form_props.form_id).validate();
	  entity_id = $(form_props.input_id);
    }
	if(entity_id){
		entity_id.focusout(function(){
			if(validator.element(entity_id)){
				url = getConfig("baseUrl")+`resource=${form_props.resource}&action=${form_props.getOneById}`;
				if(entity_id.val().trim() != ""){
					var formData = $( form ).serialize();
					if (window.location.href.indexOf(form_props.service.replace("#", "")) > -1) {
						formData = formData.replace('family_id', 'id');
					}
					$.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);
							}
							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_id.replace("#","")) > -1){
		$(form_props.input_id).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_family_id.replace("#", "")) > -1){
		form = form_props.service;
		validator = $(form_props.service).validate();
		entity_id = $(form_props.input_family_id);
		entity_id.trigger('focusout');
	  }
	  //#region Family 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.service.replace("#","")}||family_id` },
			  // { data: `${form_props.resource.toLowerCase()}||father_cnic` },
			  { data: `${form_props.resource.toLowerCase()}||father_name` },
			  { data: `${form_props.resource.toLowerCase()}||father_phone` },
			  // { data: `${form_props.resource.toLowerCase()}||father_occup` },
			  // { data: `${form_props.resource.toLowerCase()}||address` },
			  { data: `${form_props.resource.toLowerCase()}||mother_name` },
			  { data: `${form_props.resource.toLowerCase()}||children_count` },
			  { data: `${form_props.resource.toLowerCase()}||religion` },
			  { data: `${form_props.resource.toLowerCase()}||zakat` },
			],
			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, 10])
				.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 family service
	$(form_props.service).submit(function (event) {
		console.log('Inside submit');
		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 family_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 Family 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: 1
			},
			fixedColumns: true,
			processing: true,
			serverMethod: "post",
			serverSide: true,
			ajax: getConfig("baseUrl")+`resource=${form_props.resource}&action=${form_props.getAll}`,
			columns: [
				{  "data": "id" },
				{ 
					"data": "id",
					"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_id.replace("#","")}=`;
						a += row[form_props.input_id.replace("#","")];
						a += '\'>Update'
						a += '</a>';

						a += ` | <a title='Click to update ${form_props_stu.resource.toLowerCase()}' href='${form_props_stu.resource.toLowerCase()}.php?${form_props.input_father_cnic.replace("#","")}=`;
						a += row[form_props.input_father_cnic.replace("#","")];
						a += '\'>Create Student'
						a += '</a>';

						a += ` | <a title='Add family service' href='${form_props.service.replace("#", "")}.php?${form_props.input_family_id.replace("#","")}=`;
						a += row[form_props.input_id.replace("#","")];
						a += '\'>Service'
						a += '</a>';
						return a;
					}
				},
				{ "data": "father_cnic" },
				{ "data": "father_name" },
				{ "data": "father_phone" },
				{ "data": "father_occup" },
				{ "data": "zakat" },
				{ "data": "religion" },
				{ "data": "address" },
				{ "data": "children_count" },
				{ "data": "admitted" },
				{ "data": "mother_name" },
				{ "data": "mother_cnic" },
				{ "data": "mother_occup" },
				{ "data": "emerg_name" },
				{ "data": "emerg_relation" },
				{ "data": "emerg_num" }
			],
			columnDefs: [
			  {
				targets: [1, 8, 10],
				orderable: false,
			  },
			  { "searchable": false, "targets": [1,8] }
			],
			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: Families | Date: ${setDatePicker()} | Type: PDF`,
					exportOptions: {
					  columns: ':visible',
					},
					customize: function(doc) {
					  doc.content[1].table.headerRows = 0
					}
				  },
				  {
					extend: 'csvHtml5',
					title: `Export: Families | Date: ${setDatePicker()} | Type: CSV`,
					exportOptions: {
					  columns: ':visible',
					}
				  },
				  {
					extend: 'excelHtml5',
					title: `Export: Families | 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'
				// }
			],
			select: true,
			initComplete: function () {
				this.api()
				  .columns([0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16])
				  .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