Passed
Branch feature/2.0 (ef99fd)
by Jonathan
11:25
created

TaskStatusAction   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 25
c 2
b 0
f 0
dl 0
loc 63
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 34 4
A __construct() 0 4 1
1
<?php
2
3
/**
4
 * webtrees-lib: MyArtJaub library for webtrees
5
 *
6
 * @package MyArtJaub\Webtrees
7
 * @subpackage AdminTasks
8
 * @author Jonathan Jaubart <[email protected]>
9
 * @copyright Copyright (c) 2020, Jonathan Jaubart
10
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3
11
 */
12
13
declare(strict_types=1);
14
15
namespace MyArtJaub\Webtrees\Module\AdminTasks\Http\RequestHandlers;
16
17
use Fisharebest\Webtrees\FlashMessages;
18
use Fisharebest\Webtrees\I18N;
19
use Fisharebest\Webtrees\Log;
20
use Fisharebest\Webtrees\Services\ModuleService;
21
use MyArtJaub\Webtrees\Module\AdminTasks\AdminTasksModule;
22
use MyArtJaub\Webtrees\Module\AdminTasks\Services\TaskScheduleService;
23
use Psr\Http\Message\ResponseInterface;
24
use Psr\Http\Message\ServerRequestInterface;
25
use Psr\Http\Server\RequestHandlerInterface;
26
27
/**
28
 * Request handler for updating the status of task schedules
29
 */
30
class TaskStatusAction implements RequestHandlerInterface
31
{
32
    
33
    /**
34
     * @var AdminTasksModule $module
35
     */
36
    private $module;
37
    
38
    /**
39
     * @var TaskScheduleService $taskschedules_service
40
     */
41
    private $taskschedules_service;
42
    
43
    /**
44
     * Constructor for TaskStatusAction Request Handler
45
     *
46
     * @param ModuleService $module_service
47
     * @param TaskScheduleService $taskschedules_service
48
     */
49
    public function __construct(ModuleService $module_service, TaskScheduleService $taskschedules_service)
50
    {
51
        $this->module = $module_service->findByInterface(AdminTasksModule::class)->first();
52
        $this->taskschedules_service = $taskschedules_service;
53
    }
54
    
55
    /**
56
     * {@inheritDoc}
57
     * @see \Psr\Http\Server\RequestHandlerInterface::handle()
58
     */
59
    public function handle(ServerRequestInterface $request): ResponseInterface
60
    {
61
        $task_sched_id = (int) $request->getAttribute('task');
62
        $task_schedule = $this->taskschedules_service->find($task_sched_id);
63
        
64
        $admin_config_route = route(AdminConfigPage::class);
65
        
66
        if ($task_schedule === null) {
67
            FlashMessages::addMessage(
68
                I18N::translate('The task shedule with ID “%d” does not exist.', I18N::number($task_sched_id)),
69
                'danger'
70
            );
71
            return redirect($admin_config_route);
72
        }
73
        
74
        ((bool) $request->getAttribute('enable', false)) ? $task_schedule->enable() : $task_schedule->disable();
75
        
76
        if ($this->taskschedules_service->update($task_schedule) > 0) {
77
            FlashMessages::addMessage(
78
                I18N::translate('The scheduled task has been successfully updated'),
79
                'success'
80
            );
81
            //phpcs:ignore Generic.Files.LineLength.TooLong
82
            Log::addConfigurationLog('Module ' . $this->module->title() . ' : Task Schedule “' . $task_schedule->id() . '” has been updated.');
83
        } else {
84
            FlashMessages::addMessage(
85
                I18N::translate('An error occured while updating the scheduled task'),
86
                'danger'
87
            );
88
            //phpcs:ignore Generic.Files.LineLength.TooLong
89
            Log::addConfigurationLog('Module ' . $this->module->title() . ' : Task Schedule “' . $task_schedule->id() . '” could not be updated. See error log.');
90
        }
91
        
92
        return redirect($admin_config_route);
93
    }
94
}
95