(function() { "use strict"; angular .module('shared') .component('lessonPlanner', { templateUrl: '/shared/js/angular/file-cabinet/lesson-planner.html', controller: 'LessonPlanner', bindings: { popover2: '<', popover: '<' } }) .controller('LessonPlanner', ['folderService', 'currentSubFolders', 'MessageBox', '$scope', '$http', 'messageHandler', function LessonPlannerCtrl(folderService, currentSubFolders, MessageBox, $scope, $http, messageHandler) { var ctrl = this; ctrl.$onInit = function () { $scope.lessonName = ''; $scope.weeksList = [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]; $scope.selectedWeek = 4; }; ctrl.setPopover = function (popoverCtrl) { ctrl.popoverCtrl = popoverCtrl; }; ctrl.getPopover = function () { return ctrl.popoverCtrl; }; ctrl.getPopover2 = function () { if (ctrl.popover && ctrl.popover.popover) { return ctrl.popover.popover; } return null; }; ctrl.closePopover = function () { if (ctrl.popoverCtrl) { ctrl.popoverCtrl.close(); } }; ctrl.pressedCreate = function () { $scope.lessonName = folderService.ansiOnly($scope.lessonName); if ($scope.lessonName == null || $scope.lessonName.trim().length < 1) { ctrl.pressedCancel(); return; } var duplicateName = false; var cf = currentSubFolders.getCurrentSubFolders(); for (var counter = 0; counter < cf.length; counter++) { if ($scope.lessonName.trim().toUpperCase() == cf[counter].name.trim().toUpperCase()) { duplicateName = true; break; } } if (duplicateName && !ctrl.messageBoxOpen) { ctrl.messageBoxOpen = true; MessageBox.show({ message: 'Another folder named "' + $scope.lessonName + '" already exists in this location. Do you wish to continue?', responses: [ { subtle: true, id: 'cancelLesson', label: 'Cancel' }, { id: 'continueLesson', confirm: true, label: 'Continue' } ] }).then(function (response) { ctrl.messageBoxOpen = false; if (response.id == 'continueLesson') { ctrl.completeCreateLesson(); } }); } else if (!ctrl.messageBoxOpen) { ctrl.completeCreateLesson(); if (ctrl.popover) { ctrl.popover.close(); } } }; ctrl.completeCreateLesson = function () { var parent = currentSubFolders.getCurrentFolder(); var shared = parent == null ? 'n' : parent.shared_with; var parent_id = parent == null ? -1 : parent.id; var data = { weeks: $scope.selectedWeek, folderName: $scope.lessonName, shared_with: shared, parent_id: parent_id, isEveryone: currentSubFolders.getAreFoldersForEveryone() }; var url = "/api/filecabinet/lessonPlan"; $http.post(url, JSON.stringify(data)).then(onRepos, onError); if (ctrl.popover) { ctrl.popover.close(); } if (ctrl.popover2) { ctrl.popover2.close(); } }; var onRepos = function (response) { var result = null; if (response != null && response.data != null) { result = JSON.parse(response.data); } if (result == null || result.is_lesson_plan == null) { console.error("An error occured in create lessonplan - result code =0"); messageHandler.publishError('Could not create lesson planer.'); } else { result.name = $scope.lessonName; var parent = currentSubFolders.getCurrentFolder(); if (parent != null) { if (parent.children == null) { parent.children = new Array(); } parent.children.unshift(result); currentSubFolders.setCurrentSubFolders(parent, currentSubFolders.getAreFoldersForEveryone() ? 'everyone' : 'private'); } else { currentSubFolders.getCurrentSubFolders().unshift(result); currentSubFolders.setCurrentSubFolders(null, currentSubFolders.getAreFoldersForEveryone() ? 'everyone' : 'private'); } messageHandler.publishSuccess('New lesson plan created.'); } }; var onError = function (reason) { console.error("An error occured in create lessonplan"); console.error(reason); messageHandler.publishError('Could not create lesson planer.'); }; ctrl.pressedCancel = function () { if (ctrl.popover) { ctrl.popover.close(); } if (ctrl.popover2) { ctrl.popover2.close(); } }; }]) }());