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

(-)a/Koha/Biblio.pm (-9 / +18 lines)
Lines 365-389 sub pickup_locations { Link Here
365
    my ( $self, $params ) = @_;
365
    my ( $self, $params ) = @_;
366
366
367
    Koha::Exceptions::MissingParameter->throw( parameter => 'patron' )
367
    Koha::Exceptions::MissingParameter->throw( parameter => 'patron' )
368
      unless exists $params->{patron};
368
        unless exists $params->{patron};
369
369
370
    my $patron = $params->{patron};
370
    my $patron = $params->{patron};
371
371
372
    my $memory_cache = Koha::Cache::Memory::Lite->get_instance();
372
    my $memory_cache = Koha::Cache::Memory::Lite->get_instance();
373
    my @pickup_locations;
373
    my @pickup_locations;
374
    my $location_items;
374
    foreach my $item ( $self->items->as_list ) {
375
    foreach my $item ( $self->items->as_list ) {
375
        my $cache_key = sprintf "Pickup_locations:%s:%s:%s:%s:%s",
376
        my $cache_key = sprintf "Pickup_locations:%s:%s:%s:%s:%s",
376
           $item->itype,$item->homebranch,$item->holdingbranch,$item->ccode || "",$patron->branchcode||"" ;
377
            $item->itype, $item->homebranch, $item->holdingbranch, $item->ccode || "", $patron->branchcode || "";
377
        my $item_pickup_locations = $memory_cache->get_from_cache( $cache_key );
378
        my $item_pickup_locations = $memory_cache->get_from_cache($cache_key);
378
        unless( $item_pickup_locations ){
379
        unless ($item_pickup_locations) {
379
          @{ $item_pickup_locations } = $item->pickup_locations( { patron => $patron } )->_resultset->get_column('branchcode')->all;
380
            @{$item_pickup_locations} =
380
          $memory_cache->set_in_cache( $cache_key, $item_pickup_locations );
381
                $item->pickup_locations( { patron => $patron } )->_resultset->get_column('branchcode')->all;
382
            $memory_cache->set_in_cache( $cache_key, $item_pickup_locations );
383
        }
384
        push @pickup_locations, @{$item_pickup_locations};
385
        for my $location (@{$item_pickup_locations}) {
386
            push @{ $location_items->{$location} }, $item->itemnumber;
381
        }
387
        }
382
        push @pickup_locations, @{ $item_pickup_locations }
383
    }
388
    }
384
389
385
    return Koha::Libraries->search(
390
    my $resultSet =
386
        { branchcode => { '-in' => \@pickup_locations } }, { order_by => ['branchname'] } );
391
        Koha::Libraries->search( { branchcode => { '-in' => \@pickup_locations } }, { order_by => ['branchname'] } );
392
393
    $resultSet->{_pickup_location_items} = $location_items;
394
395
    return $resultSet;
387
}
396
}
388
397
389
=head3 hidden_in_opac
398
=head3 hidden_in_opac
(-)a/Koha/REST/V1/Biblios.pm (+1 lines)
Lines 573-578 sub pickup_locations { Link Here
573
            my $pickup_locations = $c->objects->search($pl_set);
573
            my $pickup_locations = $c->objects->search($pl_set);
574
            @response = map { $_->{needs_override} = Mojo::JSON->false; $_; } @{$pickup_locations};
574
            @response = map { $_->{needs_override} = Mojo::JSON->false; $_; } @{$pickup_locations};
575
        }
575
        }
576
        @response = map { $_->{pickup_items} = $pl_set->{_pickup_location_items}->{ $_->{library_id} }; $_; } @response;
576
577
577
        return $c->render(
578
        return $c->render(
578
            status  => 200,
579
            status  => 200,
(-)a/api/v1/swagger/definitions/library.yaml (-1 / +7 lines)
Lines 104-109 properties: Link Here
104
  pickup_location:
104
  pickup_location:
105
    type: boolean
105
    type: boolean
106
    description: If the library can act as a pickup location
106
    description: If the library can act as a pickup location
107
  pickup_items:
108
    type:
109
      - array
110
      - 'null'
111
    description: Array of items available for pickup at this library if the library is marked as a pickup location
112
    items:
113
      type: integer
107
  public:
114
  public:
108
    type: boolean
115
    type: boolean
109
    description: If the library is visible to the public
116
    description: If the library is visible to the public
110
- 

Return to bug 36120