aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB/ResultSet/Contact.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/DB/ResultSet/Contact.pm')
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Contact.pm23
1 files changed, 23 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/Contact.pm b/perllib/FixMyStreet/DB/ResultSet/Contact.pm
index 7b3258262..1643f9931 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Contact.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Contact.pm
@@ -3,6 +3,7 @@ use base 'DBIx::Class::ResultSet';
use strict;
use warnings;
+use POSIX qw(strcoll);
sub me { join('.', shift->current_source_alias, shift || q{}) }
@@ -24,6 +25,28 @@ sub active {
$rs->search( { $rs->me('state') => [ 'unconfirmed', 'confirmed' ] } );
}
+sub translated {
+ my $rs = shift;
+ my $schema = $rs->result_source->schema;
+ $rs->search(undef, {
+ '+columns' => { 'msgstr' => 'translations.msgstr' },
+ join => 'translations',
+ bind => [ 'category', $schema->lang, 'contact' ],
+ });
+}
+
+sub all_sorted {
+ my $rs = shift;
+
+ my @contacts = $rs->translated->all;
+ @contacts = sort {
+ my $a_name = $a->get_extra_metadata('display_name') || $a->get_column('msgstr') || $a->category;
+ my $b_name = $b->get_extra_metadata('display_name') || $b->get_column('msgstr') || $b->category;
+ strcoll($a_name, $b_name)
+ } @contacts;
+ return @contacts;
+}
+
sub summary_count {
my ( $rs, $restriction ) = @_;