Bug 17250 - Koha::AuthorisedValues - Remove GetAuthValCode
[koha.git] / Koha / AuthorisedValues.pm
1 package Koha::AuthorisedValues;
2
3 # Copyright ByWater Solutions 2014
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 3 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use Modern::Perl;
21
22 use Carp;
23
24 use Koha::Database;
25
26 use Koha::AuthorisedValue;
27 use Koha::MarcSubfieldStructures;
28
29 use base qw(Koha::Objects);
30
31 =head1 NAME
32
33 Koha::AuthorisedValues - Koha Authorised value Object set class
34
35 =head1 API
36
37 =head2 Class Methods
38
39 =cut
40
41 =head3 Koha::AuthorisedValues->search();
42
43 my @objects = Koha::AuthorisedValues->search($params);
44
45 =cut
46
47 sub search {
48     my ( $self, $params ) = @_;
49
50     my $branchcode = $params->{branchcode};
51     delete( $params->{branchcode} );
52
53     my $or =
54       $branchcode
55       ? {
56         '-or' => [
57             'authorised_values_branches.branchcode' => undef,
58             'authorised_values_branches.branchcode' => $branchcode,
59         ]
60       }
61       : {};
62     my $join = $branchcode ? { join => 'authorised_values_branches' } : {};
63     return $self->SUPER::search( { %$params, %$or, }, $join );
64 }
65
66 sub search_by_marc_field {
67     my ( $self, $params ) = @_;
68     my $frameworkcode = $params->{frameworkcode} || '';
69     my $tagfield      = $params->{tagfield};
70     my $tagsubfield   = $params->{tagsubfield};
71
72     return unless $tagfield or $tagsubfield;
73
74     return $self->SUPER::search(
75         {   'marc_subfield_structures.frameworkcode' => $frameworkcode,
76             ( defined $tagfield    ? ( 'marc_subfield_structures.tagfield'    => $tagfield )    : () ),
77             ( defined $tagsubfield ? ( 'marc_subfield_structures.tagsubfield' => $tagsubfield ) : () ),
78         },
79         { join => { category => 'marc_subfield_structures' } }
80     );
81 }
82
83 sub search_by_koha_field {
84     my ( $self, $params ) = @_;
85     my $frameworkcode    = $params->{frameworkcode} || '';
86     my $kohafield        = $params->{kohafield};
87     my $category         = $params->{category};
88     my $authorised_value = $params->{authorised_value};
89
90     return unless $kohafield;
91
92     return $self->SUPER::search(
93         {   'marc_subfield_structures.frameworkcode' => $frameworkcode,
94             'marc_subfield_structures.kohafield'     => $kohafield,
95             ( defined $category ? ( category_name    => $category )         : () ),
96             ( $authorised_value ? ( authorised_value => $authorised_value ) : () ),
97         },
98         {   join     => { category => 'marc_subfield_structures' },
99             select   => ['authorised_value'],
100             distinct => 1,
101         }
102     );
103 }
104
105 sub categories {
106     my ( $self ) = @_;
107     my $rs = $self->_resultset->search(
108         undef,
109         {
110             select => ['category'],
111             distinct => 1,
112             order_by => 'category',
113         },
114     );
115     return map $_->get_column('category'), $rs->all;
116 }
117
118 =head3 type
119
120 =cut
121
122 sub _type {
123     return 'AuthorisedValue';
124 }
125
126 sub object_class {
127     return 'Koha::AuthorisedValue';
128 }
129
130 =head1 AUTHOR
131
132 Kyle M Hall <kyle@bywatersolutions.com>
133
134 =cut
135
136 1;