aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Roles/Moderation.pm
blob: fb9ea3a70d04b2df3a2fad139588077f5ccf5172 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package FixMyStreet::Roles::Moderation;
use Moo::Role;

=head2 latest_moderation_log_entry

Return most recent AdminLog object concerning moderation

=cut

sub latest_moderation {
    my $self = shift;

    return $self->moderation_original_datas->search(
        $self->moderation_filter,
        { order_by => { -desc => 'id' } })->first;
}

sub latest_moderation_log_entry {
    my $self = shift;

    my $latest = $self->latest_moderation;
    return unless $latest;

    my $rs = $self->result_source->schema->resultset("AdminLog");
    my $log = $rs->search({
        object_id => $latest->id,
        object_type => 'moderation',
    })->first;
    return $log if $log;

    return $self->admin_log_entries->search({ action => 'moderation' }, { order_by => { -desc => 'id' } })->first;
}

=head2 moderation_history

Returns all moderation history, most recent first.

=cut

sub moderation_history {
    my $self = shift;
    return $self->moderation_original_datas->search(
        $self->moderation_filter,
        { order_by => { -desc => 'id' } })->all;
}

1;