source: trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Summary/Offices.pm @ 1694

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

speedup office web page

File size: 1.9 KB
Line 
1package LATMOS::Accounts::Web::Controller::Summary::Offices;
2use Moose;
3use namespace::autoclean;
4
5BEGIN {extends 'Catalyst::Controller'; }
6
7=head1 NAME
8
9LATMOS::Accounts::Web::Controller::Summary::Offices - 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')->base;
28
29    my $users = $base->fetchObjectInfo(
30        'user',
31        [ qw(sn givenName) ],
32        'active=1'
33    );
34
35    my $sites = $base->fetchObjectInfo(
36        'site',
37        [ qw(l description) ],
38        'exported=true'
39    );
40
41    my $addresses = $base->fetchObjectInfo(
42        'address',
43        [ qw(user site physicalDeliveryOfficeName telephoneNumber l isMainAddress) ],
44        'exported=true'
45    );
46
47    foreach my $ad (keys %$addresses) {
48        my $sitename = $addresses->{$ad}{site}[0] || $c->loc('(other)');
49
50        my $loc = $addresses->{$ad}{site}[0]
51            ? $sites->{ $addresses->{$ad}{site}[0] }{l}[0]
52            : $addresses->{$ad}{l}[0];
53
54        my $office = $addresses->{$ad}{physicalDeliveryOfficeName}[0] || '';
55
56        my $user = $users->{ $addresses->{$ad}{user}[0] } or next;
57
58        $c->stash->{sites} = $sites;
59
60        push (
61            @{$c->stash->{office}{$sitename}{$office}},
62            {
63                displayName => sprintf('%s %s', $user->{givenName}[0], $user->{sn}[0]),
64                phone => $addresses->{$ad}{telephoneNumber}[0],
65                isMainAddress => $addresses->{$ad}{isMainAddress}[0],
66                id => $ad,
67                user => $addresses->{$ad}{user}[0],
68                l => $loc,
69                site => $sitename,
70            }
71        );
72    }
73}
74
75
76=head1 AUTHOR
77
78olivier
79
80=head1 LICENSE
81
82This library is free software. You can redistribute it and/or modify
83it under the same terms as Perl itself.
84
85=cut
86
87__PACKAGE__->meta->make_immutable;
88
891;
Note: See TracBrowser for help on using the repository browser.