EXAM ATTENDANCE MASTSER:Velz

This commit is contained in:
velz 2018-06-25 13:03:46 +05:30
parent cb1055d944
commit 809ed1a387
6 changed files with 1169 additions and 1 deletions

View File

@ -158,7 +158,8 @@
"MAIN": "HALL TICKET",
"COURSESEMESTERMAPPING": "COURSE SEMESTER MAPPING",
"BATCHSCHEDULE": "BATCH SCHEDULE",
"GENERATEHALLTICKET": "GENERATE HALLTICKET"
"GENERATEHALLTICKET": "GENERATE HALLTICKET",
"EXAMATTENDANCE" : "EXAMINATION ATTENDANCE"
},
"reregistration":{
"MAIN":"RE REGISTRATION",

View File

@ -175,6 +175,8 @@ app.constant('JS_REQUIRES', {
'generateHallTicketCtrl':'assets/js/controllers/generateHallTicketCtrl.js',
// generate hall ticket
'semcoursemapCtrl':'assets/js/controllers/semcoursemapCtrl.js',
// exam attendance
'examAttendanceCtrl':'assets/js/controllers/examAttendanceCtrl.js',
// batchshedule for hall ticket
'schCtrl':'assets/js/controllers/schCtrl.js',

View File

@ -666,6 +666,14 @@ app.config(['$stateProvider', '$urlRouterProvider', '$controllerProvider', '$com
ncyBreadcrumb: {
label: 'Generate HallTicket'
}
}).state('app.hallTicket.examAttendance', {
url: '/examAttendance',
templateUrl: "assets/views/hallticket/examAttendance.html",
title: 'Exam Attendance',
resolve: loadSequence('ladda', 'angular-ladda', 'examAttendanceCtrl','ngTable','ui.select','spin', 'ui.mask'),
ncyBreadcrumb: {
label: 'Exam Attendance'
}
}).state('app.reregistration', {
url: '/Reregistration',
template: '<div ui-view class="fade-in-up"> <div style="margin: auto; width: 50%;padding: 10px;"> REREGISTRATION</div> </div>',

View File

@ -0,0 +1,958 @@
'use strict';
/**
* controllers for ng-table
* Simple table with sorting and filtering on AngularJS
*/
app.controller('examAttendanceCtrl', ["$scope","$rootScope","toaster", "$filter", "ngTableParams", "API_POINTS", "$localStorage", "$http", "$state","$modal","$log", function ($scope,$rootScope,toaster, $filter, ngTableParams, apiPoint, $localStorage, $http, $state,$modal,$log) {
$scope.myModel = {
"universityName":"",
"courseName":"",
"batchName":""
};
$scope.pdfModel = {
"universityDetails":"",
"studentDetails":"",
"batchDetails":"",
"courseDetails":"",
"centerDetails":"",
"semDataType":""
};
$rootScope.userType = JSON.parse(localStorage.getItem('localObj')).localType;
$scope.isTblShow = false;
$scope.isLoader = false;
$scope.isLoaderShow = false;
$scope.isLoaderTxt = "Loading...";
// sorting function for table params
$scope.sort = function(keyname){
$scope.sortKey = keyname; //set the sortKey to the param passed
$scope.reverse = !$scope.reverse; //if true make it false and vice versa
}
/*
* init function
* created by kms
* */
$scope.init = function () {
alert('Exam ATTENDANCE')
var getUniv = {
method: 'POST',
url: apiPoint.url + 'getUniversityCourseDetails/',
headers: {
'Content-Type': 'application/json'
},
data: {
requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID
}
};
$http(getUniv).then(function (response) {
if (response.data.status==200 && response.data.universityStatus) {
$scope.university = response.data.univerSityDetails;
$scope.centers = response.data.centerDetails;
//console.log( $scope.university);
} else {
$scope.university = "";
}
});
}
/*
* get student details
* created by kms
* */
$scope.studentInfo="";
$scope.getStudentDetails = function (form,myModel) {
if(myModel.universityName == null || myModel.universityName == '' || myModel.universityName == undefined){
swal('Select University','','warning');
return false;
}
if(myModel.courseName == '' || myModel.courseName == null || myModel.courseName == undefined){
swal('Select Course','','warning');
return false;
}
if(myModel.batchName == null || myModel.batchName == '' || myModel.batchName == undefined){
swal('Select Batch','','warning');
return false;
}
var firstError = null;
if (form.$invalid) {
var field = null, firstError = null;
for (field in form) {
if (field[0] != '$') {
if (firstError === null && !form[field].$valid) {
firstError = form[field].$name;
}
if (form[field].$pristine) {
form[field].$dirty = true;
}
}
}
angular.element('.ng-invalid[name=' + firstError + ']').focus();
// swal("The form cannot be submitted because it contains validation errors!", "Errors are marked with a red, dashed border!", "error");
} else {
$scope.selectedStudentsID = [];
$scope.isLoaderShow = true;
$scope.myModel.all = false;
$scope.isTblShow = false;
var university = myModel.universityName;
var course = myModel.courseName;
var batch = myModel.batchName;
var getStudents = {
method: 'POST',
url: apiPoint.url + 'getStudentListForHallTicket/',
headers: {
'Content-Type': 'application/json'
},
data: {
university: university,
course:course,
batch:batch,
requestedtBy: JSON.parse(localStorage.getItem('localObj')).localUserID,
branchId: JSON.parse(localStorage.getItem('localObj')).localBranchID,
requestedDept: JSON.parse(localStorage.getItem('localObj')).localType,
}
};
$http(getStudents).then(function (response) {
if (response.data.status == 200 && response.data.studentStatus) {
$scope.studentInfo = response.data.studentDetails;
$scope.isLoaderShow = false;
$scope.isTblShow = true;
}
else
{
$scope.studentInfo="";
$scope.isLoaderShow = true;
$scope.isTblShow = false;
$scope.isLoaderTxt = "No Records Found";
}
},function(error){
$scope.isLoaderShow = true;
$scope.isTblShow = false;
$scope.isLoaderTxt = "No Records Found";
});
}
}
$scope.selectedStudentsID = [];
$scope.isClick = function(e)
{
var ide = e.target;
var val = (ide.checked ? true : false);
var sid = e.target.id;
angular.forEach($scope.studentInfo,function(value,key){
if(sid == value.StudentID)
{
sid = value;
}
});
var pos = $scope.selectedStudentsID.indexOf(sid);
if(val)
{
if( pos == -1)
{
$scope.selectedStudentsID.push(sid);
}
}
else
{
$scope.selectedStudentsID.splice(pos,1);
}
}
$scope.isCheckAll = function(e)
{
var val = (e.target.checked ? true : false);
if(val)
{
var len = $scope.studentInfo.length;
var i = 0;
for(i=0;i<len;i++)
{
if($scope.selectedStudentsID.indexOf($scope.studentInfo[i]) === -1)
{
$scope.selectedStudentsID.push($scope.studentInfo[i]);
}
}
}
else
{
$scope.selectedStudentsID = [];
}
}
$scope.generateHallTicket = function()
{
if($scope.studentInfo.length == 0)
{
swal('No Students Found','','warning');return false;
}
if($scope.myModel.centerName == "" || $scope.myModel.centerName == undefined || $scope.myModel.centerName == null)
{
swal('Select Center Name','','warning');return false;
}
if($scope.selectedStudentsID.length == 0)
{
swal('Select Student(s)','','warning');return false;
}
var university = $scope.myModel.universityName;
var course = $scope.myModel.courseName;
var batch = $scope.myModel.batchName;
var dataForHallTicket = {
method: 'POST',
url: apiPoint.url + 'getHallTicket/',
headers: {
'Content-Type': 'application/json'
},
data: {
universityID : university,
courseID :course,
batchName:batch,
StudentIDs:$scope.selectedStudentsID,
centerName:$scope.myModel.centerName,
branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID,
requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID
}
};
$http(dataForHallTicket).then(function (response) {
if (response.data.status==200 && response.data.hallTicketStatus) {
$scope.pdfModel.universityDetails = response.data.hallTicketData.UniversityDetails;
$scope.pdfModel.studentDetails = response.data.hallTicketData.studentDetails;
$scope.pdfModel.batchDetails = $scope.selectedBatchName;
$scope.pdfModel.courseDetails = $scope.selectedCourseName;
$scope.pdfModel.centerDetails = $scope.myModel.centerName;
$scope.pdfModel.semDataType =response.data.semDataType;
$scope.open($scope.pdfModel);
}
},function(error){ swal('No Records Found','',error); });
}
//Below Functions defined for Hall Ticket generation
$scope.FeesName="" ;
$scope.open = function (PDFdata) {
var modalInstance = $modal.open({
templateUrl: 'assets/views/hallticket/hallTicketPDF.html',
controller: 'HallTicketPDFCtrl',
// size: size,
resolve: {
pdfitems: function () {
//return $scope.FeesName;
return PDFdata;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
// }
// generate pdf for student view
$scope.captureCourseName = function()
{
$scope.selectedCourseName = course.options[course.selectedIndex].text;
};
$scope.captureBatchName = function()
{
$scope.selectedBatchName = batch.options[batch.selectedIndex].text;
};
}]);
// Controller for Hallticket Modal PDF
app.controller('examAttendancePDFCtrl', ["$scope", "$modalInstance", "pdfitems", function ($scope, $modalInstance, pdfitems) {
console.log('child');
$scope.localPdfUniverityDetails = pdfitems.universityDetails;
$scope.universityNamePDF = $scope.localPdfUniverityDetails[0].UniversityName;
$scope.universityAddressPDF = $scope.localPdfUniverityDetails[0].Address;
$scope.universityEmailPDF = $scope.localPdfUniverityDetails[0].EmailID;
$scope.universityLogoPDF = $scope.localPdfUniverityDetails[0].ProfilePicPath;
$scope.batchNamePDF = pdfitems.batchDetails;//.BatchName;
$scope.courseNamePDF = pdfitems.courseDetails;//.CourseName;
$scope.centerNamePDF = pdfitems.centerDetails.CenterName+''+ pdfitems.centerDetails.CenterAddress;
$scope.semDataTypePDF = pdfitems.semDataType;
$scope.localPdfStudentDetails = pdfitems.studentDetails;
$scope.printStudentDetails = function(hallticket_type) {
angular.forEach($scope.localPdfStudentDetails,function(value,key){
if(value.StudentID)
{
if(hallticket_type == 'REG' || hallticket_type == 'LAT'){
console.log('REGLAT');
var semlength = value.FeeDetails.length;
if(hallticket_type == 'REG' || hallticket_type == 'LAT')
{
semlength = 7;
}
var i = 0;
for(i = 0; i <= semlength;i=i+2)
{
var fileName = "DEFAULT.pdf";
var margins = {
top: 70,
bottom: 40,
left: 30,
width: 550
};
var doc = new jsPDF('p', 'pt');
//convert img to base 64
var img = document.getElementById("logo")
var canvas = document.createElement("canvas");
canvas.width = 100;
canvas.height = 100;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0,100,100);
var dataURL = canvas.toDataURL("image/png");
//console.log('***'+dataURL);
//convert img to base 64
//convert img to base 64
var profile = document.getElementById("sprofile")
var canvas2 = document.createElement("canvas");
canvas2.width = 100;
canvas2.height = 100;
var ctx2 = canvas2.getContext("2d");
ctx2.drawImage(profile, 0, 0,100,100);
var profiledataURL = canvas2.toDataURL("image/png",1.0);
//convert img to base 64
var sem1 = "";
var sem2 = "";
var tableid = value.StudentID;
doc.autoTableSetDefaults({
styles: {cellPadding: 3.0, fontSize: 8},
headerStyles: {fillColor: [245, 245, 240], textColor: 0}
});
var firstTableID = tableid+i;
var SecTableID = (tableid+(i+1));
if(document.getElementById(firstTableID))
{
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
}
if(document.getElementById(SecTableID))
{
var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
}
var header = function(data) {
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
var rollNo = 'Reg No : '+value.EnrollmentID;
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
var centerName = 'Centre : '+$scope.centerNamePDF;
if(hallticket_type == 'SEM' || hallticket_type == 'REG')
{
var semName = 'SEM'+(i+1)+'&'+(i+2);
}
else if(hallticket_type == 'LAT')
{
var semName = 'SEM'+(i+3)+'&'+(i+4);
}
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
doc.setDrawColor(0);
doc.setFillColor(245, 245, 240);
doc.rect(150, 30, 395, 60,'FD');
doc.setFontSize(12);
doc.setTextColor(40);
doc.setFontStyle('normal');
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
doc.setFontSize(22);
doc.text(160,50,$scope.universityNamePDF);
doc.setFontSize(10);
doc.text(160,65,$scope.universityAddressPDF);
doc.setFontSize(10);
doc.text(160,88,$scope.universityEmailPDF);
doc.rect(45, 100, 400, 60);
doc.rect(445, 100, 100, 60);
doc.line(45, 125, 445, 125);
doc.setFontSize(10);
doc.setFontType("bold");
doc.text(80,115,examName);
doc.setFontType("normal");
doc.text(50,140,rollNo);
doc.text(230,140,stuName);
doc.text(50,155,centerName);
//footer content
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
var footerNote_student_sign ="Signature of the Student";
var footerNote_controller_sign ="Controller of Examination";
doc.setFontSize(8);
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
};
var autoTableEndPosYvalue = 0;
if(sem1 == "")
{
autoTableEndPosYvalue = 200;
}
else
{
autoTableEndPosYvalue = 300;
}
var options2 = {
addPageContent: header,
margin: {
top: 100
},
startY: doc.autoTableEndPosY() + autoTableEndPosYvalue,
theme :'grid'
};
var options1 = {
addPageContent: header,
margin: {
top: 200
},
theme :'grid'
};
if(sem1 != "")
{
doc.autoTable(sem1.columns, sem1.data, options1);
}
if(sem2 != "")
{
doc.autoTable(sem2.columns, sem2.data, options2);
}
if(sem2 != "" || sem1 != "")
{
doc.save(fileName);
}
}//End of semlength for loop
}//END OF SEM HALL TICKET TYPE
else if(hallticket_type == 'YEAR')
{
console.log('YEAR');
var semlength = value.FeeDetails.length;
var i = 0;
for(i = 0; i <= semlength;i++)
{
// console.log('FOR'+i);
var fileName = "DEFAULT.pdf";
var semName = 'DEFAULT_SEM';
var margins = {
top: 70,
bottom: 40,
left: 30,
width: 550
};
var doc = new jsPDF('p', 'pt');
//convert img to base 64
var img = document.getElementById("logo")
var canvas = document.createElement("canvas");
canvas.width = 100;
canvas.height = 100;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0,100,100);
var dataURL = canvas.toDataURL("image/png");
//console.log('***'+dataURL);
//convert img to base 64
//convert img to base 64
var profile = document.getElementById("sprofile")
var canvas2 = document.createElement("canvas");
canvas2.width = 100;
canvas2.height = 100;
var ctx2 = canvas2.getContext("2d");
ctx2.drawImage(profile, 0, 0,100,100);
var profiledataURL = canvas2.toDataURL("image/png",1.0);
//convert img to base 64
var sem1 = "";
// var sem2 = "";
var tableid = value.StudentID;
doc.autoTableSetDefaults({
styles: {cellPadding: 3.0, fontSize: 8},
headerStyles: {fillColor: [245, 245, 240], textColor: 0},
});
var firstTableID = "0";
//var SecTableID = "1";
switch(i)
{
case 0:
var firstTableID = tableid+'year10';
//var SecTableID = tableid+'year11';
semName = 'YEAR1';
break;
case 1:
var firstTableID = tableid+'year20';
//var SecTableID = tableid+'year21';
semName = 'YEAR2';
break;
case 2:
var firstTableID = tableid+'year30';
//var SecTableID = tableid+'year31';
semName = 'YEAR3';
break;
case 4:
var firstTableID = tableid+'year40';
//var SecTableID = tableid+'year41';
semName = 'YEAR4';
break;
}
if(document.getElementById(firstTableID))
{
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
}
// if(document.getElementById(SecTableID))
// {
// var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
// }
var header = function(data) {
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
var rollNo = 'Reg No : '+value.EnrollmentID;
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
var centerName = 'Centre : '+$scope.centerNamePDF;
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
doc.setDrawColor(0);
doc.setFillColor(245, 245, 240);
doc.rect(150, 30, 395, 60,'FD');
doc.setFontSize(12);
doc.setTextColor(40);
doc.setFontStyle('normal');
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
doc.setFontSize(22);
doc.text(160,50,$scope.universityNamePDF);
doc.setFontSize(10);
doc.text(160,65,$scope.universityAddressPDF);
doc.setFontSize(10);
doc.text(160,88,$scope.universityEmailPDF);
doc.rect(45, 100, 400, 60);
doc.rect(445, 100, 100, 60);
doc.line(45, 125, 445, 125);
doc.setFontSize(10);
doc.setFontType("bold");
doc.text(80,115,examName);
doc.setFontType("normal");
doc.text(50,140,rollNo);
doc.text(230,140,stuName);
doc.text(50,155,centerName);
//footer content
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
var footerNote_student_sign ="Signature of the Student";
var footerNote_controller_sign ="Controller of Examination";
doc.setFontSize(8);
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
};
var options = {
addPageContent: header,
margin: {
top: 170
},
//startY: doc.autoTableEndPosY() + 20,
theme :'grid'
};
if(sem1 != "")
{
doc.autoTable(sem1.columns, sem1.data, options);
}
// if(sem2 != "")
// {
// doc.autoTable(sem2.columns, sem2.data, options);
// }
if(sem1 != "")
{
doc.save(fileName);
}
}//End of semlength for loop
}//END OF YEAR HALL TICKET TYPE
else if(hallticket_type == 'SEM' ){
console.log('SEM');
var semlength = value.FeeDetails.length;
var i = 0;
for(i = 0; i < semlength;i++)
{
var fileName = "DEFAULT.pdf";
var margins = {
top: 70,
bottom: 40,
left: 30,
width: 550
};
var doc = new jsPDF('p', 'pt');
//convert img to base 64
var img = document.getElementById("logo")
var canvas = document.createElement("canvas");
canvas.width = 100;
canvas.height = 100;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0,100,100);
var dataURL = canvas.toDataURL("image/png");
//console.log('***'+dataURL);
//convert img to base 64
//convert img to base 64
var profile = document.getElementById("sprofile")
var canvas2 = document.createElement("canvas");
canvas2.width = 100;
canvas2.height = 100;
var ctx2 = canvas2.getContext("2d");
ctx2.drawImage(profile, 0, 0,100,100);
var profiledataURL = canvas2.toDataURL("image/png",1.0);
//convert img to base 64
var sem1 = "";
//var sem2 = "";
var tableid = value.StudentID;
doc.autoTableSetDefaults({
styles: {cellPadding: 3.0, fontSize: 8},
headerStyles: {fillColor: [245, 245, 240], textColor: 0}
});
var firstTableID = tableid+i;
// var SecTableID = (tableid+(i+1));
if(document.getElementById(firstTableID))
{
var sem1 = doc.autoTableHtmlToJson(document.getElementById(firstTableID));
}
// if(document.getElementById(SecTableID))
// {
// var sem2 = doc.autoTableHtmlToJson(document.getElementById(SecTableID));
// }
var header = function(data) {
var examName = 'ADMIT CARD : '+$scope.courseNamePDF+' EXAMINATION ' +$scope.batchNamePDF;
var rollNo = 'Reg No : '+value.EnrollmentID;
var stuName = 'Name : '+value.Firstname+' '+value.Lastname;
var centerName = 'Centre : '+$scope.centerNamePDF;
// if(hallticket_type == 'SEM' || hallticket_type == 'REG')
// {
// var semName = 'SEM'+(i+1)+'&'+(i+2);
// }
// else if(hallticket_type == 'LAT')
// {
// var semName = 'SEM'+(i+3)+'&'+(i+4);
// }
var semName = 'SEM'+(i+1);
fileName = value.EnrollmentID+'-'+value.Firstname+value.Lastname+$scope.courseNamePDF+semName+'.pdf';
doc.setDrawColor(0);
doc.setFillColor(245, 245, 240);
doc.rect(150, 30, 395, 60,'FD');
doc.setFontSize(12);
doc.setTextColor(40);
doc.setFontStyle('normal');
doc.addImage(dataURL, 'jpeg', 75, 35, 50, 50);//university logo location
doc.addImage(profiledataURL, 'jpeg', 470, 100, 60, 60);//student profile location
doc.setFontSize(22);
doc.text(160,50,$scope.universityNamePDF);
doc.setFontSize(10);
doc.text(160,65,$scope.universityAddressPDF);
doc.setFontSize(10);
doc.text(160,88,$scope.universityEmailPDF);
doc.rect(45, 100, 400, 60);
doc.rect(445, 100, 100, 60);
doc.line(45, 125, 445, 125);
doc.setFontSize(10);
doc.setFontType("bold");
doc.text(80,115,examName);
doc.setFontType("normal");
doc.text(50,140,rollNo);
doc.text(230,140,stuName);
doc.text(50,155,centerName);
//footer content
var footerNote1 ="Note : 1. Without Identification Card Candidates shallnot Allowed to write for examination.";
var footerNote2 ="2. For further instructions refer to the facing sheet of the Answer book before writting examination.";
var footerNote3 ="3. Carrying Mobile phone to the examination hall is strictly prohibited.";
var footerNote4 ="4. Attend the examintaion as per mentioned above.";
var footerNote_student_sign ="Signature of the Student";
var footerNote_controller_sign ="Controller of Examination";
doc.setFontSize(8);
doc.text(40,doc.internal.pageSize.height - 150,footerNote1);
doc.text(70,doc.internal.pageSize.height - 140,footerNote2);
doc.text(70,doc.internal.pageSize.height - 130,footerNote3);
doc.text(70,doc.internal.pageSize.height - 120,footerNote4);
doc.text(40,doc.internal.pageSize.height - 50,footerNote_student_sign);
doc.text(450,doc.internal.pageSize.height - 50,footerNote_controller_sign);
};
// var autoTableEndPosYvalue = 0;
// if(sem1 == "")
// {
// autoTableEndPosYvalue = 200;
// }
// else
// {
// autoTableEndPosYvalue = 300;
// }
// var options2 = {
// addPageContent: header,
// margin: {
// top: 100
// },
// startY: doc.autoTableEndPosY() + autoTableEndPosYvalue,
// theme :'grid'
// };
var options1 = {
addPageContent: header,
margin: {
top: 200
},
theme :'grid'
};
if(sem1 != "")
{
doc.autoTable(sem1.columns, sem1.data, options1);
}
// if(sem2 != "")
// {
// doc.autoTable(sem2.columns, sem2.data, options2);
// }
if(sem2 != "" || sem1 != "")
{
doc.save(fileName);
}
}//End of semlength for loop
}
}// END of studentID Check
});//END of For Each
}
$scope.ok = function () {
$modalInstance.close($scope.selected.item);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
}]);

View File

@ -0,0 +1,183 @@
<style>
b.fa {
display: inline-block;
border-radius: 60px;
box-shadow: 0px 0px 2px #FF6600;
padding: 0.5em 0.6em;
}
b.fa1 {
display: inline-block;
border-radius: 60px;
box-shadow: 0px 0px 2px green;
padding: 0.5em 0.6em;
}
a {
color: #007AFF;
}
</style>
<!-- start: PAGE TITLE -->
<section id="page-title">
<div class="row">
<div class="col-sm-8">
<h1 class="mainTitle" translate="Examination Attendance">{{ mainTitle }}</h1>
<span class="mainDescription">Examination Attendance </span>
</div>
<div ncy-breadcrumb></div>
</div>
</section>
<!-- end: PAGE TITLE -->
<!-- start: LIST GROUP -->
<div class="container-fluid container-fullw bg-white" ng-controller="examAttendanceCtrl" data-ng-init="init()">
<div class="row">
<form name="Form" id="form" novalidate method="post">
<fieldset>
<legend>Search</legend>
<div class="col-md-12 ">
<div class="col-md-3 form-group">
<label>
University
</label>
<select class="form-control" name="university" tabindex="1" id="university"
ng-model="myModel.universityName"
ng-options="i.universityName for i in university" ng-change="">
<option value=""> Select University</option>
</select>
<!-- <pre>{{myModel.universityName | json}}</pre>-->
</div>
<div class="col-md-3 form-group">
<label>
Course
</label>
<select ui-select2 class="form-control" name="course" tabindex="4" id="course"
ng-model="myModel.courseName" ng-change="captureCourseName();">
<option value=""> Select Course</option>
<option ng-repeat="courseDetails in myModel.universityName.courseDetails" value="{{courseDetails.CourseID}}"><span ng-show="courseDetails.CourseCode != ''"><strong>{{courseDetails.CourseName}}</strong></span></option>
</select>
<!-- <pre>{{myModel.courseName|json}}</pre> -->
</div>
<div class="col-md-2 form-group">
<label>
Batch Name
</label>
<select ui-select2 class="form-control" name="batch" tabindex="4" id="batch"
ng-model="myModel.batchName" ng-change="captureBatchName()"
>
<option value=""> Select Batch</option>
<option ng-repeat="batchDetails in myModel.universityName.batchDetails" value="{{batchDetails.BatchCode}}"><span ng-show="batchDetails.BatchCode != ''"><strong>{{batchDetails.BatchName}}</strong></span></option>
</select>
<!-- <pre>{{myModel.batchName | json}}</pre> -->
</div>
<div class="col-md-2 form-group">
<br>
<button type="button" ladda="ldloading1.zoom_in" tabindex="5" class="btn btn-wide btn-info" data-style="zoom-in" ng-click="getStudentDetails(Form,myModel);">GET STUDENTS</button>
</div>
</div>
<div class="row">
<div class="col-md-5 form-group">
<label>
Center Name
</label>
<select class="form-control" name="center" tabindex="4" id="center"
ng-model="myModel.centerName"
ng-options="centerDetails.CenterName for centerDetails in centers" ng-change="">
<option value=""> Center Name</option>
</select>
<!-- <pre>{{myModel.centerName | json}}</pre> -->
</div>
<div class="col-md-3 form-group">
<!-- <div class="pull-right"> -->
<br>
<button type="button" ladda="ldloading1.zoom_in" tabindex="6" class="btn btn-wide btn-success" data-style="zoom-in" ng-click="generateHallTicket();">GENERATE</button>
<!-- </div> -->
</div>
</div>
</fieldset>
<div class="row">
<div class="col-md-12" ng-if="isLoaderShow">
<center> <h1>{{isLoaderTxt}}</h1> </center>
</div>
</div>
<div class="row">
<div class="col-md-12" ng-if="isTblShow">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th><input type="checkbox" ng-model="myModel.all" id="all" name="all" ng-click="isCheckAll($event);" class="form-control"></th>
<th ng-click="sort('Firstname')">Student Name
<span class="glyphicon sort-icon" ng-show="sortKey=='Firstname'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
</th>
<!-- <th ng-click="sort('UniversityShortName')">University Short Name -->
<!-- <span class="glyphicon sort-icon" ng-show="sortKey=='UniversityShortName'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span> -->
<!-- </th> -->
<th ng-click="sort('MobileNumber')">Mobile No
<span class="glyphicon sort-icon" ng-show="sortKey=='MobileNumber'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
</th>
<th ng-click="sort('EmailID')">EmailID
<span class="glyphicon sort-icon" ng-show="sortKey=='EmailID'" ng-class="{'glyphicon-chevron-up':reverse,'glyphicon-chevron-down':!reverse}"></span>
</th>
<!-- <th>Status</th> -->
<!-- <th style="text-align: center;"> Action -->
<!-- </th> -->
</tr>
</thead>
<tbody dir-paginate="p in studentInfo|orderBy:sortKey:reverse|filter:search:strict|itemsPerPage:10">
<tr>
<td><input type="checkbox" ng-checked="myModel.all" id="{{p.StudentID}}" name="{{p.StudentID}}" class="form-control" ng-click="isClick($event);"></td>
<td>{{p.Firstname}}{{p.Lastname}}</td>
<!-- <td>{{p.UniversityShortName}}</td> -->
<td>{{p.MobileNumber}}</td>
<td>{{p.EmailID}}</td>
</tr>
</tbody>
</table>
<dir-pagination-controls max-size="10" direction-links="true" boundary-links="true">
</dir-pagination-controls>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- end: LIST GROUP -->

View File

@ -339,6 +339,11 @@
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
</a>
</li>
<li ui-sref-active="active">
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkSuperAdmin()">
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
</a>
</li>
</ul>
</li>
@ -752,6 +757,11 @@
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
</a>
</li>
<li ui-sref-active="active">
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkAdmin()">
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
</a>
</li>
</ul>
</li>
@ -1056,6 +1066,7 @@
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
</a>
</li>
</ul>
</li>
@ -1279,6 +1290,11 @@
<span class="title" translate="sidebar.nav.hallTicket.GENERATEHALLTICKET">GENERATE HALLTICKET</span>
</a>
</li>
<li ui-sref-active="active">
<a ui-sref="app.hallTicket.examAttendance" ng-click="checkStaff()">
<span class="title" translate="sidebar.nav.hallTicket.EXAMATTENDANCE">EXAMATTENDANCE</span>
</a>
</li>
</ul>
</li>