Test Failed
Push — master ( 92951c...6d737b )
by Laurens
04:18
created

SmokeCoAlarmFactory   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 20
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
    public function fromData(array $data): SmokeCoAlarm
18
    {
19
        return new SmokeCoAlarm(
20
            $this->extractString('device_id', $data),
21
            $this->extractString('where_id', $data),
22
            $this->extractString('structure_id', $data),
23
            $this->extractString('name', $data),
24
            $this->extractString('name_long', $data),
25
            $this->extractString('locale', $data),
26
            $this->extractString('software_version', $data),
27
            $this->extractBoolean('is_online', $data),
28
            $this->extractDateTimeImmutableOrNull('last_connection', $data),
29
            BatteryHealth::get($this->extractString('battery_health', $data)),
30
            AlarmState::get($this->extractString('co_alarm_state', $data)),
31
            AlarmState::get($this->extractString('smoke_alarm_state', $data)),
32
            UiColorState::get($this->extractString('ui_color_state', $data)),
33
            $this->extractBoolean('is_manual_test_active', $data),
34
            $this->extractDateTimeImmutableOrNull('last_manual_test_time', $data)
35
        );
36
    }
37
}
38