Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
RestoreDeletedDataByCron
n/a
0 / 0
n/a
0 / 0
14
n/a
0 / 0
 __construct
n/a
0 / 0
n/a
0 / 0
2
 startProcessing
n/a
0 / 0
n/a
0 / 0
5
 removeProcess
n/a
0 / 0
n/a
0 / 0
3
 deleteProcess
n/a
0 / 0
n/a
0 / 0
4
1<?php
2
3namespace BO\Zmsdb\Helper;
4
5/**
6 * @codeCoverageIgnore
7 */
8class RestoreDeletedDataByCron
9{
10    protected $scopeList;
11
12    protected $verbose = false;
13
14    public function __construct($verbose = false)
15    {
16        if ($verbose) {
17            error_log("INFO: Restoring deleted appointments based on delay time");
18            $this->verbose = true;
19        }
20        $this->scopeList = (new \BO\Zmsdb\Scope())->readList();
21    }
22
23    public function startProcessing($commit)
24    {
25        foreach ($this->scopeList as $scope) {
26            $time = new \DateTimeImmutable();
27            $reservationDuration = $scope->toProperty()->preferences->appointment->reservationDuration->get();
28            $time = $time->setTimestamp($time->getTimestamp() - ($reservationDuration * 60));
29            $processList = (new \BO\Zmsdb\Process())->readExpiredReservationsList($time, $scope->id, 10000);
30
31            foreach ($processList as $process) {
32                if ($this->verbose) {
33                    error_log("INFO: Processing $process");
34                }
35                if ($commit) {
36                    $this->removeProcess($process);
37                }
38            }
39        }
40    }
41
42    protected function removeProcess(\BO\Zmsentities\Process $process)
43    {
44        if ('reserved' == $process->status) {
45            $this->deleteProcess($process);
46        } elseif ($this->verbose) {
47            error_log("INFO: Keep process $process->id");
48        }
49    }
50
51    protected function deleteProcess(\BO\Zmsentities\Process $process)
52    {
53        $query = new \BO\Zmsdb\Process();
54        if ($query->writeDeletedEntity($process->id) && $this->verbose) {
55            error_log("INFO: Process $process->id successfully removed");
56        } elseif ($this->verbose) {
57            error_log("WARN: Could not remove process '$process->id'!");
58        }
59    }
60}