(function () { 'use strict'; var app = angular.module('relationships'); var templatePath = modulesSharedResourcesUrl + 'Modules/Relationships/Views/'; app.directive('relationshipTypesList', ['config', 'relationshipsDataContext', 'OrganisationAdminService', 'rolesAdminDataContext', '$modal', function (config, relationshipsDataContext, OrganisationAdminService, rolesAdminDataContext, $modal) { return { restrict: 'E', templateUrl: templatePath + 'types.html', link: link }; function link($scope, elem, attrs) { $scope.availableRolesLoaded = false; $scope.relationshipTypesLoaded = false; $scope.orderByPredicate = 'name'; $scope.topLevelOrgId = null; $scope.availableRoles = []; function getRelationshipTypes() { OrganisationAdminService.getTopLevelOrg().then(function (org) { $scope.topLevelOrgId = org.id; }); relationshipsDataContext.getRelationshipTypes(config.appCode).then(function (data) { $scope.relationshipTypes = data; $scope.relationshipTypesLoaded = true; }); } function getAvailableRoles() { // Get roles for MSA (Myshowcase.me Admin) rolesAdminDataContext.getAllRoles(config.appCode).then(function (data) { for (i in data) { $scope.availableRoles.push(data[i]); } if (config.appCode == 'MSA') { // Get roles for MS (Myshowcase.me) rolesAdminDataContext.getAllRoles('MS').then(function (data2) { for (i in data2) { $scope.availableRoles.push(data2[i]); } $scope.availableRolesLoaded = true; }); } else { $scope.availableRolesLoaded = true; } }); } $scope.getRoleName = function (roleId, type) { if (!roleId) type.roleName = 'None selected'; for (var i = 0; i < $scope.availableRoles.length; i++) { if ($scope.availableRoles[i].id === roleId) type.roleName = $scope.availableRoles[i].displayName; } return; } $scope.deleteRelationshipType = function (type) { relationshipsDataContext.deleteRelationshipType(type).then(function () { getRelationshipTypes(); }); } $scope.manageRelationshipType = function (type) { $modal.open({ templateUrl: templatePath + 'managetype.html', controller: manageTypeController, size: 'sm', backdrop: 'static', resolve: { type: function () { return type; }, topLevelOrgId: function () { return $scope.topLevelOrgId; }, getRelationshipTypes: function () { return getRelationshipTypes; }, availableRoles: function () { return $scope.availableRoles; }, } }); } var manageTypeController = function ($scope, $modalInstance, type, topLevelOrgId, getRelationshipTypes, availableRoles) { $scope.availableRoles = availableRoles; $scope.type = type ? angular.copy(type) : { name: '', description: '', org: topLevelOrgId, firstActorRole: null, secondActorRole: null, }; $scope.saveType = function () { if ($scope.type.id) { relationshipsDataContext.updateRelationshipType($scope.type).then(function () { getRelationshipTypes(); $modalInstance.dismiss('cancel'); }); } else { relationshipsDataContext.createRelationshipType($scope.type).then(function () { getRelationshipTypes(); $modalInstance.dismiss('cancel'); }); } }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; } getRelationshipTypes(); getAvailableRoles(); } }]); })();