View | Details | Raw Unified | Return to bug 34223
Collapse All | Expand All

(-)a/Koha/Illbackend.pm (-21 / +21 lines)
Lines 48-83 Return a list of existing ILL statuses Link Here
48
sub existing_statuses {
48
sub existing_statuses {
49
    my ( $self, $backend_id ) = @_;
49
    my ( $self, $backend_id ) = @_;
50
50
51
    #FIXME: Currently fetching all requests, it'd be great if we could fetch distinct(status).
51
    # Fetch all existing statuses for the provided backend
52
    # Even doing it with distinct status, we need the ILL request object, so that strings_map works and
52
    my $backend_existing_statuses = Koha::Illrequests->search(
53
    # the ILL request returns the correct status and info respective to its backend.
54
    my $ill_requests = Koha::Illrequests->search(
55
            {backend => $backend_id},
53
            {backend => $backend_id},
56
            # {
54
            {
57
            #     columns => [ qw/status/ ],
55
                columns => [ qw/status/ ],
58
            #     group_by => [ qw/status/ ],
56
                group_by => [ qw/status/ ],
59
            # }
57
            }
60
        );
58
        );
61
59
62
    my @data;
60
    my @data;
63
    while (my $request = $ill_requests->next) {
61
    while (my $backend_existing_status = $backend_existing_statuses->next) {
64
        my $status_data = $request->strings_map;
62
63
        my $illrequest =
64
            Koha::Illrequests->search(
65
                { backend => $backend_id, status => $backend_existing_status->status }
66
            )->last;
65
67
66
        foreach my $status_class ( qw(status_alias status) ){
68
        my $status_data = $illrequest->strings_map;
67
            if ($status_data->{$status_class}){
69
70
        foreach my $status_class (qw(status_alias status)) {
71
            if ( $status_data->{$status_class} ) {
68
                push @data, {
72
                push @data, {
69
                    $status_data->{$status_class}->{str} ? (str => $status_data->{$status_class}->{str}) :
73
                      $status_data->{$status_class}->{str}  ? ( str => $status_data->{$status_class}->{str} )
70
                        $status_data->{$status_class}->{code} ? (str => $status_data->{$status_class}->{code}) : (),
74
                    : $status_data->{$status_class}->{code} ? ( str => $status_data->{$status_class}->{code} )
71
                    $status_data->{$status_class}->{code} ? (code => $status_data->{$status_class}->{code}) : (),
75
                    : (),
72
                }
76
                    $status_data->{$status_class}->{code} ? ( code => $status_data->{$status_class}->{code} ) : (),
77
                };
73
            }
78
            }
74
        }
79
        }
75
    }
80
    }
76
81
77
    # Remove duplicate statuses
78
    my %seen;
79
    @data =  grep { my $e = $_; my $key = join '___', map { $e->{$_}; } sort keys %$_;!$seen{$key}++ } @data;
80
81
    return \@data;
82
    return \@data;
82
}
83
}
83
84
84
- 

Return to bug 34223