use SL::DBUtils;
use SL::Notes;
+use strict;
+
sub save {
$main::lxdebug->enter_sub();
'trans_id' => $params{id},
'trans_module' => 'fu',
'subject' => $params{subject},
- 'body' => $params{body});
+ 'body' => $params{body},
+ 'dbh' => $dbh,);
$params{done} = 1 if (!defined $params{done});
do_query($form, $dbh, qq|DELETE FROM follow_up_links WHERE follow_up_id = ?|, conv_i($params{id}));
- my $query = qq|INSERT INTO follow_up_links (follow_up_id, trans_id, trans_type, trans_info) VALUES (?, ?, ?, ?)|;
+ $query = qq|INSERT INTO follow_up_links (follow_up_id, trans_id, trans_type, trans_info) VALUES (?, ?, ?, ?)|;
my $sth = prepare_query($form, $dbh, $query);
foreach my $link (@{ $params{LINKS} }) {
my ($query, $where, $where_user);
my ($employee_id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $form->{login});
- my @values = ($employee_id, $employee_id);
+ my @values = ();
+ my @values_user = ();
if ($params{trans_id}) {
$where .= qq| AND EXISTS (SELECT * FROM follow_up_links ful
if ($params{all_users}) {
$where_user = qq|OR (fu.created_by IN (SELECT DISTINCT what FROM follow_up_access WHERE who = ?))|;
- push @values, $employee_id;
+ push @values_user, $employee_id;
+ }
+
+ my $order_by = '';
+
+ if ($form->{sort} ne 'title') {
+ my %sort_columns = (
+ 'follow_up_date' => [ qw(fu.follow_up_date fu.id) ],
+ 'created_on' => [ qw(created_on fu.id) ],
+ 'subject' => [ qw(lower(n.subject)) ],
+ );
+
+ my $sortdir = !defined $form->{sortdir} ? 'ASC' : $form->{sortdir} ? 'ASC' : 'DESC';
+ my $sortkey = $sort_columns{$form->{sort}} ? $form->{sort} : 'follow_up_date';
+ $order_by = 'ORDER BY ' . join(', ', map { "$_ $sortdir" } @{ $sort_columns{$sortkey} });
}
$query = qq|SELECT fu.*, n.subject, n.body, n.created_by,
WHERE ((fu.created_by = ?) OR (fu.created_for_user = ?)
$where_user)
$where
- ORDER BY fu.follow_up_date DESC, fu.id ASC|;
+ $order_by|;
- my $follow_ups = selectall_hashref_query($form, $dbh, $query, @values);
+ my $follow_ups = selectall_hashref_query($form, $dbh, $query, $employee_id, $employee_id, @values_user, @values);
if (!scalar @{ $follow_ups }) {
$main::lxdebug->leave_sub();
$fu->{LINKS} = $self->retrieve_links(%{ $fu });
}
+ if ($form->{sort} eq 'title') {
+ my $dir_factor = !defined $form->{sortdir} ? 1 : $form->{sortdir} ? 1 : -1;
+ $follow_ups = [ map { $_->[1] }
+ sort { ($a->[0] cmp $b->[0]) * $dir_factor }
+ map { my $fu = $follow_ups->[$_]; [ @{ $fu->{LINKS} } ? lc($fu->{LINKS}->[0]->{title}) : '', $fu ] }
+ (0 .. scalar(@{ $follow_ups }) - 1) ];
+ }
+
$main::lxdebug->leave_sub();
return $follow_ups;