(function() { "use strict"; angular .module('shared') .service('fileCabinetRibbonService', ['$http', 'folders', 'folderService', '$q', function fileCabinetRibbonService($http, folders, folderService, $q) { var self = this; var isBusy = false; var fromLandingPage = false; var registeredScopes = { fileCabinetRibbonScope: null }; // NOTE: we NEED to know the scopes here because we need data only available in the scope // Example: bookAddedToFileCabinetRibbon needs to have access to the ribbon ctrl self.registerFileCabinetRibbonScope = function (fileCabinetRibbonScope) { registeredScopes.fileCabinetRibbonScope = fileCabinetRibbonScope; }; self.getFileCabinetRibbonScope = function () { return registeredScopes.fileCabinetRibbonScope; }; self.emitEventToFileCabinetRibbonScope = function (eventName, data) { if (self.getFileCabinetRibbonScope() !== null) { self.getFileCabinetRibbonScope().$emit(eventName, data); } else { console.error('Failed to send event information to !') } }; self.incrementResourceCount = function() { self.changeResourceCount(1); }; self.decrementResourceCount = function() { self.changeResourceCount(-1); }; self.changeResourceCount = function (val) { var x = $('FileCabinetResourceCount'); if (x) { x.innerHTML = parseInt(x.innerHTML) + val; } }; var _ribbonActive = false; self.ribbonActive = function (isActive) { if (isActive !== undefined) { _ribbonActive = isActive; } return _ribbonActive; }; self.getCurrentFolderObj = function () { var currentFolder = null; if (self.ribbonActive()) { currentFolder = self.getFileCabinetRibbonScope().$ctrl.folderModel.folderObj; } return currentFolder; }; self.closeFileCabinetRibbon = function () { var fileCabinetRibbonScope = self.getFileCabinetRibbonScope(); if (fileCabinetRibbonScope) { fileCabinetRibbonScope.$ctrl.closeRibbon(); } }; self.getIsBusy = function () { return isBusy; }; self.setIsBusy = function (val) { isBusy = val; }; self.getFromLandingPage = function () { return fromLandingPage; }; self.setFromLandingPage = function (val) { fromLandingPage = val; }; var _fileCabinetInfo = {}; self.getFileCabinetFolderList = function () { return $q(function (resolve, reject) { folders.getMyFoldersPromise().then(function (folderList) { // console.log("folderList: %o", folderList); resolve(folderList); }); }); }; self.getFileCabinetFolderResources = function (folderId) { return folderService.getCurrentResourcesForFolder(folderId,folders.getIsLiteracyEditor(),true) .then(function success(currentFolderResources) { return currentFolderResources; }).catch(function failure(reason) { console.error(reason); $q.reject(reason); }); }; self.bookAddedToFileCabinetRibbon = function (id) { return self.getFileCabinetRibbonScope().$ctrl.folderModel.resourceList.some(function (resource) { if (resource.resourceIDs) { return resource.bookId == id || resource.resourceIDs.some(function (childResource) { return childResource.raz_book_id == id; }) } if (resource.materialId) { return resource.materialId == id; } return resource.bookId == id; }); }; self.nonbookAddedToFileCabinetRibbon = function (nonbookId) { return self.getFileCabinetRibbonScope().$ctrl.folderModel.resourceList.some(function (resource) { return resource.nonbookId == nonbookId; }); }; self.currentFolder = function() { return self.getFileCabinetRibbonScope().$ctrl.folderModel.folderObj; }; self.currentResources = function() { return self.getFileCabinetRibbonScope().$ctrl.folderModel.resourceList; }; self.getFileCabinetAssignableFolderResources = function (folderId) { return folderService.getCurrentAssignableResourcesForFolder(folderId) .then(function success(assignableFolderResources) { return assignableFolderResources; }).catch(function failure(reason) { console.error("couldn't get a list of assignable resources in the file cabinet folder"); return $q.reject(reason); }); }; self.addToFileCabinet = function (resourceToAdd, resourceType) { var folderId = resourceToAdd.folderObj ? resourceToAdd.folderObj.id : null; return folderService.addResourceToFolder( folderId, resourceToAdd.folderName, resourceToAdd.bookId || resourceToAdd.nonbookId || resourceToAdd.packId || resourceToAdd.materialId || resourceToAdd.razVideoId, resourceType, resourceToAdd.languageId, null, null, null, folders.getIsLiteracyEditor() ); }; self.removeFromFileCabinet = function (resourceToRemove) { return folderService.removeResourcesActionP( resourceToRemove.folderObj.id, resourceToRemove.groupId, resourceToRemove.typeId, resourceToRemove.languageId, folders.getIsLiteracyEditor() ); }; }]); }());