Passed
Push — master ( 696266...cbd67b )
by Andreas
19:41
created

org_openpsa_calendar_handler_bookings   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 75%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 23
c 1
b 0
f 0
dl 0
loc 37
ccs 15
cts 20
cp 0.75
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A _handler_list() 0 35 5
1
<?php
2
/**
3
 * @package org.openpsa.calendar
4
 * @author CONTENT CONTROL http://www.contentcontrol-berlin.de/
5
 * @copyright CONTENT CONTROL http://www.contentcontrol-berlin.de/
6
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License
7
 */
8
9
/**
10
 * @package org.openpsa.calendar
11
 */
12
class org_openpsa_calendar_handler_bookings extends midcom_baseclasses_components_handler
13
{
14 1
    public function _handler_list(string $guid, array &$data)
15
    {
16 1
        $data['task'] = new org_openpsa_projects_task_dba($guid);
17 1
        $booked_time = 0;
18 1
        $booked_percentage = 100;
19
20 1
        $data['bookings'] = [
21
            'confirmed' => [],
22
            'suspected' => [],
23
        ];
24 1
        $mc = new org_openpsa_relatedto_collector($guid, org_openpsa_calendar_event_dba::class);
25 1
        $mc->add_object_order('start', 'ASC');
26 1
        $events = $mc->get_related_objects_grouped_by('status');
27
28 1
        foreach ($events as $status => $list) {
29
            if ($status == org_openpsa_relatedto_dba::CONFIRMED) {
30
                $data['bookings']['confirmed'] = $list;
31
            } else {
32
                $data['bookings']['suspected'] = $list;
33
            }
34
        }
35 1
        foreach ($data['bookings']['confirmed'] as $booking) {
36
            $booked_time += ($booking->end - $booking->start) / 3600;
37
        }
38
39 1
        $booked_time = round($booked_time);
40
41 1
        if ($data['task']->plannedHours != 0) {
42
            $booked_percentage = round(100 / $data['task']->plannedHours * $booked_time);
43
        }
44
45 1
        $data['booked_percentage'] = $booked_percentage;
46 1
        $data['booked_time'] = $booked_time;
47
48 1
        return $this->show('show-bookings');
49
    }
50
}
51