--- /dev/null
+(function() {
+ "use strict";
+
+ angular
+ .module("nero.app.cdt")
+ .factory("subjectService", subjectService);
+
+ subjectService.$inject = ["$http", "$q", "promiseCache", "$filter", "errorHandlerService"];
+
+ function subjectService($http, $q, promiseCache, $filter, errorHandlerService) {
+
+ var service = {
+ getSubjects: getSubjects
+ };
+
+ return service;
+
+ /////////////////
+
+ // I get all of the subjects.
+ function getSubjects(groupId, isPersonalGroup) {
+ var config = {};
+ config.params = {
+ cmd: "getSubjects",
+ groupId: groupId,
+ isPersonalGroup: isPersonalGroup
+ };
+
+ return promiseCache({
+ promise: function() {
+ return $http.get(actionURLAjax, config);
+ },
+ ttl: 10000, //10 sec
+ key: JSON.stringify(config.params)
+ })
+ .then(getSubjectsComplete)
+ ["catch"](getSubjectsFailed);
+
+ function getSubjectsComplete(response) {
+ if (response.data.success) {
+ return response.data.subjects;
+ }
+
+ // If success variable is false or undefined then throw an error
+ var message = $filter("translate")("nero.cdt.services.subject.toastr-get-errorMessage");;
+ var error = errorHandlerService.buildErrorObject(response, message);
+ return ($q.reject(message));
+ }
+
+ function getSubjectsFailed(error) {
+ // If message is undefined then throw unknown error. Otherwise, use expected error message.
+ if (!angular.isObject(error.data) || !error.data.message) {
+ var message = $filter("translate")("nero.cdt.services.subject.toastr-get-errorMessage");;
+ return ($q.reject(message));
+ }
+
+ return ($q.reject(error.data.message));
+ }
+ }
+
+ }
+})();