SmokeCoAlarmFactory   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 20
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A fromData() 0 18 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LauLamanApps\NestApi\Client\Factory\Device;
6
7
use DateTimeImmutable;
8
use LauLamanApps\NestApi\Client\__shared\AbstractFactory;
9
use LauLamanApps\NestApi\Client\Device\SmokeCoAlarm;
10
use LauLamanApps\NestApi\Client\Device\SmokeCoAlarm\AlarmState;
11
use LauLamanApps\NestApi\Client\Device\SmokeCoAlarm\BatteryHealth;
12
use LauLamanApps\NestApi\Client\Device\SmokeCoAlarm\UiColorState;
13
use LauLamanApps\NestApi\NestClient;
14
15
final class SmokeCoAlarmFactory extends AbstractFactory implements SmokeCoAlarmFactoryInterface
16
{
17 1
    public function fromData(array $data): SmokeCoAlarm
18
    {
19 1
        return new SmokeCoAlarm(
20 1
            $this->extractString('device_id', $data),
21 1
            $this->extractString('where_id', $data),
22 1
            $this->extractString('structure_id', $data),
23 1
            $this->extractString('name', $data),
24 1
            $this->extractString('name_long', $data),
25 1
            $this->extractString('locale', $data),
26 1
            $this->extractString('software_version', $data),
27 1
            $this->extractBoolean('is_online', $data),
28 1
            $this->extractDateTimeImmutableOrNull('last_connection', $data),
29 1
            BatteryHealth::get($this->extractString('battery_health', $data)),
30 1
            AlarmState::get($this->extractString('co_alarm_state', $data)),
31 1
            AlarmState::get($this->extractString('smoke_alarm_state', $data)),
32 1
            UiColorState::get($this->extractString('ui_color_state', $data)),
33 1
            $this->extractBoolean('is_manual_test_active', $data),
34 1
            $this->extractDateTimeImmutableOrNull('last_manual_test_time', $data)
35
        );
36
    }
37
}
38