'use strict'; /** * controllers for ng-table * Simple table with sorting and filtering on AngularJS */ app.controller('semcoursemapCtrl', ["$scope","$rootScope","toaster", "$filter", "ngTableParams", "API_POINTS", "$localStorage", "$http", "$state", function ($scope,$rootScope,toaster, $filter, ngTableParams, apiPoint, $localStorage, $http, $state) { $scope.myModel = { "studentName": "", "mobileNumber": "", "universityName":"", "semsterName":"" }; $scope.viewPage = { "SubjectDetails":[] }; $scope.editUniversityId = '';//for View Page $scope.editCourseId = '';//for View Page $scope.viewPageSemDropDownShowLoading = true;//for View Page $scope.viewPageSemDropDownShow = false;//for View Page $scope.viewPageSemDropDownShowLoadingTxt = 'Loading...';//for View Page $scope.updateButtonTxt = 'UPDATE';//for View Page $scope.overAllMappedSubjects = [];//for View Page $scope.semDropDownShow = false; $scope.semDropDownShowLoading = false; $scope.saveButtonDisabled = false; $scope.saveButtonTxt = "SAVE"; $rootScope.userType = JSON.parse(localStorage.getItem('localObj')).localType; $scope.semDetailsLoadingStatus = false; $scope.semDetailsLoadingTxt = ""; $scope.label1 = ""; $scope.label2 = ""; $scope.label3 = ""; $scope.label4 = ""; $scope.viewLabel1 = "";//FOr View Page $scope.viewLlabel2 = "";//FOr View Page $scope.viewLlabel3 = "";//FOr View Page $scope.viewLlabel4 = "";//FOr View Page $scope.selectedCourseName = []; $scope.selectedUniversityCourseName = ''; $scope.selectedSemSubjetcsSem1 = []; $scope.selectedSemSubjetcsSem2 = []; $scope.selectedSemSubjetcsSem3 = []; $scope.selectedSemSubjetcsSem4 = []; $scope.selectedSemSubjetcsSem5 = []; $scope.selectedSemSubjetcsSem6 = []; $scope.selectedSemSubjetcsSem7 = []; $scope.selectedSemSubjetcsSem8 = []; $scope.overallSelectedSubjetcs = []; // 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 () { var logcheck = JSON.parse(localStorage.getItem('localObj')); const LOCALTYPE = logcheck.localType; if (logcheck != null && (LOCALTYPE == 'R003' || LOCALTYPE == 'R004' || LOCALTYPE == 'R002' || LOCALTYPE == 'R005' )) { console.log("if"); }else { if(logcheck != null && LOCALTYPE !='R001') { console.log("else if"); $state.go('app.dashboard'); } else { console.log("else else"); //ipCookie.remove('cookiechk'); window.localStorage.clear(); $state.go('login.signin'); } } $scope.semDetailsLoadingStatus = true; $scope.semDetailsLoadingTxt = "Loading..."; 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; //console.log(response.data.universityStatus); } else { $scope.university=""; } }); $scope.selectedCourseNameC = { list: $scope.selectedCourseName, } //For Get All Semesters and Subjetcs Info for View and Edit var getAllSemSubjects = { method: 'GET', url: apiPoint.url + 'getAllSemSubjects/', headers: { 'Content-Type': 'application/json' }, data: { BranchID: JSON.parse(localStorage.getItem('localObj')).localUserID, } }; $http(getAllSemSubjects).then(function (response) { //console.log(response.data.semsubstatus); if (response.data.status==200 && response.data.semsubstatus) { $scope.semDetailsLoadingStatus = false; $scope.existSemesterSubjectMapDetails = response.data.semsubjects; //console.log($scope.existSemesterSubjectMapDetails); //$scope.processDataforViewPage(); } },function(error) { $scope.semDetailsLoadingStatus = true; $scope.semDetailsLoadingTxt = "No Records Found"; }); } //Assign Courses to Course array for Multiple select $scope.testFun = function(){ $scope.selectedUniversityCourseName = $scope.myModel.universityName.courseDetails; //console.log($scope.selectedUniversityCourseName); if($scope.selectedUniversityCourseName.length == 0){ swal('No Courses Available','','info'); } $scope.selectedCourseNameC = { list: $scope.selectedCourseName, } } /* * get course semester,subjects details * created by velz * */ $scope.getSemSubDetails = function(UID,COURSES){ 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 { //alert($scope.prevoiusSelectedCouseType); if(UID == undefined || UID == '') { swal("Select University"); return false; } if(COURSES.list == '') { swal("Select Course"); return false; } if($scope.prevoiusSelectedCouseType.toUpperCase() == 'EAR') { $scope.label1 = "Year 1"; $scope.label2 = "Year 2"; $scope.label3 = "Year 3"; $scope.label4 = "Year 4"; $scope.courseMode = 1; } else { $scope.label1 = "Semester 1"; $scope.label2 = "Semester 3"; $scope.label3 = "Semester 5"; $scope.label4 = "Semester 7"; $scope.courseMode = 0; } $scope.semDropDownShowLoading = false; $scope.semDropDownShow = false; $scope.semDropDownShowLoading = true; var getsubject = { method: 'POST', url: apiPoint.url + 'getSemesterSubjectDetails/', headers: { 'Content-Type': 'application/json' }, data: { universityID : UID, courseID : COURSES, requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID, branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID } }; $http(getsubject).then(function (response) { if(response.data.status == 200) { $scope.semDropDownShowLoading = false; $scope.semDropDownShow = true; $scope.subjects = [];// For Main Dropdown $scope.subjectsFromDBtoComapare = []; //$scope.semesters = response.data.semesterDetails; $scope.subjectsFromDB = response.data.subjectDetails; //Store Response Data to subjectsFromDB angular.forEach($scope.subjectsFromDB,function(value,key){ $scope.subjects.push(value);// For Main Dropdown }); $scope.selectedSubjetcsSem1C = {list: $scope.selectedSemSubjetcsSem1}; $scope.selectedSubjetcsSem2C = {list: $scope.selectedSemSubjetcsSem2}; $scope.selectedSubjetcsSem3C = {list: $scope.selectedSemSubjetcsSem3}; $scope.selectedSubjetcsSem4C = {list: $scope.selectedSemSubjetcsSem4}; $scope.selectedSubjetcsSem5C = {list: $scope.selectedSemSubjetcsSem5}; $scope.selectedSubjetcsSem6C = {list: $scope.selectedSemSubjetcsSem6}; $scope.selectedSubjetcsSem7C = {list: $scope.selectedSemSubjetcsSem7}; $scope.selectedSubjetcsSem8C = {list: $scope.selectedSemSubjetcsSem8}; } },function(error){ $scope.semDropDownShowLoading = false; swal('No Subjetcs Found','','error'); } ); } } /* * Remove Subjects from Master Subjects Arry * after selecting subjects for each semester * created by velz * */ $scope.removeSelectedSubjetcs = function(newsublist){ //Every time copy all subjetcs from subjectsFromDB to ompare angular.forEach($scope.subjectsFromDB,function(value,key){ $scope.subjectsFromDBtoComapare.push(value); }); //For Compare Single Semesters Array and Master Subjetcs Array and remove selected subjects from Master Subjetcs Array angular.forEach(newsublist,function(value,key){ angular.forEach($scope.subjects,function(value2,key2){ if(value.SubjectID == value2.SubjectID) { $scope.subjects.splice(key2,1); } }); }); //For Concat all subjetcs from all semsters. $scope.overallSelectedSubjetcs=[].concat($scope.selectedSubjetcsSem1C.list,$scope.selectedSubjetcsSem2C.list,$scope.selectedSubjetcsSem3C.list,$scope.selectedSubjetcsSem4C.list,$scope.selectedSubjetcsSem5C.list,$scope.selectedSubjetcsSem6C.list,$scope.selectedSubjetcsSem7C.list,$scope.selectedSubjetcsSem8C.list); //For Compare Over all selected subjects And Master Subjetcs to avoid duplicate. angular.forEach($scope.overallSelectedSubjetcs,function(value,key){ angular.forEach($scope.subjectsFromDBtoComapare,function(value2,key2){ if(value.SubjectID != value2.SubjectID) { if ($scope.overallSelectedSubjetcs.indexOf(value2) == -1 && $scope.subjects.indexOf(value2) == -1) { $scope.subjects.push(value2); $scope.subjectsFromDBtoComapare.splice(key2,1); } } }); }); $scope.subjectsFromDBtoComapare = []; } $scope.saveAll = function() { //swal('SAVEALL',$scope.myModel.universityName.universityID,'warning'); var universityID = $scope.myModel.universityName.universityID; var courseIDs = $scope.selectedCourseNameC.list; var sem1 = $scope.selectedSubjetcsSem1C.list; var sem2 = $scope.selectedSubjetcsSem2C.list; var sem3 = $scope.selectedSubjetcsSem3C.list; var sem4 = $scope.selectedSubjetcsSem4C.list; var sem5 = $scope.selectedSubjetcsSem5C.list; var sem6 = $scope.selectedSubjetcsSem6C.list; var sem7 = $scope.selectedSubjetcsSem7C.list; var sem8 = $scope.selectedSubjetcsSem8C.list; var semestersArray = []; for(var i = 1; i<= 8 ;i++) { var s = 'sem'+i; semestersArray.push(eval(s)); } if(universityID == null|| universityID == undefined){ swal("Select University"); return false; } if(courseIDs == '' || courseIDs.length == 0){ swal("Select Course"); return false; } if(sem1.length == 0 && sem2.length == 0 && sem3.length == 0 && sem4.length == 0 && sem5.length == 0 && sem6.length == 0 && sem7.length == 0 && sem8.length == 0){ swal("Select Subjetcs"); return false; } $scope.saveButtonDisabled = true; $scope.saveButtonTxt = "SAVEING..."; swal('This one takes a while..!',' Wait until confirming message.','info'); //console.log(semestersArray); //return false; var saveAllInfo = { method: 'POST', url: apiPoint.url + 'saveAllSemSubMapping/', headers: { 'Content-Type': 'application/json' }, data: { universityID : universityID, courseID : courseIDs, requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID, branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID, Semesters:semestersArray } }; $http(saveAllInfo).then(function(response) { if(response.data.status == 200 && response.data.txtStatus == 1) { //console.log(response); $scope.saveButtonTxt = "SAVED"; swal('Saved!','Good Job','success') $state.go($state.current, {}, {reload: true}); } else if(response.data.status == 200 && response.data.txtStatus == 2){ //console.log(response); $scope.saveButtonTxt = "EXIST"; swal('Record Exists!','Try Edit','warning') $state.go($state.current, {}, {reload: true}); } },function(error){ swal('Some Thing Went Wrong!','Try Later','error') $state.go($state.current, {}, {reload: true}); }); } $scope.processDataforViewPage = function() { //console.log('PROCESS FUNCTION'); var tArry = []; angular.forEach($scope.existSubjectDetails,function(value,key){ //concat all mapped subjects into one single arry for future comparisan purpose. $scope.overAllMappedSubjects.push({'SubjectID':value.SubjectID,'SubjectCode':value.SubjectCode,'SubjectName':value.SubjectName}); if(tArry.indexOf(value.SemesterID) == -1) { tArry.push(value.SemesterID); if(value.SubjectID != null){ $scope.viewPage.SubjectDetails[value.SemesterID]=new Array({'SubjectID':value.SubjectID,'SubjectCode':value.SubjectCode,'SubjectName':value.SubjectName}); } } else { if(value.SubjectID != null){ $scope.viewPage.SubjectDetails[value.SemesterID].push({'SubjectID':value.SubjectID,'SubjectCode':value.SubjectCode,'SubjectName':value.SubjectName}); } } }); // console.log($scope.viewPage.SubjectDetails); //console.log($scope.overAllMappedSubjects); // return false; $scope.selectedSubjetcsSem1ViewPage = {list: $scope.viewPage.SubjectDetails[1]}; $scope.selectedSubjetcsSem2ViewPage = {list: $scope.viewPage.SubjectDetails[2]}; $scope.selectedSubjetcsSem3ViewPage = {list: $scope.viewPage.SubjectDetails[3]}; $scope.selectedSubjetcsSem4ViewPage = {list: $scope.viewPage.SubjectDetails[4]}; $scope.selectedSubjetcsSem5ViewPage = {list: $scope.viewPage.SubjectDetails[5]}; $scope.selectedSubjetcsSem6ViewPage = {list: $scope.viewPage.SubjectDetails[6]}; $scope.selectedSubjetcsSem7ViewPage = {list: $scope.viewPage.SubjectDetails[7]}; $scope.selectedSubjetcsSem8ViewPage = {list: $scope.viewPage.SubjectDetails[8]}; $scope.viewPageSemDropDownShowLoading = false; $scope.viewPageSemDropDownShow = true; angular.forEach($scope.overAllMappedSubjects,function(value,key){ angular.forEach($scope.overAllSubjects,function(value2,key2){ if(value.SubjectID == value2.SubjectID) { $scope.overAllSubjects.splice(key2,1); } }); }); } $scope.setEditId = function (uid,cid,PT,FT,SY) { //alert(uid+'-'+cid+'-'+PT+'-'+FT+'-'+SY); var courseModewithoutnum = ""; if(PT == 'Y001' && FT == 'F002') { var courseMode = (SY.toUpperCase()).substr(-4); courseModewithoutnum = courseMode.substr(0,3); //alert(courseModewithoutnum); if((courseModewithoutnum.toUpperCase()) == 'EAR') { $scope.viewLabel1 = 'Year 1'; $scope.viewLabel2 = 'Year 2'; $scope.viewLabel3 = 'Year 3'; $scope.viewLabel4 = 'Year 4'; $scope.viewPageCourseMode = 1; } else { $scope.viewLabel1 = 'Semester 1'; $scope.viewLabel2 = 'Semester 3'; $scope.viewLabel3 = 'Semester 5'; $scope.viewLabel4 = 'Semester 7'; $scope.viewPageCourseMode = 0; } } $scope.editUniversityId = uid; $scope.editCourseId = cid; $scope.getIndividualCourseSemMappingDetails(uid,cid); } $scope.cancel = function() { $scope.editUniversityId = ''; $scope.editCourseId = ''; $scope.viewPageSemDropDownShow = false; $scope.viewPageSemDropDownShowLoading = true; $scope.viewPage.SubjectDetails[1] = ""; $scope.viewPage.SubjectDetails[2] = ""; $scope.viewPage.SubjectDetails[3] = ""; $scope.viewPage.SubjectDetails[4] = ""; $scope.viewPage.SubjectDetails[5] = ""; $scope.viewPage.SubjectDetails[6] = ""; $scope.viewPage.SubjectDetails[7] = ""; $scope.viewPage.SubjectDetails[8] = ""; } //Get Individual Course Sem Mapping Details for edit page $scope.getIndividualCourseSemMappingDetails = function(uid,cid) { var getIndCourseSemDetails = { method: 'POST', url: apiPoint.url + 'getIndividualCourseSemMappingDetails/', headers: { 'Content-Type': 'application/json' }, data: { universityID : uid, courseID : cid, requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID, branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID } }; $http(getIndCourseSemDetails).then(function(response) { if(response.data.status == 200 && response.data.subjectStatus) { //console.log(response.data); $scope.existSubjectDetails = response.data.subjects; $scope.overAllSubjectsFromDB= response.data.overAllSubjects; $scope.overAllSubjects = []; //$scope.overAllSubjectsFromDBtoCompare = []; //Just Empty array for $scope.modifySelectedSubjetcs funciton comparison use angular.forEach($scope.overAllSubjectsFromDB,function(value,key){ $scope.overAllSubjects.push(value); }); $scope.processDataforViewPage(); } else { // $scope.saveButtonTxt = "EXIST"; swal('Record Not Found!','','error') $state.go($state.current, {}, {reload: true}); } }); } /* * Remove Subjects from Master Subjects Arry for view Page * after selecting/removing subjects for each semester * created by velz * */ $scope.modifySelectedSubjetcs = function(newsublist){ angular.forEach(newsublist,function(value,key){ angular.forEach($scope.overAllSubjects,function(value2,key2){ if(value.SubjectID == value2.SubjectID) { $scope.overAllSubjects.splice(key2,1); } }); }); } /* * After Remove Subject from Individual Semester * get removed item and push it to overAllSubjects array for other semster * created by velz * */ $scope.itemRemove = function(item) { $scope.overAllSubjects.push(item); } /* * Update semster and Subjects Info * created by velz * */ $scope.updateAll = function(UniversityID,CourseID) { var universityID = UniversityID; var courseID = CourseID; var sem1 = $scope.selectedSubjetcsSem1ViewPage.list; var sem2 = $scope.selectedSubjetcsSem2ViewPage.list; var sem3 = $scope.selectedSubjetcsSem3ViewPage.list; var sem4 = $scope.selectedSubjetcsSem4ViewPage.list; var sem5 = $scope.selectedSubjetcsSem5ViewPage.list; var sem6 = $scope.selectedSubjetcsSem6ViewPage.list; var sem7 = $scope.selectedSubjetcsSem7ViewPage.list; var sem8 = $scope.selectedSubjetcsSem8ViewPage.list; var semestersArray = []; for(var i = 1; i<= 8 ;i++) { var s = 'sem'+i; semestersArray.push(eval(s)); } if(universityID == null|| universityID == undefined){ swal("Select University"); return false; } if(courseID == ''){ swal("Select Course"); return false; } if(sem1.length == 0 && sem2.length == 0 && sem3.length == 0 && sem4.length == 0 && sem5.length == 0 && sem6.length == 0 && sem7.length == 0 && sem8.length == 0){ swal("Select Subjetcs"); return false; } //$scope.updateButtonDisabled = true; $scope.updateButtonTxt = "UPDATING..."; swal('This one takes a while..!',' Wait until confirming message.','info'); //console.log(semestersArray); //return false; var updateAllInfo = { method: 'POST', url: apiPoint.url + 'updateAllSemSubMapping/', headers: { 'Content-Type': 'application/json' }, data: { universityID : universityID, courseID : courseID, requestedBy: JSON.parse(localStorage.getItem('localObj')).localUserID, branchId:JSON.parse(localStorage.getItem('localObj')).localBranchID, Semesters:semestersArray } }; $http(updateAllInfo).then(function(response) { console.log(response); if(response.data.status == 200 && response.data.txtStatus) { $scope.updateButtonTxt = "SAVED"; swal('Saved!','Good Job','success') $state.go($state.current, {}, {reload: true}); } },function(error){ swal('Some Thing Went Wrong!','Try Later','error') $state.go($state.current, {}, {reload: true}); }); } $scope.prevoiusSelectedCouseType = ""; $scope.checkCourseMode = function(item) { if(item['ProgramType'] == "Y001" && item['FeesType'] == "F002") { var tempString = item['Sem_Year']; var courseMode = (tempString.toUpperCase()).substr(-4); var courseModewithoutnum = courseMode.substr(0,3); if($scope.prevoiusSelectedCouseType != "" && $scope.prevoiusSelectedCouseType != courseModewithoutnum) { swal('Semester and Year Mode Combination Not Accepted','Please Select Either Year Mode OR Semester Mode Courses','info'); $scope.selectedCourseNameC.list = ""; $scope.prevoiusSelectedCouseType = ""; $scope.semDropDownShow = false; return false; } $scope.prevoiusSelectedCouseType = courseModewithoutnum; } } }]);