Merge branch 'master' of github.com:kivitendo/kivitendo-erp
[kivitendo-erp.git] / SL / TODO.pm
1 # TODO list helper functions
2
3 package TODO;
4
5 use SL::DBUtils;
6
7 use strict;
8
9 sub get_user_config {
10   $main::lxdebug->enter_sub();
11
12   my $self     = shift;
13   my %params   = @_;
14
15   my $myconfig = \%main::myconfig;
16   my $form     = $main::form;
17
18   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
19
20   $form->error('Need params: id or login') if (!$params{id} && !$params{login});
21
22   if ($params{login}) {
23     ($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $params{login});
24
25     if (!$params{id}) {
26       $main::lxdebug->leave_sub();
27       return ();
28     }
29
30   } else {
31     ($params{login}) = selectfirst_array_query($form, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
32   }
33
34   my $cfg = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM todo_user_config WHERE employee_id = ?|, conv_i($params{id}));
35
36   if (!$cfg) {
37     # Standard configuration: enable all
38
39     $cfg = { map { $_ => 1 } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login) };
40   }
41
42   if (! $main::auth->check_right($params{login}, 'sales_quotation_edit')) {
43     map { delete $cfg->{$_} } qw(show_overdue_sales_quotations show_overdue_sales_quotations_login);
44   }
45
46   $main::lxdebug->leave_sub();
47
48   return %{ $cfg };
49 }
50
51 sub save_user_config {
52   $main::lxdebug->enter_sub();
53
54   my $self     = shift;
55   my %params   = @_;
56
57   Common::check_params(\%params, qw(login));
58
59   my $myconfig = \%main::myconfig;
60   my $form     = $main::form;
61
62   my $dbh      = $params{dbh} || $form->get_standard_dbh($myconfig);
63
64   my $query    = qq|SELECT id FROM employee WHERE login = ?|;
65
66   my ($id)     = selectfirst_array_query($form, $dbh, $query, $params{login});
67
68   if (!$id) {
69     $main::lxdebug->leave_sub();
70     return;
71   }
72
73   $query =
74     qq|SELECT show_after_login
75        FROM todo_user_config
76        WHERE employee_id = ?|;
77
78   if (! selectfirst_hashref_query($form, $dbh, $query, $id)) {
79     do_query($form, $dbh, qq|INSERT INTO todo_user_config (employee_id) VALUES (?)|, $id);
80   }
81
82   $query =
83     qq|UPDATE todo_user_config SET
84          show_after_login = ?,
85          show_follow_ups = ?,
86          show_follow_ups_login = ?,
87          show_overdue_sales_quotations = ?,
88          show_overdue_sales_quotations_login = ?
89
90        WHERE employee_id = ?|;
91
92   my @values = map { $params{$_} ? 't' : 'f' } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login);
93   push @values, $id;
94
95   do_query($form, $dbh, $query, @values);
96
97   $dbh->commit();
98
99   $main::lxdebug->leave_sub();
100 }
101
102 1;