aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/DB')
-rw-r--r--perllib/FixMyStreet/DB/Result/Alert.pm20
-rw-r--r--perllib/FixMyStreet/DB/Result/Questionnaire.pm20
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Alert.pm38
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Comment.pm27
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Problem.pm30
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm18
6 files changed, 152 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/DB/Result/Alert.pm b/perllib/FixMyStreet/DB/Result/Alert.pm
index 53cb96ff4..3a2dc9a9f 100644
--- a/perllib/FixMyStreet/DB/Result/Alert.pm
+++ b/perllib/FixMyStreet/DB/Result/Alert.pm
@@ -69,11 +69,31 @@ __PACKAGE__->has_many(
# You can replace this text with custom code or comments, and it will be preserved on regeneration
+use DateTime::TimeZone;
use Moose;
use namespace::clean -except => [ 'meta' ];
with 'FixMyStreet::Roles::Abuser';
+my $tz = DateTime::TimeZone->new( name => "local" );
+
+
+sub whensubscribed_local {
+ my $self = shift;
+
+ return $self->whensubscribed
+ ? $self->whensubscribed->set_time_zone($tz)
+ : $self->whensubscribed;
+}
+
+sub whendisabled_local {
+ my $self = shift;
+
+ return $self->whendisabled
+ ? $self->whendisabled->set_time_zone($tz)
+ : $self->whendisabled;
+}
+
=head2 confirm
$alert->confirm();
diff --git a/perllib/FixMyStreet/DB/Result/Questionnaire.pm b/perllib/FixMyStreet/DB/Result/Questionnaire.pm
index a36c07535..5a507645f 100644
--- a/perllib/FixMyStreet/DB/Result/Questionnaire.pm
+++ b/perllib/FixMyStreet/DB/Result/Questionnaire.pm
@@ -43,6 +43,24 @@ __PACKAGE__->belongs_to(
# Created by DBIx::Class::Schema::Loader v0.07010 @ 2011-05-24 15:32:43
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:BAWTYKAQ84VeOI6D2gtQOQ
+use DateTime::TimeZone;
+
+my $tz = DateTime::TimeZone->new( name => "local" );
+
+sub whensent_local {
+ my $self = shift;
+
+ return $self->whensent
+ ? $self->whensent->set_time_zone($tz)
+ : $self->whensent;
+}
+
+sub whenanswered_local {
+ my $self = shift;
+
+ return $self->whenanswered
+ ? $self->whenanswered->set_time_zone($tz)
+ : $self->whenanswered;
+}
-# You can replace this text with custom code or comments, and it will be preserved on regeneration
1;
diff --git a/perllib/FixMyStreet/DB/ResultSet/Alert.pm b/perllib/FixMyStreet/DB/ResultSet/Alert.pm
new file mode 100644
index 000000000..62e6120e4
--- /dev/null
+++ b/perllib/FixMyStreet/DB/ResultSet/Alert.pm
@@ -0,0 +1,38 @@
+package FixMyStreet::DB::ResultSet::Alert;
+use base 'DBIx::Class::ResultSet';
+
+use strict;
+use warnings;
+
+sub timeline_created {
+ my ( $rs, $restriction ) = @_;
+
+ my $prefetch =
+ FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ?
+ [ qw/alert_type user/ ] :
+ [ qw/alert_type/ ];
+
+ return $rs->search(
+ {
+ whensubscribed => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ confirmed => 1,
+ %{ $restriction },
+ },
+ {
+ prefetch => $prefetch,
+ }
+ );
+}
+
+sub timeline_disabled {
+ my ( $rs, $restriction ) = @_;
+
+ return $rs->search(
+ {
+ whendisabled => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ %{ $restriction },
+ },
+ );
+}
+
+1;
diff --git a/perllib/FixMyStreet/DB/ResultSet/Comment.pm b/perllib/FixMyStreet/DB/ResultSet/Comment.pm
new file mode 100644
index 000000000..4719c7a24
--- /dev/null
+++ b/perllib/FixMyStreet/DB/ResultSet/Comment.pm
@@ -0,0 +1,27 @@
+package FixMyStreet::DB::ResultSet::Comment;
+use base 'DBIx::Class::ResultSet';
+
+use strict;
+use warnings;
+
+sub timeline {
+ my ( $rs, $restriction ) = @_;
+
+ my $prefetch =
+ FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ?
+ [ qw/user/ ] :
+ [];
+
+ return $rs->search(
+ {
+ state => 'confirmed',
+ created => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ %{ $restriction },
+ },
+ {
+ prefetch => $prefetch,
+ }
+ );
+}
+
+1;
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
new file mode 100644
index 000000000..8d798a7c1
--- /dev/null
+++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm
@@ -0,0 +1,30 @@
+package FixMyStreet::DB::ResultSet::Problem;
+use base 'DBIx::Class::ResultSet';
+
+use strict;
+use warnings;
+
+sub timeline {
+ my ( $rs, $restriction ) = @_;
+
+ my $prefetch =
+ FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ?
+ [ qw/user/ ] :
+ [];
+
+ return $rs->search(
+ {
+ -or => {
+ created => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ confirmed => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ whensent => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ %{ $restriction },
+ }
+ },
+ {
+ prefetch => $prefetch,
+ }
+ );
+}
+
+1;
diff --git a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
index 80f62f495..1f5e26197 100644
--- a/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/Questionnaire.pm
@@ -112,4 +112,22 @@ sub send_questionnaires_period {
}
}
+sub timeline {
+ my ( $rs, $restriction ) = @_;
+
+ return $rs->search(
+ {
+ -or => {
+ whenanswered => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ 'me.whensent' => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ },
+ %{ $restriction },
+ },
+ {
+ -select => [qw/me.*/],
+ prefetch => [qw/problem/],
+ }
+ );
+}
+
1;