=cut
-use strict;
-use warnings;
+use Modern::Perl;
use CGI qw ( -utf8 );
use CGI::Cookie; # need to check cookies before having CGI parse the POST request
use C4::Context;
use C4::Debug;
use C4::Output qw(:html :ajax pagination_bar);
-use C4::Ratings;
use Koha::Ratings;
$rating_value //= '';
if ( $rating_value eq '' ) {
-#### delete
- $rating = DelRating( $biblionumber, $loggedinuser );
+ my $rating = Koha::Ratings->find( { biblionumber => $biblionumber, borrowernumber => $loggedinuser } );
+ $rating->delete if $rating;
}
elsif ( $rating_value and !$rating_old_value ) {
- $rating = Koha::Rating->new( { biblionumber => $biblionumber, borrowernumber => $loggedinuser, rating_value => $rating_value, })->store;
+ Koha::Rating->new( { biblionumber => $biblionumber, borrowernumber => $loggedinuser, rating_value => $rating_value, })->store;
}
elsif ( $rating_value ne $rating_old_value ) {
-#### mod
- $rating = ModRating( $biblionumber, $loggedinuser, $rating_value );
+ my $rating = Koha::Ratings->find( { biblionumber => $biblionumber, borrowernumber => $loggedinuser });
+ $rating->rating_value($rating_value)->store if $rating
}
+my $ratings = Koha::Ratings->search({ biblionumber => $biblionumber });
+my $my_rating = $ratings->search({ borrowernumber => $loggedinuser })->next;
+my $avg = $ratings->get_avg_rating;
+
my %js_reply = (
- rating_total => $rating->{'rating_total'},
- rating_avg => $rating->{'rating_avg'},
- rating_avg_int => $rating->{'rating_avg_int'},
- rating_value => $rating->{'rating_value'},
+ rating_total => $ratings->count,
+ rating_avg => $avg,
+ rating_avg_int => sprintf("%.0f", $avg),
+ rating_value => $my_rating ? $my_rating->rating_value : undef,
auth_status => $auth_status,
);