Your IP : 216.73.216.91


Current Path : /var/www/html/llcfapp/public/http/
Upload File :
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