1 package SL::Controller::BackgroundJobHistory;
 
   5 use parent qw(SL::Controller::Base);
 
   7 use SL::Controller::Helper::Filtered;
 
   8 use SL::Controller::Helper::GetModels;
 
   9 use SL::Controller::Helper::Paginated;
 
  10 use SL::Controller::Helper::Sorted;
 
  11 use SL::DB::BackgroundJobHistory;
 
  12 use SL::Helper::Flash;
 
  13 use SL::Locale::String;
 
  14 use SL::System::TaskServer;
 
  16 use Rose::Object::MakeMethods::Generic
 
  18   scalar                  => [ qw(history db_args flat_filter filter_summary) ],
 
  19   'scalar --get_set_init' => [ qw(task_server) ],
 
  22 __PACKAGE__->run_before('check_auth');
 
  23 __PACKAGE__->run_before('add_stylesheet');
 
  24 __PACKAGE__->run_before('check_task_server');
 
  26 __PACKAGE__->make_filtered(
 
  27   MODEL             => 'BackgroundJobHistory',
 
  28   LAUNDER_TO        => 'filter'
 
  30 __PACKAGE__->make_paginated(ONLY => [ qw(list) ]);
 
  32 __PACKAGE__->make_sorted(
 
  35   package_name => t8('Package name'),
 
  36   run_at       => t8('Run at'),
 
  37   status       => t8('Execution status'),
 
  38   result       => t8('Result'),
 
  49   $self->make_filter_summary;
 
  51   $self->render('background_job_history/list',
 
  52                 title   => $::locale->text('Background job history'),
 
  53                 ENTRIES => $self->get_models);
 
  59   my $back_to = $::form->{back_to} || $self->url_for(action => 'list');
 
  61   $self->history(SL::DB::BackgroundJobHistory->new(id => $::form->{id})->load);
 
  62   $self->render('background_job_history/show',
 
  63                 title   => $::locale->text('View background job execution result'),
 
  72   $::auth->assert('admin');
 
  79 sub init_task_server {
 
  80   return SL::System::TaskServer->new;
 
  83 sub check_task_server {
 
  85   flash('warning', $::locale->text('The task server does not appear to be running.')) if !$self->task_server->is_running;
 
  89   $::request->{layout}->use_stylesheet('lx-office-erp/background_jobs.css');
 
  92 sub make_filter_summary {
 
  95   my $filter  = $::form->{filter} || {};
 
  97     [ "package_name:substr::ilike", $::locale->text('Package name')                                ],
 
  98     [ "result:substr::ilike",       $::locale->text('Result')                                      ],
 
  99     [ "error:substr::ilike",        $::locale->text('Error')                                       ],
 
 100     [ "run_at:date::ge",            $::locale->text('Run at') . " " . $::locale->text('From Date') ],
 
 101     [ "run_at:date::le",            $::locale->text('Run at') . " " . $::locale->text('To Date')   ],
 
 104   my @filter_strings = grep { $_ }
 
 105                        map  { $filter->{ $_->[0] } ? $_->[1] . ' ' . $filter->{ $_->[0] } : undef }
 
 109     failed   => $::locale->text('failed'),
 
 110     success  => $::locale->text('succeeded'),
 
 112   push @filter_strings, $status{ $filter->{'status:eq_ignore_empty'} } if $filter->{'status:eq_ignore_empty'};
 
 114   $self->filter_summary(join(', ', @filter_strings));