+# TODO list helper functions
+
+package TODO;
+
+use SL::DBUtils;
+
+sub get_user_config {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ $form->error('Need params: id or login') if (!$params{id} && !$params{login});
+
+ if ($params{login}) {
+ ($params{id}) = selectfirst_array_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $params{login});
+
+ if (!$params{id}) {
+ $main::lxdebug->leave_sub();
+ return ();
+ }
+
+ } else {
+ ($params{login}) = selectfirst_array_query($form, $dbh, qq|SELECT login FROM employee WHERE id = ?|, conv_i($params{id}));
+ }
+
+ my $cfg = selectfirst_hashref_query($form, $dbh, qq|SELECT * FROM todo_user_config WHERE employee_id = ?|, conv_i($params{id}));
+
+ if (!$cfg) {
+ # Standard configuration: enable all
+
+ $cfg = { map { $_ => 1 } qw(show_after_login show_follow_ups show_follow_ups_login show_overdue_sales_quotations show_overdue_sales_quotations_login) };
+ }
+
+ if (! $main::auth->check_right($params{login}, 'sales_quotation_edit')) {
+ map { delete $cfg->{$_} } qw(show_overdue_sales_quotations show_overdue_sales_quotations_login);
+ }
+
+ $main::lxdebug->leave_sub();
+
+ return %{ $cfg };
+}
+
+sub save_user_config {
+ $main::lxdebug->enter_sub();
+
+ my $self = shift;
+ my %params = @_;
+
+ Common::check_params(\%params, qw(login));
+
+ my $myconfig = \%main::myconfig;
+ my $form = $main::form;
+
+ my $dbh = $params{dbh} || $form->get_standard_dbh($myconfig);
+
+ my $query = qq|SELECT id FROM employee WHERE login = ?|;
+
+ my ($id) = selectfirst_array_query($form, $dbh, $query, $params{login});
+
+ if (!$id) {
+ $main::lxdebug->leave_sub();
+ return;
+ }
+
+ $query =
+ qq|SELECT show_after_login
+ FROM todo_user_config
+ WHERE employee_id = ?|;
+
+ if (! selectfirst_hashref_query($form, $dbh, $query, $id)) {
+ do_query($form, $dbh, qq|INSERT INTO todo_user_config (employee_id) VALUES (?)|, $id);
+ }
+
+ $query =
+ qq|UPDATE todo_user_config SET
+ show_after_login = ?,
+ show_follow_ups = ?,
+ show_follow_ups_login = ?,
+ show_overdue_sales_quotations = ?,
+ show_overdue_sales_quotations_login = ?
+
+ WHERE employee_id = ?|;
+
+ 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);
+ push @values, $id;
+
+ do_query($form, $dbh, $query, @values);
+
+ $dbh->commit();
+
+ $main::lxdebug->leave_sub();
+}
+
+1;