source: trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Json/AccAgeContrat.pm @ 1570

Last change on this file since 1570 was 1485, checked in by nanardon, 9 years ago

Add account per contract graph

File size: 1.6 KB
Line 
1package LATMOS::Accounts::Web::Controller::Json::AccAgeContrat;
2use Moose;
3use namespace::autoclean;
4
5BEGIN { extends 'Catalyst::Controller'; }
6
7=head1 NAME
8
9LATMOS::Accounts::Web::Controller::Json::Expire - Catalyst Controller
10
11=head1 DESCRIPTION
12
13Catalyst Controller.
14
15=head1 METHODS
16
17=cut
18
19
20=head2 index
21
22=cut
23
24sub index :Path :Args(0) {
25    my ( $self, $c ) = @_;
26
27    my $base = $c->model('Accounts')->db;
28
29    my $graph = {
30        data => [],
31        series => [],
32    };
33
34    my %exists = map { $_ => 1 } $base->search_objects('user', 'active=1');
35    my %create = $base->attributes_summary_by_object('user', 'create');
36    my %contrat = $base->attributes_summary_by_object('user', 'contratType');
37    my @contrat = $base->search_objects('group', 'sutype=contrattype');
38   
39    my %dates;
40    foreach my $user (keys %create) {
41        $exists{$user} or next;
42        foreach my $date (@{ $create{$user} }) {
43            $date or next;
44            $date =~ s/-.*//;
45            my $status = $contrat{$user}[0] or next;
46
47            $dates{$_}{$date} ||= 0 foreach(@contrat);
48            $dates{$status}{$date} ++;
49        }
50    }
51
52    foreach my $status (@contrat) {
53        push(@{ $graph->{data} }, [ map { [ $_, $dates{$status}{$_} +0 ] } sort { $a cmp $b } keys %{ $dates{$status} } ]);
54        push(@{ $graph->{series} }, { label => $status });
55    } 
56   
57    $c->stash->{data} = $graph;
58}
59
60
61
62=encoding utf8
63
64=head1 AUTHOR
65
66Olivier Thauvin,Guyancourt - B1428,+33 1 80285052,
67
68=head1 LICENSE
69
70This library is free software. You can redistribute it and/or modify
71it under the same terms as Perl itself.
72
73=cut
74
75__PACKAGE__->meta->make_immutable;
76
771;
Note: See TracBrowser for help on using the repository browser.