source: trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Json/Timeline.pm @ 1678

Last change on this file since 1678 was 1678, checked in by nanardon, 8 years ago

Fix typo make start/end of timeline not correctly set

File size: 3.9 KB
Line 
1package LATMOS::Accounts::Web::Controller::Json::Timeline;
2use Moose;
3use namespace::autoclean;
4
5use DateTime;
6use Date::Parse;
7
8BEGIN { extends 'Catalyst::Controller'; }
9
10=head1 NAME
11
12LATMOS::Accounts::Web::Controller::Json::Timeline - Catalyst Controller
13
14=head1 DESCRIPTION
15
16Catalyst Controller.
17
18=head1 METHODS
19
20=cut
21
22
23=head2 index
24
25=cut
26
27sub index :Path :Args(1) {
28    my ( $self, $c, $user ) = @_;
29
30    my $base = $c->model('Accounts')->db;
31    my $ouser = $base->get_object('user', $user)
32        or return;
33
34    my @colors = qw(black silver green blue red);
35    my %colorset;
36
37
38    my $var = {
39        start => $ouser->get_attributes('create'),
40        end => undef,
41        employments => {
42            name => 'Employment',
43            color => '#000000',
44            spans => [],
45            events => [],
46        },
47    };
48
49    foreach my $emp ($ouser->listEmployment) {
50        my $employment = $base->get_object('employment', $emp);
51
52        my $vemp = {
53            name => ($employment->get_attributes('contratType') || ''),
54            start => $employment->get_attributes('firstday'),
55            end => $employment->get_attributes('lastday') || undef,
56        };
57
58        if (!$colorset{$vemp->{name}}) {
59            $colorset{$vemp->{name}} = $colors[0];
60            push(@colors, shift(@colors));
61        }
62        $vemp->{color} =  $colorset{$vemp->{name}};
63
64        if (!$vemp->{end}) {
65            my $dt = DateTime->now();
66            $dt->add(days => 3 * 365);
67            $vemp->{end} = $dt->ymd('-') . ' ' . $dt->hms;
68        }
69
70        $vemp->{start} .= ' 00:00:00';
71        $vemp->{end}   .= ' 23:59:59';
72
73        push(@{$var->{employments}{spans}}, $vemp);
74    }
75
76    my $dtnow = DateTime->now;
77    push(@{$var->{employments}{events}}, {
78            name => $c->loc('Today'),
79            date => $dtnow->ymd . ' ' . $dtnow->hms,
80    });
81    push(@{$var->{employments}{events}}, {
82            name => $c->loc('Created'),
83            date => $ouser->get_attributes('create'),
84    });
85    if (my $expire = $ouser->get_attributes('expire')) {
86        push(@{$var->{employments}{events}}, {
87                name => $c->loc('Expire'),
88                date => $expire,
89                options => {
90                    type => 'alarm',
91                }
92        });
93    }
94    if (my $endcircuit = $ouser->get_attributes('endcircuit')) {
95        push(@{$var->{employments}{events}}, {
96                name => $c->loc('End of entrance'),
97                date => $endcircuit,
98                options => {
99                    type => 'alarm',
100                }
101        });
102    }
103    if (my $date = $ouser->get_attributes('startEmployment')) {
104        push(@{$var->{employments}{events}}, {
105                name => $c->loc('Activity start'),
106                date => $date,
107                options => {
108                    type => 'employment',
109                    showdate => 1,
110                }
111        });
112    }
113    if (my $date = $ouser->get_attributes('endEmployment')) {
114        push(@{$var->{employments}{events}}, {
115                name => $c->loc('Activity end'),
116                date => $date,
117                options => {
118                    type => 'employment',
119                    showdate => 1,
120                }
121        });
122    }
123
124    foreach (@{ $var->{employments}{spans} }) {
125        $var->{end}   = $_->{end}   if ((!$var->{end})   || $_->{end} gt $var->{end});
126        $var->{start} = $_->{start} if ((!$var->{start}) || $_->{start} lt $var->{start});
127    }
128    foreach (@{ $var->{employments}{events} }) {
129        $var->{end}   = $_->{date}   if ((!$var->{end})   || $_->{date} gt $var->{end});
130        $var->{start} = $_->{date}   if ((!$var->{start}) || $_->{date} lt $var->{start});
131    }
132
133    $c->stash->{data} = $var;
134}
135
136
137
138=encoding utf8
139
140=head1 AUTHOR
141
142Olivier Thauvin,Guyancourt - B1428,+33 1 80285052,
143
144=head1 LICENSE
145
146This library is free software. You can redistribute it and/or modify
147it under the same terms as Perl itself.
148
149=cut
150
151__PACKAGE__->meta->make_immutable;
152
1531;
Note: See TracBrowser for help on using the repository browser.