]> wagnertech.de Git - mfinanz.git/blobdiff - SL/TODO.pm
Benutzerkonfiguration um Einstellungen zur Aufgabenliste erweitert.
[mfinanz.git] / SL / TODO.pm
diff --git a/SL/TODO.pm b/SL/TODO.pm
new file mode 100644 (file)
index 0000000..af881b4
--- /dev/null
@@ -0,0 +1,100 @@
+# 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;