#! /usr/bin/env perl package API::Projects; use v5.10.1; use strict; use warnings; use Carp; use ACU::API::Base; use ACU::LDAP; sub add($$;$) { my $project_name = shift; my $flavor = shift; my $year = shift; if ($year and $year ne LDAP::get_year) { croak "Impossible d'ajouter un projet d'une autre année : non implémenté"; } my $res = API::Base::send('ResultHandler', "projects/projects/add.xml", [ project_name => $project_name, flavor => $flavor, ]); if ($res->{result} ne '0') { croak "Erreur durant l'ajout : ".$res->{message}; } return $res; } sub get($;$) { my $project_name = shift; my $year = shift; my $url; if ($year) { $url = "projects/projects/get/$project_name/$year.xml"; } else { $url = "projects/projects/get/$project_name.xml"; } my $res = API::Base::get('ProjectHandler', $url); if ($res->{result} ne '0') { croak "Erreur durant la récupération du projet : " . $res->{message}; } return $res; } sub get_users($;$) { my $project_name = shift; my $year = shift; my $url; if ($year) { $url = "projects/projects/users/$project_name/$year.xml"; } else { $url = "projects/projects/users/$project_name.xml"; } my $res = API::Base::get('ProjectMemberHandler', $url); if ($res->{result} ne '0') { croak "Erreur durant l'ajout : " . $res->{message}; } return $res; } sub get_groups($;$) { my $project_name = shift; my $year = shift; my $url; if ($year) { $url = "projects/groups/groups/$project_name/$year.xml"; } else { $url = "projects/groups/groups/$project_name.xml"; } my $res = API::Base::get('ProjectGroupHandler', $url); if ($res->{result} ne '0') { croak "Erreur durant la récupération : " . $res->{message}; } return $res; } sub add_grades($;$) { my %data = ( project_name => shift ); my $y = shift; if ($y) { $data{year} = $y; } my $res = API::Base::send('ResultHandler', "projects/notes/add.xml", \%data); if ($res->{result} ne '0') { croak "Erreur durant l'ajout : " . $res->{message}; } return $res; } sub add_traces($$;$) { my %data = ( project_name => shift, trace_name => shift, ); my $y = shift; if ($y) { $data{year} = $y; } my $res = API::Base::send('ResultHandler', "projects/traces/add.xml", \%data); if ($res->{result} ne '0') { croak "Erreur durant l'ajout : " . $res->{message}; } return $res; } sub gen_groups($;$) { my $project_name = shift; my $year = shift; my %data; $data{project_name} = $project_name if ($project_name); $data{year} = $year if ($year); my $url; if ($year) { $url = "projects/groups/generate/$project_name/$year.xml"; } else { $url = "projects/groups/generate/$project_name.xml"; } my $res = API::Base::send('ResultHandler', $url, %data); if ($res->{result} ne '0') { croak "Erreur lors de la génération de groupes : " . $res->{message}; } return $res; } 1;