{"version":3,"sources":["site.js","app-build.js","views.js","authInterceptorService.js","authService.js","fileDirectives.js","admin/adminController.js","admin/adminService.js","admin/companyController.js","admin/configController.js","admin/logController.js","admin/reportController.js","admin/requestsController.js","employer/employerFeedbackController.js","employer/employerService.js","login/loginController.js","modal/modalService.js","student/applyController.js","student/feedbackController.js","student/listController.js","student/studentController.js","student/studentService.js"],"names":["siteSettings","serviceBase","appName","unreachableError","serverError","app","angular","module","console","log","alert","ex","config","$stateProvider","$urlRouterProvider","otherwise","state","url","controller","templateUrl","params","internshipId","constant","$httpProvider","interceptors","push","run","$rootScope","title","$templateCache","put","factory","$q","$injector","$location","localStorageService","authInterceptorServiceFactory","request","headers","authData","get","Authorization","token","responseError","rejection","status","authService","reject","logOut","path","$http","authServiceFactory","login","loginData","data","userName","encodeURIComponent","password","deferred","defer","post","Content-Type","then","response","set","access_token","refresh_token","resolve","remove","promise","getFullName","getApiVersion","directive","$parse","restrict","link","scope","element","attrs","modelSetter","fileModel","assign","bind","$apply","files","$scope","$state","modalService","error","$log","message","fullName","name","starid","starId","techId","logout","confirmModal","go","adminServiceFactory","getSemesters","getRequests","getCompany","id","approveCompany","approveRequest","rejectRequest","JSON","stringify","getCompanies","getSettings","getLog","changeSetting","requestDownload","updateEServices","notifyUsers","adminService","companies","editCompany","company_id","$uibModal","open","$uibModalInstance","close","result","editItem","item","_orig","isEditing","deleteItem","alertModal","abortEdit","dir","parse","settings","globals","email","configs","configs_obj","forEach","x","optionName","optionId","optionValue","optionDescription","Object","keys","opt","startsWith","parts","split","length","value","description","emailBase","hasOwnProperty","subjectPart","bodyPart","s_id","b_id","base","subject","body","startEditGlobal","key","thisItem","edit_value","editing","finishEditGlobal","saving","cancelEditGlobal","startEditEmail","body_edit","subject_edit","finishEditEmail","cancelEditEmail","logEntries","getEntries","results","$window","requests","filter","semester","ui","adminAction","requests_bank","update","open_company","companyData","save","companyId","semesterId","isApproved","toString","eservices","reduce","obj","eServicesStatus","download","approve","position","company","credits","reason","hasError","undefined","r","eservices_submission","y","notifyList","shouldExclude","semesters","$filter","employerService","currentPage","guid","$$search","notValid","loading","progress","1","2","3","4","5","setPage","page","currentData","submit","saveProgress","page_prompts","formData","prompts","e","nextPage","$","animate","scrollTop","prevPage","getFeedbackForm","type","tag","validity_message","submission","employerFeedbackServiceFactory","loggingIn","unavailable","login_error","role","error_description","modalServiceFactory","_alertModal","confirm","color","alert_message","bkgcolor","titleBar","isConfirm","cancel","dismiss","ok","studentService","placeholders","supervisor","companySelected","submitting","msg_status","fatalError","customCompany","customJobTitle","customSupervisor","custom","jobTitle","checkErr","startDate","endDate","errMessage","Date","checkCustomJobTitle","jobId","checkCustomSupervisor","supervisorId","errMsg","getCompanyDetails","opportunities","jobs","contacts","company_new","getAllJobs","submitCompany","submitSupervisor","submitJobTitle","submitForm","submitFile","catch","deleteRequest","debug","submissionObj","firstName","lastName","emailAddress","job","termId","parseInt","hoursPerWeek","wages","parseFloat","courseId","fd","FormData","append","file","fileUpload","startDates","statuses","0","moment","valid","empty_message","refreshList","internships","states","i","thisState","status_message","errorText","solicitFeedback","msg","gotoFeedbackPage","studentServiceFactory","delete"],"mappings":"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","file":"app.js","sourcesContent":["var siteSettings = {\r\n serviceBase: 'https://secure2.mnsu.edu/cisinternshiprest/',\r\n appName: 'CIS INTERNSHIP PORTAL',\r\n unreachableError: 'There is a problem reaching the server right now. Please log out and try logging in again. If this problem persists, please contact cis-internship@b507.us or cyrus.azarbod@mnsu.edu. We apologize for the inconvenience.',\r\n serverError: 'Sorry, something went wrong. Please try again. If this problem persists, please contact cis-internship@b507.us or cyrus.azarbod@mnsu.edu. We apologize for the inconvenience.'\r\n};\r\n","var app = angular.module('cisInternshipApp', ['ui.router', 'LocalStorageModule', 'ngSanitize', 'ui.bootstrap']);\r\n\r\nconsole.log(\"Internship Portal Release 1.2.0 (C) 2015-2018 B507 [build time Wed May 23 2018 08:02:46 GMT-0500 (Central Daylight Time)] [release]\");\r\n\r\ntry {\r\n if(typeof(siteSettings)=='undefined') {\r\n console.log(\"FATAL ERROR: No site defined!\");\r\n alert(\"This program has not been deployed properly or has a configuration problem and cannot be used. Please contact your support department and reference this error message: ServiceBase file not defined.\");\r\n var siteSettings={};\r\n }\r\n} catch(ex) {\r\n console.log(\"FATAL ERROR: No site defined!\");\r\n alert(\"This program has not been deployed properly or has a configuration problem and cannot be used. Please contact your support department and reference this error message: ServiceBase file not defined.\");\r\n var siteSettings={};\r\n}\r\n\r\n\r\napp.config(function ($stateProvider, $urlRouterProvider) {\r\n\r\n $urlRouterProvider.otherwise(\"login\");\r\n $stateProvider\r\n\r\n .state(\"login\", {\r\n url: \"/login\",\r\n controller: \"loginController\",\r\n templateUrl: \"login.html\"\r\n })\r\n\r\n .state(\"internship\", {\r\n controller: \"studentController\",\r\n templateUrl: \"student.html\"\r\n })\r\n .state(\"internship.apply\", {\r\n url: \"/internship/apply\",\r\n controller: \"applyController\",\r\n templateUrl: \"apply.html\",\r\n })\r\n .state(\"internship.list\", {\r\n url: \"/internship/list\",\r\n controller: \"listController\",\r\n templateUrl: \"list.html\"\r\n })\r\n .state(\"internship.feedback\", {\r\n url: \"/internship/feedback\",\r\n controller: \"feedbackController\",\r\n templateUrl: \"feedback.html\",\r\n params: {internshipId: -1}\r\n })\r\n\r\n .state(\"admin\", {\r\n controller: \"adminController\",\r\n templateUrl: \"admin.html\"\r\n })\r\n .state(\"admin.requests\", {\r\n url: \"/admin/requests\",\r\n controller: \"requestsController\",\r\n templateUrl: \"requests.html\"\r\n })\r\n .state(\"admin.company\", {\r\n url: \"/admin/company\",\r\n controller: \"companyController\",\r\n templateUrl: \"company.html\"\r\n })\r\n .state(\"admin.report\", {\r\n url: \"/admin/report\",\r\n controller: \"reportController\",\r\n templateUrl: \"report.html\"\r\n })\r\n .state(\"admin.configuration\", {\r\n url: \"/admin/configuration\",\r\n controller: \"configController\",\r\n templateUrl: \"config.html\"\r\n })\r\n .state(\"admin.log\", {\r\n url: \"/admin/log\",\r\n controller: \"logController\",\r\n templateUrl: \"log.html\"\r\n })\r\n\r\n .state(\"employer\", {\r\n url: \"/feedback\",\r\n controller: \"employerFeedbackController\",\r\n templateUrl: \"employerFeedback.html\"\r\n })\r\n\r\n $urlRouterProvider.otherwise('/login');\r\n\r\n});\r\n\r\napp.constant('siteSettings', siteSettings);\r\n\r\napp.config(function ($httpProvider) {\r\n $httpProvider.interceptors.push('authInterceptorService');\r\n});\r\n\r\napp.run(['$rootScope', function ($rootScope) {\r\n $rootScope.title = siteSettings.appName;\r\n}]);","angular.module('cisInternshipApp').run(['$templateCache', function($templateCache) {$templateCache.put('login.html','
\"Minnesota

{{ appName }}



× {{login_error}}

\"Loading...\"
');\n$templateCache.put('apply.html','

Application For Internship Credit


Please fill out all fields on this form. After submitting your request for internship credits, your request will be reviewed by the Computer Information Science department. Once your request is approved, you may register for your credits.

After you complete your internship, you need to come back to this web site and complete the Student Feedback form. Choose \"Applications & Feedback\" on the left sidebar to access your internships and submit feedback after the internship has completed.



Internship Information

You must select a company.

You must select a job position.

You must select a supervisor.

(enddate | date:\\'yyyy-MM-dd\\')) }\" ng-model=\"response.startDate\" id=\"if_startDate\" name=\"startdate\" type=\"date\">

Start Date is required

(enddate | date:\\'yyyy-MM-dd\\')) }\" class=\"form-control\" id=\"if_endDate\" ng-model=\"response.endDate\" name=\"enddate\" ng-change=\"checkErr(startdate,enddate)\">

End Date is required

{{errMessage}}

Course is required

= 48 && event.charCode <= 57)\" name=\"hours\" ng-model=\"response.hoursPerWeek\" id=\"if_hpw\" placeholder=\"\" required>
hours/week

Hours per week is required

$

Wages is missing or invalid

Semester is required

credits

Number of credits is missing or should be less than 4

A valid internship contract, offer letter and/or DARS must be uploaded

Accepted file formats: PDF, TXT (plain text), RTF (rich text format), DOC and DOCX (Microsoft Word), and ZIP.

If you are applying to Project Maverick, B507, or Apogee you only need to submit your DARS report. For all other companies you must also include a cover letter or job description. You must create a ZIP file when uploading multiple documents – the system only allows one file upload per application.

The maximum allowed file upload size is 10 MB.


  {{msg_status}}
');\n$templateCache.put('companyAdd.html','

Company Information

This form allows you to add a new company that is not currently listed.

Before adding a company, please make absolutely sure that your company is not listed under any other possible name. For example, you should not try to add \"Bureau 507\" since it already exists as \"B507\".

Once you\\'ve added a new company, you will also need to provide your supervisor\\'s name on the application.

New company additions must be approved by the internship coordinator. Your request for a new company will be simultaneously submitted along with your internship credit request.

Company Name
Address

Phone
Web Site
Primary E-mail Address
');\n$templateCache.put('feedback.html','

Internship Feedback



Loading, please wait...

 
Step {{key}}
{{prompt.prompt}} {{prompt.value}}{{prompt.prompt}}{{prompt.prompt}}{{prompt.prompt}}Worst Best{{prompt.prompt}}   {{prompt.prompt}}
{{prompt.prompt}}
 {{rating[1]}}
{{row[1]}}
 
');\n$templateCache.put('list.html','

Currently You do not applied for internship credits

Your Internship Applications


Here you can view your current pending or approved internship requests.

If you made any errors in your submission for an internship, you may cancel the submission on this page.

If an internship request has been approved, you will have the option to leave feedback about your experience. Your feedback is required to receive course credit. Once you have completed submitting your feedback, an E-mail request will be sent to your supervisor to request his or her feedback.

If your supervisor has not responded to the feedback request, you may also send a reminder E-mail to your supervisor from this page.

Please do not complete the feedback form until after you have completed your internship!



Loading, please wait...

{{request.job.jobTitle}} at {{request.company.name}}


Start and End Dates{{ moment(request.startDate).format(\\'MMMM Do, YYYY\\')}} through {{moment(request.endDate).format(\\'MMMM Do, YYYY\\') }}
Supervisor Name{{request.contact.firstName}} {{request.contact.lastName}}
Credits{{request.credits}} credit(s) {{semesters.hasOwnProperty(request.termId) ? \\'for \\' + semesters[request.termId] : \\'\\'}}
Status{{statuses.hasOwnProperty(states[request.internshipId]) ? statuses[states[request.internshipId]] : \\'Unknown status \\' + states[request.internshipId]}} – {{request.denialReason}}
Please contact the Internship Coordinator for further information.

 

');\n$templateCache.put('student.html','
');\n$templateCache.put('modal.html','

{{titleBar}}

');\n$templateCache.put('admin.html','
');\n$templateCache.put('company.html','

Companies


Company NameAddressPhone NumberMain E-mailWeb SitePublic Sector 
{{company.name}} {{company.address}}, {{company.city}}, {{company.state}} {{company.postalCode}}, {{company.country}}


{{company.phone}} {{company.email}} {{company.website}} {{company.isPublicSector ? \\'Yes\\' : \\'No\\'}}
');\n$templateCache.put('companyAddAdmin.html','

Company Information

This form allows you to add a new company that is not currently listed.

Before adding a company, please make absolutely sure that your company is not listed under any other possible name. For example, you should not try to add \"Bureau 507\" since it already exists as \"B507\".

Once you\\'ve added a new company, you will also need to provide your supervisor\\'s name on the application.

New company additions must be approved by the internship coordinator. Your request for a new company will be simultaneously submitted along with your internship credit request.

Company Name
Address

Web Site
Primary E-mail Address
');\n$templateCache.put('companyEdit.html','

Company Information

Company Name
Address

Web Site
Primary E-mail Address
Supervisors
Job Titles
');\n$templateCache.put('companyModal.html','

Company Information

Company Name{{data.name}}
Address{{data.address}}
{{data.city}}, {{data.state}} {{data.postalCode}}
{{data.country}}
Web Site{{data.website}} Not Provided
Telephone{{data.phone}} Not Provided
Primary Contact E-mail{{data.email}} Not Provided
');\n$templateCache.put('config.html','

Configuration


This page lets you change system settings and edit the contents of E-mail messages which are delivered to the various parties throughout the internship process.


Global Settings

SettingDescriptionValue 
{{key}}{{setting.description}}{{setting.value}}

E-mail Messages

{{setting.description}} [{{setting.base}}]

Subject{{setting.subject}}
Body{{setting.body}}

For dynamic content in E-mail messages, use any of the following tags. They will be replaced when the system generates the E-mail:

  • {id}: Internship ID number
  • {firstName}: Student first name
  • {lastName}: Student last name
  • {e_firstname}: Employer/supervisor first name (only in E-mails to Employers)
  • {credits}: Number of credits student is applying for
  • {company}: Name of company student is applying for (only in Application E-mails)
  • {position}: Job title student is applying for (only in Application E-mails)
  • {feedbackLink}: The full URL for employer feedback submissions (only in E-mails to Employers)
');\n$templateCache.put('log.html','

System Log


Date & TimeUser IDMessage
{{entry.time}}{{entry.userId}}{{entry.message}}
');\n$templateCache.put('rejectModal.html','

Reject Application

You are about to reject the application for {{data.name}} to work at {{data.company}} during {{data.semester}}.

Upon denying a request, an E-mail will be immediately sent to the student containing the reason you give on this page.

Rejection Reason
Please fill out this field.
');\n$templateCache.put('report.html','

Reports


Reports are coming soon.

');\n$templateCache.put('requests.html','

Internship Credit Requests


On this page you can view pending requests for internship credit. You may view the document uploaded by the student as well as approve the request.


Please select a semester and a type of request above.
There are no internship requests matching the selected criteria.
0 && filter.status==\\'true\\'\" style=\"text-align: right\">

Please Wait...
IDStudentTech IDSubmission TimePosition InfoDatesWagesCredit RequestDocE-svcs.Action
{{request.id}}{{request.name}}{{request.techId}}{{request.submitted}}{{request.position}}
at {{request.company}}
with {{request.supervisor}}
{{request.dates}}{{request.hours}} hrs/week
at ${{request.wages.toFixed(2)}}/hr
{{request.credits}} credits for {{request.course}}


= New company that requires separate approval. Click the company name to review and approve.
= New supervisor or job title that will be approved upon approving the internship request.

');\n$templateCache.put('employerFeedback.html','


Loading, please wait...

Internship Feedback - Employer


Thank you for offering an internship to one of our students! Please fill out this feedback form - this information will help us evaluate and continue to improve our courses and curriculum!

Thanks for your time!

If you have any questions, please contact the Internship Coordinator, Cyrus Azarbod, at cyrus.azarbod@mnsu.edu.

If you have any technical problems with this form, please contact the support team at cis-internship@b507.us.


 
Step {{key}}
{{prompt.prompt}} {{prompt.value}}{{prompt.prompt}}{{prompt.prompt}}{{prompt.prompt}}Worst Best{{prompt.prompt}}   {{prompt.prompt}}
{{prompt.prompt}}
 {{rating[1]}}
{{row[1]}}
');}]);","'use strict';\r\napp.factory('authInterceptorService', ['$q', '$injector', '$location', 'localStorageService', function ($q, $injector, $location, localStorageService) {\r\n\r\n var authInterceptorServiceFactory = {};\r\n\r\n var _request = function (config) {\r\n config.headers = config.headers || {};\r\n var authData = localStorageService.get('authorizationData');\r\n if (authData) {\r\n \r\n config.headers.Authorization = 'Bearer ' + authData.token;\r\n }\r\n return config;\r\n }\r\n\r\n var _responseError = function (rejection) {\r\n if (rejection.status === 401) {\r\n var authService = $injector.get('authService');\r\n var authData = localStorageService.get('authorizationData');\r\n if (authData) {\r\n return $q.reject(rejection);\r\n }\r\n authService.logOut();\r\n $location.path('/login');\r\n }\r\n return $q.reject(rejection);\r\n }\r\n\r\n authInterceptorServiceFactory.request = _request;\r\n authInterceptorServiceFactory.responseError = _responseError;\r\n\r\n return authInterceptorServiceFactory;\r\n}]);","'use strict';\r\napp.factory('authService', ['$http', '$q', 'localStorageService', 'siteSettings', function ($http, $q, localStorageService, siteSettings) {\r\n\r\n var serviceBase = siteSettings.serviceBase;\r\n\r\n var authServiceFactory = {};\r\n\r\n authServiceFactory.login = function (loginData) {\r\n\r\n var data = \"grant_type=password&username=\" + loginData.userName + \"&password=\" + encodeURIComponent(loginData.password);\r\n var deferred = $q.defer();\r\n\r\n $http.post(serviceBase + 'api/login', data, { headers: { 'Content-Type': 'application/x-www-form-urlencoded', } }).then(\r\n function (response) {\r\n localStorageService.set('authorizationData', { token: response.data.access_token, refresh_token: response.data.refresh_token, userName: loginData.userName });\r\n deferred.resolve(response);\r\n }, function (response) {\r\n localStorageService.remove('authorizationData');\r\n deferred.reject(response);\r\n }\r\n );\r\n return deferred.promise;\r\n };\r\n\r\n authServiceFactory.logOut = function () {\r\n $http.get(serviceBase + 'api/user/logout').then(function() {\r\n localStorageService.remove('authorizationData');\r\n }, function() {\r\n localStorageService.remove('authorizationData'); \r\n });\r\n };\r\n \r\n authServiceFactory.getFullName = function () {\r\n return $http.get(serviceBase + 'api/user');\r\n };\r\n\r\n authServiceFactory.getApiVersion = function() {\r\n return $http.get(serviceBase+'api/admin/version');\r\n }\r\n \r\n return authServiceFactory;\r\n\r\n}]);\r\n","app.directive('fileModel', ['$parse', function ($parse) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n var model = $parse(attrs.fileModel);\r\n var modelSetter = model.assign;\r\n\r\n element.bind('change', function(){\r\n scope.$apply(function(){\r\n modelSetter(scope, element[0].files[0]);\r\n });\r\n });\r\n }\r\n };\r\n}]);\r\n\r\n// app.directive('validFile', function () {\r\n// var validFormats = ['pdf', 'txt', 'docx', 'doc', 'rtf'];\r\n// return {\r\n// restrict: 'A',\r\n// require: 'fileModel',\r\n// link: function (scope, elem, attrs, ctrl) {\r\n// var file_valid;\r\n// ctrl.$setValidity('validFile', elem.val() != '');\r\n// $(elem).bind('change', function () {\r\n// var value = elem.val();\r\n// if (value != '') {\r\n// var ext = value.substring(value.lastIndexOf('.') + 1).toLowerCase();\r\n// file_valid = validFormats.indexOf(ext) !== -1;\r\n// } else {\r\n// file_valid = false;\r\n// }\r\n// ctrl.$setValidity('validFile', file_valid);\r\n// scope.$apply(function () {\r\n// ctrl.$render();\r\n// });\r\n// });\r\n// }\r\n// };\r\n// });","'use strict';\r\napp.controller('adminController', ['$scope', '$state', 'modalService', 'authService', function ($scope, $state, modalService, authService) {\r\n\r\n authService.getFullName().then(function (response) {\r\n if (response.data.error > 0) {\r\n if (response.status == 401) {\r\n $log.error(\"Not authenticated or authentication expired.\");\r\n $location.path('/login');\r\n return;\r\n }\r\n $log.error(\"An error has occurred.\\nError: \" + response.data.error + \" (\" + response.data.error.message + \")\");\r\n } else {\r\n $scope.fullName = response.data.data.name;\r\n $scope.starid = response.data.data.starId;\r\n $scope.techId = response.data.data.techId;\r\n }\r\n });\r\n\r\n $scope.logout = function () {\r\n modalService.confirmModal(\r\n \"Are you sure you would like to log out?\",\r\n \"Please Confirm\",\r\n \"#600\"\r\n ).then(function() {\r\n authService.logOut();\r\n $state.go(\"login\");\r\n });\r\n };\r\n\r\n}]);","'use strict';\r\napp.factory('adminService', ['$http', 'siteSettings', function ($http, siteSettings) {\r\n\r\n var serviceBase = siteSettings.serviceBase;\r\n\r\n var adminServiceFactory = {};\r\n\r\n adminServiceFactory.getSemesters = function () {\r\n return $http.get(serviceBase + 'api/admin/semester');\r\n };\r\n\r\n adminServiceFactory.getRequests = function() {\r\n return $http.get(serviceBase + 'api/admin/request');\r\n }\r\n\r\n adminServiceFactory.getCompany = function(id) {\r\n return $http.get(serviceBase + 'api/admin/company/'+id);\r\n }\r\n \r\n adminServiceFactory.approveCompany = function(id) {\r\n return $http.post(serviceBase + 'api/admin/company/'+id+'/approve');\r\n }\r\n\r\n adminServiceFactory.approveRequest = function(id) {\r\n return $http.post(serviceBase + 'api/admin/request/'+id+'/approve');\r\n }\r\n\r\n adminServiceFactory.rejectRequest = function(id, data) {\r\n return $http.post(serviceBase + 'api/admin/request/'+id+'/reject', JSON.stringify(data));\r\n }\r\n\r\n adminServiceFactory.getCompanies = function() {\r\n return $http.get(serviceBase + 'api/admin/company');\r\n }\r\n \r\n adminServiceFactory.getSettings = function() {\r\n return $http.get(serviceBase + 'api/admin/settings');\r\n }\r\n\r\n adminServiceFactory.getLog = function() {\r\n return $http.get(serviceBase + 'api/admin/log');\r\n }\r\n\r\n adminServiceFactory.changeSetting = function (id, data) {\r\n return $http.post(serviceBase + 'api/admin/settings/'+id, JSON.stringify(data));\r\n };\r\n \r\n adminServiceFactory.requestDownload = function (id) {\r\n return $http.get(serviceBase + '/api/admin/request/'+id+'/file');\r\n };\r\n\r\n adminServiceFactory.updateEServices = function(data) {\r\n return $http.post(serviceBase + 'api/admin/eservices', JSON.stringify(data));\r\n }\r\n\r\n adminServiceFactory.notifyUsers = function(data) {\r\n return $http.post(serviceBase + 'api/admin/notify',JSON.stringify(data));\r\n }\r\n \r\n return adminServiceFactory;\r\n\r\n}]);","'use strict';\r\napp.controller('companyController', ['$scope', '$state', 'modalService', 'adminService', 'authService', function ($scope, $state, modalService, adminService, authService) {\r\n\r\n adminService.getCompanies().then(function(response) {\r\n $scope.companies = response.data.data;\r\n })\r\n\r\n $scope.editCompany = function (company_id) {\r\n var uibmodal = $uibModal.open({\r\n templateUrl: 'companyEdit.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n }\r\n });\r\n return uibmodal.result; \r\n };\r\n\r\n $scope.editItem = function(item) {\r\n item._orig = JSON.stringify(item);\r\n item.isEditing=true;\r\n }\r\n $scope.deleteItem = function(item) {\r\n modalService.confirmModal(\"Are you sure you want to delete company \" + item.name + \"? This action cannot be undone.\",\r\n \"Please Confirm\")\r\n .then(function() {\r\n modalService.alertModal(\"Deleting companies is not yet implemented.\",false,\"Not Yet Ready\",\"#600\");\r\n })\r\n }\r\n\r\n $scope.abortEdit = function(item) {\r\n console.dir(item);\r\n item = JSON.parse(item._orig)\r\n item.isEditing=false;\r\n }\r\n}]);","'use strict';\r\napp.controller('configController', ['$scope', '$state', 'modalService', 'adminService', function ($scope, $state, modalService, adminService) {\r\n\r\n $scope.settings = {};\r\n\r\n $scope.settings.globals = {}\r\n $scope.settings.email = {}\r\n\r\n adminService.getSettings().then(function(response) {\r\n var configs = response.data.data;\r\n var configs_obj = {}\r\n\r\n configs.forEach(function(x) {\r\n configs_obj[x.optionName] = {optionId: x.optionId, optionValue: x.optionValue, optionDescription: x.optionDescription};\r\n })\r\n\r\n Object.keys(configs_obj).forEach(function(opt) {\r\n\r\n var x = configs_obj[opt];\r\n\r\n // If the setting starts with \"email\" we do special handling; if not, we just add it to globals.\r\n if (opt.startsWith(\"email.\")) {\r\n // Get the name of the email option\r\n var parts = opt.split(\".\");\r\n if (parts.length != 3) {\r\n // This is not an E-mail message. Add as a normal.\r\n $scope.settings.globals[opt] = {id: x.optionId, value: x.optionValue, description: x.optionDescription};\r\n return;\r\n }\r\n // Determine if we have BOTH a body and a subject\r\n var emailBase = \"email.\"+parts[1];\r\n \r\n if (!configs_obj.hasOwnProperty(emailBase+\".subject\") || !configs_obj.hasOwnProperty(emailBase+\".body\")) {\r\n // Not an E-mail message since both parts don't exist.\r\n $scope.settings.globals[opt] = {id: x.optionId, value: x.optionValue, description: x.optionDescription};\r\n return;\r\n }\r\n\r\n // Get both parts\r\n var subjectPart = configs_obj[emailBase+\".subject\"];\r\n var bodyPart = configs_obj[emailBase+\".body\"];\r\n\r\n // Form the email setting record\r\n $scope.settings.email[parts[1]] = {s_id: subjectPart.optionId, b_id: bodyPart.optionId, base: emailBase, subject: subjectPart.optionValue, body: bodyPart.optionValue, description: subjectPart.optionDescription}\r\n return;\r\n }\r\n else {\r\n $scope.settings.globals[opt] = {id: x.optionId, value: x.optionValue, description: x.optionDescription}; \r\n return;\r\n }\r\n\r\n })\r\n\r\n });\r\n\r\n $scope.startEditGlobal = function(key) {\r\n var thisItem = $scope.settings.globals[key];\r\n thisItem.edit_value = thisItem.value;\r\n thisItem.editing=true;\r\n }\r\n $scope.finishEditGlobal = function(key) {\r\n var thisItem = $scope.settings.globals[key];\r\n thisItem.saving=true;\r\n thisItem.value = thisItem.edit_value;\r\n adminService.changeSetting(thisItem.id,thisItem.value).then(function(x) {\r\n thisItem.editing=false;\r\n thisItem.saving=false;\r\n });\r\n }\r\n $scope.cancelEditGlobal = function(key) {\r\n var thisItem = $scope.settings.globals[key];\r\n thisItem.editing=false; \r\n }\r\n\r\n $scope.startEditEmail = function(key) {\r\n var thisItem = $scope.settings.email[key];\r\n thisItem.body_edit=thisItem.body;\r\n thisItem.subject_edit=thisItem.subject;\r\n thisItem.editing=true;\r\n }\r\n $scope.finishEditEmail = function(key) {\r\n var thisItem = $scope.settings.email[key];\r\n thisItem.saving=true;\r\n thisItem.body=thisItem.body_edit;\r\n thisItem.subject=thisItem.subject_edit;\r\n adminService.changeSetting(thisItem.b_id,thisItem.body).then(function () {\r\n adminService.changeSetting(thisItem.s_id,thisItem.subject).then(function() {\r\n thisItem.editing=false;\r\n thisItem.saving=false;\r\n });\r\n });\r\n }\r\n $scope.cancelEditEmail = function(key) {\r\n var thisItem = $scope.settings.email[key];\r\n thisItem.editing=false; \r\n }\r\n\r\n}]);","'use strict';\r\napp.controller('logController', ['$scope', '$location', 'modalService', 'adminService', 'authService', function ($scope, $location, modalService, adminService, authService) {\r\n\r\n $scope.logEntries = null\r\n\r\n $scope.getEntries = function() {\r\n adminService.getLog().then(function (results) {\r\n if (results.data.error > 0) {\r\n $log.error(\"Error \"+results.data.error+\" retrieving requests: \"+results.data.message);\r\n }\r\n else {\r\n $scope.logEntries = results.data.data;\r\n }\r\n }, function() {\r\n modalService.alertModal(\"Something went wrong while retrieving the system log.\",\"Error\",\"#600\"); \r\n });\r\n }\r\n\r\n $scope.getEntries();\r\n\r\n}]);","'use strict';\r\napp.controller('reportController', ['$scope', '$location', 'modalService', 'adminService', function ($scope, $location, modalService, adminService) {\r\n\r\n}]);","'use strict';\r\napp.controller('requestsController', ['$scope', '$location', '$window', '$uibModal', 'modalService', 'adminService', 'authService', 'siteSettings', function ($scope, $location, $window, $uibModal, modalService, adminService, authService, siteSettings) {\r\n\r\n $scope.requests = null\r\n\r\n $scope.filter = {\r\n \"status\": \"\",\r\n \"semester\": \"\"\r\n }\r\n\r\n $scope.ui = {\r\n \"adminAction\": false\r\n }\r\n \r\n $scope.getRequests = function() {\r\n adminService.getRequests().then(function (results) {\r\n if (results.data.error > 0) {\r\n modalService.alertModal(\"Something went wrong retrieving current internship requests.\",\"Error\",\"#600\");\r\n $log.error(\"Error \"+results.data.error+\" retrieving requests: \"+results.data.message);\r\n $scope.ui.adminAction=false; \r\n }\r\n else {\r\n $scope.requests_bank = results.data.data;\r\n $scope.ui.adminAction=false;\r\n $scope.update();\r\n }\r\n }, function(results) {\r\n modalService.alertModal(\"Something went wrong retrieving current internship requests.\",false,\"Error\",\"#600\");\r\n });\r\n }\r\n\r\n $scope.open_company = function(id) {\r\n adminService.getCompany(id).then(\r\n function(response) {\r\n var companyData = response.data.data;\r\n $uibModal.open({\r\n templateUrl: 'companyModal.html',\r\n controller: function ($scope, $uibModalInstance, data) {\r\n $scope.data=data;\r\n $scope.close = function() {\r\n $uibModalInstance.close(\"\");\r\n }\r\n $scope.save = function() {\r\n $uibModalInstance.close(\"approve\");\r\n }\r\n },\r\n resolve: {\r\n data: function() {\r\n return companyData;\r\n }\r\n }\r\n }).result.then(function(data) {\r\n if (data == \"approve\") {\r\n adminService.approveCompany(companyData.companyId).then(function(response) { \r\n $scope.getRequests();\r\n },function(response) {\r\n modalService.alertModal(\"Something went wrong approving the company: \"+response.data.message,false,\"Error\",\"#600\");\r\n })\r\n }\r\n });\r\n }\r\n )\r\n }\r\n\r\n $scope.update = function() {\r\n if (!$scope.filter.semester || $scope.filter.semester == \"\") {\r\n return;\r\n }\r\n if (!$scope.filter.status || $scope.filter.status == \"\") {\r\n return;\r\n }\r\n\r\n $scope.requests = $scope.requests_bank.filter(function(x) {\r\n return x.semesterId == $scope.filter.semester &&\r\n x.isApproved.toString() == $scope.filter.status\r\n })\r\n $scope.eservices = $scope.requests.reduce(function(obj, x) {\r\n obj[x.id] = (x.eServicesStatus > 0);\r\n return obj;\r\n }, {});\r\n //console.dir($scope.eservices);\r\n }\r\n\r\n $scope.download = function(request) {\r\n adminService.requestDownload(request.id).then(function(response) {\r\n var url = siteSettings.serviceBase + 'api/admin/file?id='+response.data.data;\r\n $window.open(url, \"_self\");\r\n });\r\n }\r\n\r\n \r\n $scope.approve = function(request) {\r\n modalService.confirmModal(\r\n \"Are you sure you want to approve the internship for \" + request.name + ' for the position \"' + request.position + '\" at ' +request.company+\"? This request is for \"+request.credits+\" credits during the \"+request.semester+\" semester.\",\r\n \"Confirm Approval\").then(function() {\r\n $scope.ui.adminAction=true;\r\n adminService.approveRequest(request.id).then(function() {\r\n $scope.getRequests();\r\n }, function() {\r\n modalService.alertModal(\"Something went wrong approving the request.\",false,\"Error\",\"#600\");\r\n $scope.ui.adminAction=false;\r\n })\r\n })\r\n }\r\n\r\n $scope.reject = function(request) {\r\n $uibModal.open({\r\n templateUrl: 'rejectModal.html',\r\n controller: function ($scope, $uibModalInstance, data) {\r\n $scope.data=data;\r\n $scope.close = function() {\r\n $uibModalInstance.close();\r\n } \r\n $scope.save = function () {\r\n console.dir($scope.data.reason)\r\n $scope.data.hasError=false;\r\n if ($scope.data.reason == '' || $scope.data.reason === undefined) {\r\n $scope.data.hasError = true;\r\n return;\r\n }\r\n $uibModalInstance.close($scope.data.reason);\r\n };\r\n },\r\n resolve: {\r\n data: function() {\r\n return request;\r\n }\r\n }\r\n }).result.then(function(r) {\r\n if (!r) {\r\n return;\r\n }\r\n $scope.ui.adminAction=true; \r\n adminService.rejectRequest(request.id,r).then(function(response) { \r\n $scope.getRequests();\r\n },function(response) {\r\n modalService.alertModal(\"Something went wrong rejecting the request: \"+response.data.message,false,\"Error\",\"#600\");\r\n $scope.ui.adminAction=false; \r\n })\r\n });\r\n }\r\n\r\n $scope.updateEServices = function() {\r\n \r\n var eservices_submission = {}\r\n Object.keys($scope.eservices).forEach(function (item) {\r\n $scope.requests.forEach(function(y) {\r\n if (y.id == item) {\r\n if (y.eServicesStatus!=2) {\r\n eservices_submission[item] = ($scope.eservices[item]===true?1:0);\r\n }\r\n }\r\n })\r\n });\r\n \r\n adminService.updateEServices(eservices_submission);\r\n \r\n }\r\n\r\n $scope.notifyUsers = function() {\r\n var notifyList = Object.keys($scope.eservices).filter(function(x) { \r\n var shouldExclude = false;\r\n $scope.requests.forEach(function(y) {\r\n if (y.id == x) {\r\n if (y.eServicesStatus==2) { shouldExclude = true; }\r\n }\r\n })\r\n if (shouldExclude==true) return false;\r\n return $scope.eservices[x] == 1;\r\n });\r\n if (notifyList.length==0) {\r\n modalService.alertModal(\"There are no pending notifications to deliver. Please first check off at least one internship as approved in E-services.\",false,\"Information\");\r\n return;\r\n }\r\n modalService.confirmModal(\"Are you sure you would like to send E-mail notifications to \"+notifyList.length+\" student(s)?\",\"Please Confirm\",\"#AC9000\").then(function() {\r\n // Generate array\r\n console.dir(notifyList);\r\n adminService.notifyUsers(notifyList).then(function(response) {\r\n var results = response.data.data;\r\n console.dir(results);\r\n modalService.alertModal(\"Success! The selected students have been informed that their requests have been approved and that they may register for their credit in E-services.\",false,\"Success\",\"#060\");\r\n Object.keys(results).forEach(function(x) {\r\n console.dir(x);\r\n $scope.requests.forEach(function(y) {\r\n if (y.id == x) {\r\n y.eServicesStatus = 2;\r\n }\r\n });\r\n })\r\n }, function(response) {\r\n modalService.alertModal(\"Something went wrong while delivering E-mails.\",false,\"Error\",\"#600\");\r\n console.dir(response);\r\n });\r\n })\r\n }\r\n adminService.getSemesters().then(function (results) {\r\n if (results.data.error > 0) {\r\n $log.error(\"Error \"+results.data.error+\" retrieving semesters: \"+results.data.message);\r\n }\r\n else {\r\n $scope.semesters = results.data.data;\r\n }\r\n });\r\n\r\n $scope.getRequests();\r\n\r\n}]);","'use strict';\r\napp.controller('employerFeedbackController', ['$scope', '$state', '$location', '$filter', 'employerService', 'authService', 'modalService', function ($scope, $state, $location, $filter, employerService, authService, modalService) {\r\n\r\n $scope.currentPage = 1;\r\n $scope.response = {};\r\n $scope.guid = $location.$$search.guid;\r\n $scope.notValid = false;\r\n $scope.loading = true;\r\n\r\n $scope.progress = {\r\n 1: true,\r\n 2: false,\r\n 3: false,\r\n 4: false,\r\n 5: false\r\n }\r\n\r\n $scope.setPage = function (page) {\r\n var currentData = {\r\n currentPage: $scope.currentPage,\r\n progress: $scope.progress,\r\n submit: false,\r\n response: $scope.response\r\n };\r\n employerService.saveProgress($scope.guid, JSON.stringify(currentData)).then(function () {\r\n $scope.loading = false;\r\n $scope.page_prompts = $scope.formData.prompts.filter(function (e) {\r\n return e.page == page;\r\n })\r\n });\r\n };\r\n\r\n $scope.nextPage = function () {\r\n $(\"html, body\").animate({\r\n scrollTop: 0\r\n }, \"slow\");\r\n $scope.loading = true;\r\n $scope.currentPage++;\r\n if ($scope.currentPage > 5) $scope.currentPage = 5;\r\n $scope.progress[$scope.currentPage] = true;\r\n $scope.setPage($scope.currentPage);\r\n }\r\n\r\n $scope.prevPage = function () {\r\n $(\"html, body\").animate({\r\n scrollTop: 0\r\n }, \"slow\");\r\n $scope.loading = true;\r\n $scope.currentPage--;\r\n if ($scope.currentPage == 0) $scope.currentPage = 1;\r\n $scope.setPage($scope.currentPage);\r\n }\r\n\r\n employerService.getFeedbackForm($scope.guid).then(function (response) {\r\n if (response.status == 200) {\r\n $scope.formData = response.data.data;\r\n // populate response with all static values\r\n var statics = $scope.formData.prompts.filter(function (x) {\r\n return x.type == 'static'\r\n });\r\n statics.forEach(function (x) {\r\n $scope.response[x.tag] = x.value;\r\n });\r\n\r\n console.log(\"Local state:\");\r\n console.dir({\r\n \"page\": $scope.currentPage,\r\n \"progress\": $scope.progress,\r\n \"response\": $scope.response\r\n });\r\n // if state was provided, load it\r\n if ($scope.formData.state != undefined && $scope.formData.state != '') {\r\n var state = JSON.parse($scope.formData.state);\r\n console.log(\"State from submission:\");\r\n console.dir(state);\r\n if (state.currentPage != undefined) {\r\n $scope.currentPage = state.currentPage;\r\n }\r\n if (state.progress != undefined) {\r\n $scope.progress = state.progress;\r\n }\r\n if (state.response != undefined) {\r\n $scope.response = state.response;\r\n }\r\n }\r\n $scope.setPage($scope.currentPage);\r\n\r\n } else {\r\n $scope.notValid = true;\r\n $scope.validity_message = response.data.message;\r\n }\r\n $scope.loading = false;\r\n }, function (response) {\r\n $scope.notValid = true;\r\n $scope.validity_message = response.data.message;\r\n $scope.loading = false;\r\n });\r\n\r\n\r\n $scope.submit = function () {\r\n modalService.confirmModal(\r\n 'Are you ready to submit your feedback?',\r\n 'Please Confirm'\r\n ).then(function () {\r\n $scope.loading = true;\r\n var submission = {\r\n \"currentPage\": $scope.currentPage,\r\n \"progress\": $scope.progress,\r\n \"submit\": true,\r\n \"response\": $scope.response\r\n };\r\n employerService.saveProgress($scope.guid, JSON.stringify(submission)).then(function () {\r\n $scope.loading = false;\r\n modalService.alertModal(\"Your feedback has been successfully submitted! Thank you for your time!\",\r\n false, \"Success!\", \"#060\");\r\n $(\"html, body\").animate({\r\n scrollTop: 0\r\n }, \"slow\");\r\n $state.go(\"login\");\r\n }, function () {\r\n $scope.loading = false;\r\n modalService.alertModal(\"Something went wrong while submitting your feedback. Please try again.\",\r\n false,\r\n \"Error\", \"#600\");\r\n })\r\n })\r\n };\r\n\r\n}]);","'use strict';\r\napp.factory('employerService', ['$http', 'siteSettings', function ($http, siteSettings) {\r\n\r\n var serviceBase = siteSettings.serviceBase;\r\n\r\n var employerFeedbackServiceFactory = {};\r\n\r\n employerFeedbackServiceFactory.getFeedbackForm = function(id) {\r\n return $http.get(serviceBase + \"api/employer/\" + id);\r\n }\r\n employerFeedbackServiceFactory.saveProgress = function(id, data) {\r\n return $http.post(serviceBase + \"api/employer/\"+id, data, { headers: { 'Content-Type': 'application/json' } } );\r\n }\r\n\r\n return employerFeedbackServiceFactory;\r\n\r\n}]);","'use strict';\r\napp.controller('loginController', ['$scope', '$state', 'authService', 'modalService', 'siteSettings', function ($scope, $state, authService, modalService, siteSettings) {\r\n\r\n //Intialize the login variables\r\n $scope.loginData = {\r\n userName: \"\",\r\n password: \"\"\r\n };\r\n\r\n $scope.appName = siteSettings.appName;\r\n\r\n $scope.loggingIn = true;\r\n $scope.unavailable=true;\r\n\r\n authService.getApiVersion().then(function(response) {\r\n $scope.loggingIn=false;\r\n $scope.unavailable=false; \r\n console.log(\"Backend API version \"+response.data);\r\n }, function(error) {\r\n $scope.unavailable=true;\r\n $scope.loggingIn = false;\r\n modalService.alertModal('The server is currently unavailable. This may mean the application is currently under construction or is having a problem. Please try again later. If this problem persists please contact cis-internship@b507.us for assistance.', false, 'Application Unavailable', '#600');\r\n });\r\n\r\n $scope.login = function () {\r\n\r\n // show the login spinner\r\n $scope.loggingIn=true;\r\n $scope.login_error = '';\r\n\r\n authService.login($scope.loginData).then(function (response) {\r\n authService.getFullName().then(function (response) {\r\n if (response.data.error == 0) {\r\n if (response.data.data.role == \"faculty\") {\r\n $state.go('admin.requests');\r\n } else {\r\n $state.go( \"internship.apply\" );\r\n }\r\n } else {\r\n $scope.login_error = \"There was a problem logging into the server. Please try again later. (code \" + response.data.error + \", \" + response.data.error.message + \")\";\r\n $scope.loggingIn = false;\r\n }\r\n });\r\n }, function (response) {\r\n console.dir(response);\r\n if (response.data===null) {\r\n $scope.login_error = \"Unable to reach the server. Please try again later.\";\r\n }\r\n else {\r\n $scope.login_error = response.data.error_description;\r\n }\r\n $scope.loggingIn = false;\r\n });\r\n };\r\n}]);\r\n","'use strict';\r\napp.factory('modalService', ['$uibModal', function ($uibModal) {\r\n var modalServiceFactory = {};\r\n \r\n var _alertModal = function (message, confirm, title, color) {\r\n var uibmodal = $uibModal.open({\r\n templateUrl: 'modal.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.alert_message = message;\r\n $scope.bkgcolor = (typeof color !== 'undefined') ? color : \"#480059\";\r\n $scope.titleBar = (typeof title !== 'undefined') ? title : \"Message\";\r\n $scope.isConfirm = (typeof confirm !== 'undefined') ? confirm : false;\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n $scope.cancel = function (result) {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n $scope.ok = function (result) {\r\n $uibModalInstance.close(result);\r\n };\r\n }\r\n });\r\n return uibmodal.result; \r\n };\r\n\r\n var _alertModalConfirm = function (message, title, color) {\r\n return _alertModal(message,true,title,color);\r\n }\r\n modalServiceFactory.alertModal = _alertModal;\r\n modalServiceFactory.confirmModal = _alertModalConfirm;\r\n\r\n return modalServiceFactory;\r\n\r\n}]);","'use strict';\r\napp.controller('applyController', ['$scope', '$state', '$uibModal', '$q', 'studentService', 'authService', 'modalService', 'siteSettings', function ($scope, $state, $uibModal, $q, studentService, authService, modalService, siteSettings) {\r\n\r\n $scope.placeholders = {\r\n \"position\": \"Select a company to see available positions.\",\r\n \"supervisor\": \"Select a company to see available supervisors.\"\r\n }\r\n\r\n $scope.companySelected = false;\r\n $scope.submitting = false;\r\n $scope.msg_status = '';\r\n $scope.response = {};\r\n $scope.fatalError = '';\r\n\r\n $scope.ui = {\r\n \"customCompany\": false,\r\n \"customJobTitle\": false,\r\n \"customSupervisor\": false\r\n }\r\n\r\n $scope.custom = {\r\n \"jobTitle\": \"\"\r\n }\r\n\r\n $scope.checkErr = function (startDate, endDate) {\r\n $scope.errMessage = '';\r\n var curDate = new Date();\r\n\r\n if (new Date(startDate) > new Date(endDate)) {\r\n $scope.errMessage = 'Your internship End Date must be after your Start Date.';\r\n return false;\r\n }\r\n };\r\n\r\n $scope.checkCustomJobTitle = function() {\r\n if ($scope.response.jobId == '--new--') {\r\n $scope.ui.customJobTitle=true;\r\n }\r\n else {\r\n $scope.ui.customJobTitle=false;\r\n }\r\n }\r\n\r\n $scope.checkCustomSupervisor = function() {\r\n if ($scope.response.supervisorId == '--new--') {\r\n $scope.ui.customSupervisor=true;\r\n }\r\n else {\r\n $scope.ui.customSupervisor=false;\r\n }\r\n }\r\n\r\n studentService.getSemesters().then(function (results) {\r\n if (results.data.error > 0) {\r\n $scope.fatalError = siteSettings.unreachableError;\r\n $log.error(\"Error \"+results.data.error+\" retrieving semesters: \"+results.data.message);\r\n }\r\n else {\r\n $scope.semesters = results.data.data;\r\n }\r\n }, function() {\r\n $scope.fatalError = siteSettings.unreachableError;\r\n });\r\n\r\n studentService.getCompanies().then(function (results) {\r\n if (results.data.error > 0) {\r\n var errMsg = \"Something went wrong while retrieving the list of companies. Please try again later. If this problem persists, please contact cyrus.azarbod@mnsu.edu.\";\r\n $scope.fatalError = siteSettings.unreachableError;\r\n modalService.alertModal(errMsg,false,\"Error\",\"#600\");\r\n $scope.fatalError=errMsg;\r\n $log.error(\"Error \"+results.data.error+\" retrieving companies: \"+results.data.message);\r\n }\r\n else {\r\n $scope.companies = results.data.data;\r\n }\r\n }, function() {\r\n $scope.fatalError = siteSettings.unreachableError;\r\n });\r\n\r\n authService.getFullName().then(function (response) {\r\n if (response.data.error > 0) {\r\n if (response.status == 401) {\r\n $state.go('login');\r\n return;\r\n }\r\n } else {\r\n $scope.fullName = response.data.data.name;\r\n $scope.starId = response.data.data.starId;\r\n }\r\n }, function() {\r\n $state.go('login');\r\n return;\r\n });\r\n\r\n // Called when a company is selected\r\n $scope.getCompanyDetails = function () {\r\n $scope.companySelected=false; \r\n if ($scope.response.companyId=='--new--') {\r\n $uibModal.open({\r\n templateUrl: 'companyAdd.html',\r\n controller: function ($scope, $uibModalInstance) {\r\n $scope.data={}\r\n $scope.close = function () {\r\n $uibModalInstance.close();\r\n };\r\n $scope.save = function () {\r\n $uibModalInstance.close($scope.data);\r\n };\r\n }\r\n }).result.then(function(r) {\r\n $scope.ui.customCompany=true;\r\n $scope.ui.customSupervisor=true;\r\n $scope.response.companyId = '--new-selected--';\r\n $scope.response.company_new = r;\r\n studentService.getAllJobs().then(function(response) {\r\n $scope.companySelected=true;\r\n $scope.placeholders[\"position\"] = \"Select Position\";\r\n $scope.opportunities = {\r\n jobs: response.data.data\r\n };\r\n })\r\n }, function() {\r\n // No data was entered. Reset the values to their default.\r\n $scope.ui.customCompany=false;\r\n $scope.ui.customSupervisor=false;\r\n $scope.response.companyId = '';\r\n $scope.response.company_new = {};\r\n $scope.placeholders[\"position\"] = \"Select Position\";\r\n $scope.placeholders[\"supervisor\"] = \"Select Supervisor\";\r\n });\r\n return;\r\n }\r\n\r\n $scope.ui.customCompany=false;\r\n $scope.ui.customJobTitle=false;\r\n $scope.ui.customSupervisor=false;\r\n \r\n studentService.getCompanyDetails($scope.response.companyId).then(function (results) {\r\n $scope.placeholders[\"position\"] = \"Select Position\";\r\n $scope.placeholders[\"supervisor\"] = \"Select Supervisor\";\r\n $scope.opportunities = results.data.data;\r\n $scope.companySelected=true;\r\n if ($scope.opportunities.jobs.length==0) {\r\n $scope.placeholders[\"position\"] = \"No Jobs Listed.\";\r\n }\r\n if ($scope.opportunities.contacts.length==0) {\r\n $scope.placeholders[\"supervisor\"] = \"No Supervisors Listed.\";\r\n }\r\n }, function (error) {});\r\n };\r\n \r\n $scope.submit = function() {\r\n\r\n $scope.submitting=true;\r\n $scope.msg_status = 'Submitting your application...';\r\n\r\n $scope.submitCompany()\r\n .then(function() {\r\n return $scope.submitSupervisor($scope.response.companyId)\r\n })\r\n .then(function() {\r\n return $scope.submitJobTitle($scope.response.companyId)\r\n })\r\n .then(function() {\r\n return $scope.submitForm()\r\n })\r\n .then(function() {\r\n return $scope.submitFile()\r\n })\r\n .then(function() {\r\n modalService.alertModal(\r\n \"Your application for internship credit has been successfully submitted! You will receive an E-mail with confirmation once the department has approved your request.\",\r\n false,\r\n \"Thank You!\",\r\n \"#060\"\r\n );\r\n $state.go(\"internship.list\");\r\n $scope.submitting=false;\r\n })\r\n .catch(function(response) {\r\n console.dir(response);\r\n $scope.submitting = false;\r\n if ($scope.response.internshipId) {\r\n studentService.deleteRequest($scope.response.internshipId);\r\n }\r\n $scope.msg_status='Something went wrong. Please try again later or contact cis-internship@b507.us for help.';\r\n }\r\n );\r\n }\r\n\r\n $scope.submitCompany = function() {\r\n var deferred = $q.defer();\r\n // Do we even have a company to submit?\r\n if (!$scope.ui.customCompany) {\r\n console.debug(\"Company not custom.\");\r\n deferred.resolve();\r\n }\r\n else {\r\n console.log(\"Submitting company\");\r\n $scope.msg_status = 'Adding your company...'\r\n\r\n var submission = JSON.stringify($scope.response.company_new);\r\n\r\n studentService.submitCompany(submission).then(\r\n function (response) {\r\n $scope.response.companyId = response.data.data;\r\n console.log(\"Company submitted.\");\r\n deferred.resolve(response);\r\n }, function (response) {\r\n deferred.reject(response);\r\n }\r\n );\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n $scope.submitSupervisor = function() {\r\n var deferred = $q.defer();\r\n if (!$scope.ui.customSupervisor) {\r\n console.debug(\"Supervisor not custom.\");\r\n deferred.resolve();\r\n }\r\n else {\r\n $scope.msg_status = 'Adding your supervisor...'\r\n console.debug(\"Submitting supervisor\");\r\n var submissionObj = {\r\n firstName: $scope.custom.supervisor.firstName,\r\n lastName: $scope.custom.supervisor.lastName,\r\n emailAddress: $scope.custom.supervisor.email\r\n }\r\n var submission = JSON.stringify(submissionObj);\r\n\r\n studentService.submitSupervisor($scope.response.companyId, submission).then(\r\n function (response) {\r\n $scope.response.supervisorId = response.data.data; \r\n console.debug(\"Supervisor submitted.\");\r\n deferred.resolve(response);\r\n }, function (response) {\r\n console.dir(response);\r\n deferred.reject(response);\r\n }\r\n );\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n $scope.submitJobTitle = function() {\r\n var deferred = $q.defer();\r\n if (!$scope.ui.customJobTitle) {\r\n console.debug(\"Job title not custom.\");\r\n deferred.resolve();\r\n }\r\n else {\r\n console.debug(\"Submitting job title\");\r\n $scope.msg_status = 'Adding your job title...'\r\n var submissionObj = {\r\n jobTitle: $scope.custom.job.title\r\n }\r\n var submission = JSON.stringify(submissionObj);\r\n\r\n studentService.submitJobTitle($scope.response.companyId, submission).then(\r\n function (response) {\r\n $scope.response.jobId = response.data.data;\r\n console.debug(\"Job title submitted.\");\r\n deferred.resolve(response);\r\n }, function (response) {\r\n console.dir(response);\r\n deferred.reject(response);\r\n }\r\n );\r\n }\r\n return deferred.promise;\r\n }\r\n\r\n $scope.submitForm = function () {\r\n\r\n var deferred = $q.defer();\r\n \r\n console.debug(\"Submitting application\");\r\n\r\n var submission = JSON.stringify({\r\n \"termId\": $scope.response.termId,\r\n \"startDate\": $scope.response.startDate,\r\n \"endDate\": $scope.response.endDate,\r\n \"companyId\": parseInt($scope.response.companyId),\r\n \"supervisorId\": parseInt($scope.response.supervisorId),\r\n \"jobId\": parseInt($scope.response.jobId),\r\n \"hoursPerWeek\": parseInt($scope.response.hoursPerWeek),\r\n \"wages\": parseFloat($scope.response.wages),\r\n \"credits\": parseInt($scope.response.credits),\r\n \"courseId\": $scope.response.courseId\r\n });\r\n\r\n\r\n // Submit the internship data\r\n studentService.submitForm(submission).then(function (results) {\r\n if (results.status == 200) {\r\n console.debug(\"Application submitted.\"); \r\n $scope.response.internshipId = results.data.data.internshipId;\r\n deferred.resolve();\r\n }\r\n }, function (error) {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n };\r\n\r\n $scope.submitFile = function() {\r\n var deferred = $q.defer();\r\n \r\n console.debug(\"Submitting file\");\r\n $scope.msg_status = 'Uploading your document...'\r\n var fd = new FormData();\r\n fd.append('file', $scope.response.file);\r\n\r\n studentService.fileUpload($scope.response.internshipId, fd).then(function (results) {;\r\n\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n console.debug(\"File submitted.\");\r\n deferred.resolve();\r\n }, function (error) {\r\n deferred.reject();\r\n });\r\n }\r\n}]);\r\n","'use strict';\r\napp.controller('feedbackController', ['$scope', '$state', '$filter', 'modalService', 'studentService', 'authService', function ($scope, $state, $filter, modalService, studentService, authService) {\r\n\r\n $scope.currentPage = 1;\r\n\r\n $scope.response = {};\r\n\r\n $scope.loading = true;\r\n\r\n $scope.internshipId = $state.params.internshipId;\r\n\r\n $scope.progress = {\r\n 1: true,\r\n 2: false,\r\n 3: false,\r\n 4: false,\r\n 5: false\r\n }\r\n\r\n $scope.setPage = function(page) {\r\n studentService.saveProgress($scope.internshipId, JSON.stringify({\r\n currentPage: $scope.currentPage,\r\n progress: $scope.progress,\r\n submit: false,\r\n response: $scope.response\r\n })).then(function() {\r\n $scope.loading=false;\r\n $scope.page_prompts = $scope.formData.prompts.filter(function (e) {\r\n return e.page==page;\r\n })\r\n });\r\n };\r\n\r\n $scope.submit = function() {\r\n modalService.confirmModal(\r\n 'Are you ready to submit your feedback? Upon submission, your supervisor will receive an E-mail requesting their feedback.',\r\n 'Please Confirm'\r\n ).then(function() {\r\n $scope.loading=true;\r\n var submission = {\"currentPage\": $scope.currentPage, \"progress\": $scope.progress, \"submit\": true, \"response\": $scope.response};\r\n studentService.saveProgress($scope.internshipId, JSON.stringify(submission)).then(function() {\r\n $scope.loading=false;\r\n modalService.alertModal(\"Your feedback has been successfully submitted! Your supervisor will now receive an E-mail to request their feedback\",\r\n false, \"Success!\", \"#060\");\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n $state.go('internship.list');\r\n }, function() {\r\n $scope.loading=false;\r\n modalService.alertModal(\"Something went wrong while submitting your feedback. Please try again.\",\r\n false,\r\n \"Error\", \"#600\"); \r\n })\r\n }) \r\n };\r\n\r\n $scope.nextPage = function() {\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n $scope.loading=true;\r\n $scope.currentPage++;\r\n if ($scope.currentPage>5) $scope.currentPage=5;\r\n $scope.progress[$scope.currentPage]=true;\r\n $scope.setPage($scope.currentPage);\r\n }\r\n\r\n $scope.prevPage = function() {\r\n $(\"html, body\").animate({ scrollTop: 0 }, \"slow\");\r\n $scope.loading=true;\r\n $scope.currentPage--;\r\n if ($scope.currentPage==0) $scope.currentPage=1;\r\n $scope.setPage($scope.currentPage);\r\n }\r\n\r\n studentService.getFeedbackForm($scope.internshipId).then(function(response) {\r\n $scope.loading=true;\r\n $scope.formData = response.data.data;\r\n // populate response with all static values\r\n var statics = $scope.formData.prompts.filter(function(x) {return x.type=='static'});\r\n statics.forEach(function (x) {\r\n $scope.response[x.tag]=x.value;\r\n });\r\n\r\n // if state was provided, load it\r\n if ($scope.formData.state != undefined) {\r\n var state = JSON.parse($scope.formData.state);\r\n if (state.currentPage != undefined) {\r\n $scope.currentPage=state.currentPage;\r\n }\r\n if (state.progress != undefined) {\r\n $scope.progress=state.progress;\r\n }\r\n if (state.response != undefined) {\r\n $scope.response=state.response;\r\n }\r\n }\r\n $scope.setPage($scope.currentPage);\r\n }, function(data) {\r\n console.error(\"Incorrect or no Internship ID present, go to Internship List.\");\r\n $state.go('internship.list');\r\n });\r\n\r\n}]);","'use strict';\r\napp.controller(\"listController\", ['$scope', '$state', 'modalService', '$window', 'studentService', 'authService', 'siteSettings', function ($scope, $state, modalService, $window, studentService, authService) {\r\n\r\n $scope.startDates = [];\r\n\r\n $scope.statuses = {\r\n 0: \"Pending Department Approval\",\r\n 1: \"Approved By Department\",\r\n 2: \"Feedack Received - Awaiting Employer Feedback\",\r\n 3: \"Completed!\",\r\n 4: \"Denied\"\r\n };\r\n\r\n $scope.moment = moment;\r\n $scope.valid = [];\r\n $scope.loading=true;\r\n $scope.empty_message=\"You have no pending internship requests.\";\r\n\r\n $scope.semesters = {}\r\n\r\n $scope.refreshList = function() {\r\n $scope.loading=true; \r\n studentService.getRequests().then(function (results) {\r\n $scope.requests = results.data.data.internships;\r\n $scope.states = {};\r\n for (var i = 0; i < results.data.data.states.length; i++) {\r\n var thisState = results.data.data.states[i];\r\n $scope.states[thisState.id] = thisState.state;\r\n }\r\n $scope.loading=false;\r\n }, function (error) {\r\n $scope.loading=false;\r\n if (error.data==null) {\r\n $scope.empty_message=siteSettings.unreachableError;\r\n }\r\n else {\r\n $scope.empty_message=siteSettings.serverError + \" Error code \" + error.data.error + \", message: \" +error.data.message;\r\n }\r\n $scope.requests=[];\r\n });\r\n }\r\n\r\n $scope.deleteRequest = function (request) {\r\n modalService.confirmModal(\r\n 'Are you sure you would like to cancel your internship request for '+request.job.jobTitle+' at '+request.company.name+'? This action cannot be undone; you will need to submit a new application to make corrections.',\r\n 'Please Confirm',\r\n '#600').then(function() {\r\n request.status_message = \"Deleting application...\";\r\n studentService.deleteRequest(request.internshipId).then(function (results) {\r\n $scope.refreshList();\r\n }, function (error) {\r\n var errorText;\r\n if (error.data == null) {\r\n errorText = \"(Unable to reach the server.)\";\r\n }\r\n else {\r\n errorText = \"(Error code \"+error.data.error + \", message \" + error.data.message + \")\";\r\n }\r\n request.status_message = null;\r\n modalService.alertModal('Something went wrong while trying to delete your internship request. Please report this issue to the CIS Internship tech team at cis-internship@b507.us. '+errorText, false, 'Error', '#600');\r\n })\r\n })\r\n };\r\n\r\n $scope.solicitFeedback = function (id) {\r\n modalService.confirmModal('Are you sure you would like to send reminder to submit feedback to your supervisor?', \"Please Confirm\").then(function() {\r\n studentService.solicitFeedback(id).then(function (results) {\r\n modalService.alertModal('An E-mail reminder to submit feedback has been successfully sent to your supervisor.',false,'Success','#060');\r\n }, function (error) {\r\n var msg = \"\";\r\n if (error.data==null) {\r\n msg = \"Could not reach the server. Please try again later.\";\r\n }\r\n else {\r\n msg = error.data.message;\r\n }\r\n modalService.alertModal(msg, false, \"Error\", \"#600\");\r\n });\r\n })\r\n };\r\n\r\n $scope.gotoFeedbackPage = function (internshipId) {\r\n modalService.confirmModal('You are about to begin your feedback submission. You should NOT do this until you have completed your internship! An E-mail will be sent to your internship supervisor requesting their feedback after you have completed your feedback submission.','Begin Feedback').then(function() {\r\n $state.go('internship.feedback',{internshipId: internshipId});\r\n })\r\n };\r\n\r\n studentService.getSemesters().then(function(response) {\r\n response.data.data.forEach(function(data){\r\n $scope.semesters[data[0]] = data[1]\r\n });\r\n })\r\n\r\n $scope.refreshList();\r\n\r\n}]);","'use strict';\r\napp.controller('studentController', ['$scope', '$state', 'modalService', 'authService', function ($scope, $state, modalService, authService) {\r\n \r\n authService.getFullName().then(function (response) {\r\n if (response.data.error > 0) {\r\n if (response.status == 401) {\r\n $log.error(\"Not authenticated or authentication expired.\");\r\n $location.path('/login');\r\n return;\r\n }\r\n $log.error(\"An error has occurred.\\nError: \" + response.data.error + \" (\" + response.data.error.message + \")\");\r\n } else {\r\n $scope.fullName = response.data.data.name;\r\n $scope.starid = response.data.data.starId;\r\n $scope.techId = response.data.data.techId;\r\n }\r\n });\r\n\r\n $scope.logout = function () {\r\n modalService.confirmModal(\r\n \"Are you sure you would like to log out?\",\r\n \"Please Confirm\",\r\n \"#600\"\r\n ).then(function() {\r\n authService.logOut();\r\n $state.go(\"login\");\r\n });\r\n };\r\n\r\n}]);","'use strict';\r\napp.factory('studentService', ['$http', 'siteSettings', function ($http, siteSettings) {\r\n\r\n var serviceBase = siteSettings.serviceBase;\r\n\r\n var studentServiceFactory = {};\r\n\r\n studentServiceFactory.getSemesters = function () {\r\n return $http.get(serviceBase + 'api/Internship/semester');\r\n };\r\n\r\n studentServiceFactory.getCompanies = function () {\r\n return $http.get(serviceBase + 'api/internship/company');\r\n };\r\n\r\n studentServiceFactory.getCompanyDetails = function (data) {\r\n return $http.get(serviceBase + 'api/internship/company/' + data);\r\n };\r\n\r\n studentServiceFactory.getAllJobs = function() {\r\n return $http.get(serviceBase + 'api/internship/job');\r\n };\r\n \r\n studentServiceFactory.submitCompany = function(data) {\r\n return $http.post(serviceBase + 'api/internship/company', data, { headers: { 'Content-Type': 'application/json' } }); \r\n };\r\n\r\n studentServiceFactory.submitSupervisor = function(id, data) {\r\n return $http.post(serviceBase + 'api/internship/contact/'+id, data, { headers: { 'Content-Type': 'application/json' } });\r\n }\r\n\r\n studentServiceFactory.submitJobTitle = function(id, data) {\r\n return $http.post(serviceBase + 'api/internship/job/'+id, data, { headers: { 'Content-Type': 'application/json' } });\r\n }\r\n\r\n studentServiceFactory.submitForm = function (data) {\r\n return $http.post(serviceBase + 'api/internship', data, { headers: { 'Content-Type': 'application/json' } });\r\n };\r\n\r\n studentServiceFactory.fileUpload = function (internshipId, data) {\r\n return $http.post(serviceBase + 'api/internship/'+internshipId+'/upload', data, { headers: { 'Content-Type': undefined } });\r\n };\r\n\r\n studentServiceFactory.getRequests = function () {\r\n return $http.get(serviceBase + 'api/internship');\r\n };\r\n\r\n studentServiceFactory.deleteRequest = function (data) {\r\n return $http.delete(serviceBase + '/api/internship/' + data);\r\n };\r\n\r\n studentServiceFactory.solicitFeedback = function (id) {\r\n return $http.post(serviceBase + 'api/feedback/'+ id + '/solicit');\r\n };\r\n\r\n studentServiceFactory.getFeedbackForm = function(id) {\r\n return $http.get(serviceBase + \"api/feedback/\" + id);\r\n }\r\n\r\n studentServiceFactory.saveProgress = function(id, data) {\r\n return $http.post(serviceBase + \"api/feedback/\"+id, data, { headers: { 'Content-Type': 'application/json' } } );\r\n }\r\n\r\n return studentServiceFactory;\r\n\r\n}]);\r\n"]}