public async Task <Guid> AddPermission(AddPermissionCommand command, CancellationToken cancellationToken) { if (command == null) { throw new ArgumentNullException(nameof(command)); } command.EnsureIsValid(); var persistedPermission = await authorizationRepository.GetPermissionsBy(command.Domain, command.Resource, cancellationToken : cancellationToken).ConfigureAwait(false); if (persistedPermission?.Count > 0) { throw new BusinessException(Messages.PermissionAlreadyExist); } var permission = new Permission() { Domain = command.Domain, Name = command.Name, Resource = command.Resource }; await authorizationRepository.AddPermission(permission, cancellationToken).ConfigureAwait(false); return(permission.Id); }