app.controller('roleCtrl', function (ErrorSvc, $scope, $role) {
  $scope.permissions = {};
  $role.getPermissions().then(function (response) {
    $scope.permissions = response.data;
  });

  $scope.togglePermissions = function (value) {
    if (!$scope.item.permissions) {
      $scope.item.permissions = {};
    }
    for (var entity in $scope.permissions) {
      if (!$scope.item.permissions[entity]) {
        $scope.item.permissions[entity] = {};
      }
      for (var action in $scope.permissions[entity]) {
        if (action === 'label') {
          continue;
        }
        $scope.item.permissions[entity][action] = value;
      }
    }
  };

  $scope.getError = function (role, roles) {
    if (!role) {
      return ErrorSvc.validationArgs(true);
    }

    if (!role.name) {
      return ErrorSvc.validationArgs(true, "Introduza um nome para o perfil de utilizador");
    }

    if (role.name.trim() === "") {
      return ErrorSvc.validationArgs(true, "Introduza um nome para o perfil de utilizador");
    }

    for (var i = 0; i < roles.length; i++) {
      if (roles[i].name == role.name && roles[i]._id != role._id) {
        return ErrorSvc.validationArgs(true, "Perfil de utilizador já existente");
      }
    }

    return ErrorSvc.validationArgs(false);
  };

  $scope.blank = function () {
    var permissions = {};
    for (var entity in $scope.permissions) {
      permissions[entity] = {};
      for (var action in $scope.permissions[entity]) {
        if (action === 'label') {
          continue;
        }
        permissions[entity][action] = true;
      }
    }

    return {
      name: "",
      approvalLevel: 0,
      admin: false,
      permissions: permissions
    };
  };
});