#!/usr/bin/perl
use strict;
use warnings;
use perunServicesInit;
use perunServicesUtils;
use Perun::Agent;
use JSON::XS;
use Data::Dumper;

our $SERVICE_NAME = "teams_provisioning";
our $PROTOCOL_VERSION = "3.0.0";
my $SCRIPT_VERSION = "3.0.1";

perunServicesInit::init;
my $DIRECTORY = perunServicesInit::getDirectory;
my $data = perunServicesInit::getHashedHierarchicalData;

#Constants
our $A_RES_ALIAS;             *A_RES_ALIAS =         \'urn:perun:resource:attribute-def:def:o365ResourceAlias';
our $A_USER_LOGIN;            *A_USER_LOGIN=             \'urn:perun:user:attribute-def:def:login-namespace:mu';

my @teams = ();
foreach my $resourceId ($data->getResourceIds()) {
		my $resAlias = $data->getResourceAttributeValue(resource=>$resourceId, attrName=>$A_RES_ALIAS);
        print $resAlias . "\n";
        my $team->{"identity"} = $resAlias;
        my @members = ();
        foreach my $memberId ($data->getMemberIdsForResource(resource => $resourceId)) {
			my $userLogin = $data->getUserAttributeValue(member=> $memberId, attrName=>$A_USER_LOGIN);
            print $userLogin . "\n";
            push @members, $userLogin;
        };
		@members = sort(@members);
        $team->{"members"} = \@members;
        $team->{"owners"} = ();
        push @teams, $team;
};

my $fileName = "$DIRECTORY/teams.json";
open FILE, ">$fileName" or die "Cannot open $fileName: $! \n";
print FILE JSON::XS->new->utf8->pretty->canonical->encode(\@teams);
close FILE or die "Cannot close $fileName: $! \n";

perunServicesInit::finalize;
