Ignore:
Timestamp:
02/12/16 02:45:46 (8 years ago)
Author:
nanardon
Message:

Stat by employment can be done over user's attributes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Json/Employment.pm

    r1681 r1720  
    3434 
    3535    my $key = $c->req->param('key') || 'department'; 
     36    my @filter = $c->req->param('filter'); 
     37 
     38    my $keyobj = $key =~ m/^(company|department|contratType|manager)$/ 
     39        ? 'employment' 
     40        : 'user'; 
     41 
     42    my $filterobj = @filter[0] =~ m/^(company|department|contratType|manager)=/ 
     43        ? 'employment' 
     44        : 'user'; 
    3645 
    3746    my %end = $base->attributes_summary_by_object('employment', 'lastday'); 
    3847    my %start = $base->attributes_summary_by_object('employment', 'firstday'); 
    39     my %keys = $base->attributes_summary_by_object('employment', $key); 
     48    my %empusers = $base->attributes_summary_by_object('employment', 'user'); 
     49    my %keys = $base->attributes_summary_by_object($keyobj, $key); 
     50 
     51    my %filteredObj = map { $_ => 1 } $base->search_objects($filterobj, @filter); 
    4052 
    4153    my %keysentry; 
     
    4456        next if ($end{$emp}[0] && $end{$emp}[0] lt $now); 
    4557 
     58        if ($filterobj eq 'user') { 
     59            $filteredObj{ $empusers{$emp}[0] } or next; 
     60        } else { 
     61            $filteredObj{ $emp } or next; 
     62        } 
     63  
     64        my $keyvalues = $keyobj eq 'user' 
     65            ? $keys{ $empusers{$emp}[0] } 
     66            : $keys {$emp}; 
     67 
    4668        $employments{ $emp } = { 
    4769           start => $start{$emp}[0], 
    4870           end   => $end  {$emp}[0], 
    49            key   => $keys {$emp}[0], 
     71           key   => $keyvalues, 
    5072       }; 
    51        $keysentry{$keys {$emp}[0] || $c->loc('(none)') } = []; 
     73       $keysentry{ $keyvalues->[0] || $c->loc('(none)') } = []; 
    5274    } 
    5375 
     
    82104            #warn "$cemp $emp" . $employments{$cemp}->{start} . " " . $employments{$cemp}->{end} ; 
    83105            if ($employments{$cemp}->{start} le $emp && ((!$employments{$cemp}->{end}) || $employments{$cemp}->{end} ge $emp)) { 
    84                 my $k = $employments{$cemp}->{key} || $c->loc('(none)'); 
    85                 $sum{$k} ++; 
     106                foreach my $k (@{ $employments{$cemp}->{key} || [ $c->loc('(none)') ] }) { 
     107                    $sum{$k} ++; 
     108                } 
    86109            } 
    87110        } 
Note: See TracChangeset for help on using the changeset viewer.