(function () { "use strict" angular.module('shared') .service('resourceHelper', [ function resourceHelper() { var service = this; service.activityTypesByName = { READ : 'read', LISTEN : 'listen', QUIZ : 'quiz', WORKSHEET : 'worksheet', WATCH : 'watch', INTERACTIVE: 'interactive_lesson' }; service.sitnLevelStageIdMap = { Early: 1, Middle: 2, Upper: 3 }; service.setResourceInfo = setResourceInfo; service.getTitle = getTitle; service.areActivitiesDisabled = areActivitiesDisabled; service.getResourceLevels = getResourceLevels; service.getScienceLevelsForFileCabinet = getScienceLevelsForFileCabinet; service.getSelectedActivities = getSelectedActivities; service.filterSelected = filterSelected; service.quizSelected = quizSelected; service.getSelectedResources = getSelectedResources; function setResourceInfo(resourceInfo) { service.resourceInfo = resourceInfo; service.activities = service.resourceInfo[0].activities; service.resources = angular.copy(_.reduce(resourceInfo, function(memo, value) { memo.push(value['resources'][0]); return memo; }, [])); service.isISL = isActivityType('interactive_lesson'); service.isInteractiveComponent = isActivityType('interactive_component'); service.isSitN = service.resources[0].unitId === 0 && service.resources[0].displayOrder == null; service.isWorksheet = service.activities[0].activity_name === service.activityTypesByName.WORKSHEET; } function isActivityType(activityName) { return _.filter(service.activities, function(activity) { return activity.activity_name === activityName; }).length !== 0; } function getTitle() { return service.isISL && service.resourceInfo[0].resources[0].unitTitle ? (service.resourceInfo[0].resources[0].unitTitle + " Interactive Science Lesson") : service.resourceInfo[0].resources[0].displayTitle; } function areActivitiesDisabled() { return service.activities.length <= 1; } function getResourceLevels() { if(service.isSitN) { return _.reduce(service.resources, function(memo, resource) { var sitnLevels = { 1: 'Early', 2: 'Middle', 3: 'Upper' }; if(sitnLevels[resource.stageId]) { memo.push(sitnLevels[resource.stageId]); } return memo; }, []); } var possibleLevels = ['low', 'mid', 'high']; var foundLevels = _.reduce(service.resources, function(memo, value) { var readingLevel = value.readingLevel; if(memo.indexOf(readingLevel) === -1) { memo.push(readingLevel); } return memo }, []); return _.intersection(possibleLevels, foundLevels); } function getScienceLevelsForFileCabinet(type) { if (type === 'isl') { return ['low-mid', 'high']; } if (type === 'sitn') { return ['early', 'middle', 'upper']; } return ['low', 'mid', 'high']; } function getSelectedActivities() { return filterSelected(service.activities); } function filterSelected(collection) { return collection.filter(function (item) { return item.selected; }) } function quizSelected() { return !!_.filter(getSelectedActivities(), function (item) { return item.activity_name === service.activityTypesByName.QUIZ; }).length } function filterLevel(collection, chosenLevel) { return collection.filter(function (item) { return item.readingLevel === chosenLevel || (service.isSitN && item.stageId == service.sitnLevelStageIdMap[chosenLevel]); }) } function filterPart(collection, chosenPart) { return collection.filter(function(item) { return item.interactiveLessonResourceDeploymentId ? chosenPart[item.displayOrder] : true; }); } function getSelectedResources(chosenLevel, chosenPart) { if(service.resources.length === 1) { return service.resources; } return filterPart(filterLevel(service.resources, chosenLevel), chosenPart); } } ]); })();