#!/usr/bin/perl
use strict;
use warnings;
use perunServicesInit;
use perunServicesUtils;

local $::SERVICE_NAME = "vsup_dc2";
local $::PROTOCOL_VERSION = "3.0.0";
my $SCRIPT_VERSION = "3.0.1";

perunServicesInit::init;
my $DIRECTORY = perunServicesInit::getDirectory;
my $fileName = "$DIRECTORY/$::SERVICE_NAME".".csv";
my $data = perunServicesInit::getHashedHierarchicalData;

#Constants
our $A_LOGIN; *A_LOGIN = \'urn:perun:user_facility:attribute-def:virt:login';
our $A_OSB_ID_DC2; *A_OSB_ID_DC2 = \'urn:perun:user:attribute-def:def:osbIddc2';
our $A_UCO; *A_UCO= \'urn:perun:user:attribute-def:def:ucoVsup';
our $A_VSUP_MAIL; *A_VSUP_MAIL= \'urn:perun:user:attribute-def:def:vsupMail';
our $A_VSUP_PREF_MAIL; *A_VSUP_PREF_MAIL= \'urn:perun:user:attribute-def:def:vsupPreferredMail';

# GATHER USERS
my $users;  # $users->{$osbIddc2}->{ATTR} = $attrValue;

#
# AGGREGATE DATA
#
# FOR EACH USER
foreach my $memberId ($data->getMemberIdsForFacility()) {

	my $osbIddc2 = $data->getUserAttributeValue(member => $memberId, attrName => $A_OSB_ID_DC2);
	my $userLogin = $data->getUserFacilityAttributeValue(member => $memberId, attrName => $A_LOGIN);

	$users->{$osbIddc2}->{$A_UCO} = $data->getUserAttributeValue(member => $memberId, attrName => $A_UCO);
	$users->{$osbIddc2}->{$A_LOGIN} = $userLogin;

	my $prefMail = $data->getUserAttributeValue(member => $memberId, attrName => $A_VSUP_PREF_MAIL);
	my $vsupMail = $data->getUserAttributeValue(member => $memberId, attrName => $A_VSUP_MAIL);

	$users->{$osbIddc2}->{'EMAIL'} = ($prefMail || ($vsupMail || $userLogin . '@vsup.cz'));

}

#
# PRINT user data LDIF
#
open FILE,">$fileName" or die "Cannot open $fileName: $! \n";
binmode FILE, ":utf8";

# FOR EACH USER ON FACILITY
my @keys = sort keys %{$users};
for my $osbIddc2 (@keys) {

	# print attributes, which are never empty
	print FILE $osbIddc2 . "\t" . $users->{$osbIddc2}->{$A_UCO} . "\t" . $users->{$osbIddc2}->{$A_LOGIN} . "\t" . $users->{$osbIddc2}->{'EMAIL'} . "\n";

}

close(FILE);

perunServicesInit::finalize;
