package RVVote::Chobotnice;

use strict;
use warnings;
use utf8;
use GraphQL::Client;
use YAML;

our $VERSION = '0.01';

sub new {
    my $classname = shift;
    my $url  = shift;
    my $self = {};

    $self->{client} = GraphQL::Client->new(url => $url);

    bless ($self, $classname);
    return $self;
}

sub client {
    my $self = shift;
    return $self->{client};
}

sub get_group_members {
    my $self     = shift;
    my $group_id = shift;

    my $query = qq[
        query MyQuery {
            group(id: "$group_id") {
                memberships {
                    person {
                        username
                        displayName
                        officialLastName
                    }
                }
            }
        }
    ];

    my $res = $self->client->execute($query);
    return undef if $res->{errors};
    return undef if ! $res->{data};

    my @members = ();

    MEMBER:
    foreach my $member ( @{ $res->{data}{group}{memberships} } ) {
        push @members, {
            fullname => $member->{person}{displayName},
            user_id  => lc($member->{person}{username}),
            lastname => $member->{person}{officialLastName},
        };
    }

    return sort { $a->{lastname} cmp $b->{lastname} } @members;
}

1;