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