epita-std
/
ACU
Archived
1
0
Fork 0
This repository has been archived on 2021-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
ACU/ACU/API/Projects.pm

166 lines
3.0 KiB
Perl

#! /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;