diff options
Diffstat (limited to 'perllib/FixMyStreet/Cobrand/BathNES.pm')
-rw-r--r-- | perllib/FixMyStreet/Cobrand/BathNES.pm | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/Cobrand/BathNES.pm b/perllib/FixMyStreet/Cobrand/BathNES.pm index ea9b26e7a..0ccf488c7 100644 --- a/perllib/FixMyStreet/Cobrand/BathNES.pm +++ b/perllib/FixMyStreet/Cobrand/BathNES.pm @@ -193,24 +193,16 @@ sub categories_restriction { ] } ); } -# Do a manual prefetch, as easier than sorting out quoting 'user' +# Do a manual prefetch of all staff users for contributed_by lookup sub _dashboard_user_lookup { my $self = shift; my $c = $self->{c}; - # Fetch all the relevant user IDs, and look them up - my @user_ids = $c->stash->{objects_rs}->search({}, { columns => [ 'user_id' ] })->all; - @user_ids = map { $_->user_id } @user_ids; - @user_ids = $c->model('DB::User')->search( - { id => { -in => \@user_ids } }, - { columns => [ 'id', 'email', 'phone' ] })->all; - - # Plus all staff users for contributed_by lookup - push @user_ids, $c->model('DB::User')->search( + my @user_ids = $c->model('DB::User')->search( { from_body => { '!=' => undef } }, - { columns => [ 'id', 'email', 'phone' ] })->all; + { columns => [ 'id', 'email' ] })->all; - my %user_lookup = map { $_->id => { email => $_->email, phone => $_->phone } } @user_ids; + my %user_lookup = map { $_->id => $_->email } @user_ids; return \%user_lookup; } @@ -225,6 +217,10 @@ sub dashboard_export_updates_add_columns { push @{$c->stash->{csv}->{columns}}, "staff_user"; push @{$c->stash->{csv}->{columns}}, "user_email"; + $c->stash->{csv}->{objects} = $c->stash->{csv}->{objects}->search(undef, { + '+columns' => ['user.email'], + prefetch => 'user', + }); my $user_lookup = $self->_dashboard_user_lookup; $c->stash->{csv}->{extra_data} = sub { @@ -232,11 +228,11 @@ sub dashboard_export_updates_add_columns { my $staff_user = ''; if ( my $contributed_by = $report->get_extra_metadata('contributed_by') ) { - $staff_user = $user_lookup->{$contributed_by}{email}; + $staff_user = $user_lookup->{$contributed_by}; } return { - user_email => $user_lookup->{$report->user_id}{email} || '', + user_email => $report->user->email || '', staff_user => $staff_user, }; }; @@ -264,6 +260,10 @@ sub dashboard_export_problems_add_columns { "attribute_data", ]; + $c->stash->{csv}->{objects} = $c->stash->{csv}->{objects}->search(undef, { + '+columns' => ['user.email', 'user.phone'], + prefetch => 'user', + }); my $user_lookup = $self->_dashboard_user_lookup; $c->stash->{csv}->{extra_data} = sub { @@ -271,12 +271,12 @@ sub dashboard_export_problems_add_columns { my $staff_user = ''; if ( my $contributed_by = $report->get_extra_metadata('contributed_by') ) { - $staff_user = $user_lookup->{$contributed_by}{email}; + $staff_user = $user_lookup->{$contributed_by}; } my $attribute_data = join "; ", map { $_->{name} . " = " . $_->{value} } @{ $report->get_extra_fields }; return { - user_email => $user_lookup->{$report->user_id}{email} || '', - user_phone => $user_lookup->{$report->user_id}{phone} || '', + user_email => $report->user->email || '', + user_phone => $report->user->phone || '', staff_user => $staff_user, attribute_data => $attribute_data, }; |