package Koha::AuthorisedValues;

# Copyright ByWater Solutions 2014
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

use Modern::Perl;

use Carp;

use Koha::Database;

use Koha::AuthorisedValue;

use base qw(Koha::Objects);

=head1 NAME

Koha::AuthorisedValues - Koha AuthorisedValue Object set class

=head1 API

=head2 Class Methods

=cut

=head3 Koha::AuthorisedValues->search();

my @objects = Koha::AuthorisedValues->search($params);

=cut

sub search {
    my ( $self, $params ) = @_;

    my $branchcode = $params->{branchcode};
    delete( $params->{branchcode} );

    my $or =
      $branchcode
      ? {
        '-or' => [
            'authorised_values_branches.branchcode' => undef,
            'authorised_values_branches.branchcode' => $branchcode,
        ]
      }
      : {};
    my $join = $branchcode ? { join => 'authorised_values_branches' } : {};
    return $self->SUPER::search( { %$params, %$or, }, $join );
}

sub categories {
    my ( $self ) = @_;
    my $rs = $self->_resultset->search(
        undef,
        {
            select => ['category'],
            distinct => 1,
            order_by => 'category',
        },
    );
    return map $_->get_column('category'), $rs->all;
}

=head3 type

=cut

sub _type {
    return 'AuthorisedValue';
}

sub object_class {
    return 'Koha::AuthorisedValue';
}

=head1 AUTHOR

Kyle M Hall <kyle@bywatersolutions.com>

=cut

1;
