StartTimeAddition   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 41
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 16
dl 0
loc 41
rs 10
c 1
b 0
f 0
wmc 8

1 Method

Rating   Name   Duplication   Size   Complexity  
B setStartTime() 0 30 8
1
<?php
2
3
namespace Daaner\TurboSMS\Traits;
4
5
use Carbon\Carbon;
6
use Exception;
7
8
trait StartTimeAddition
9
{
10
    /**
11
     * @see https://turbosms.ua/api.html
12
     */
13
    protected $startTime;
14
15
    /**
16
     * @param  string|Carbon  $startTime
17
     * @return $this
18
     */
19
    public function setStartTime($startTime): self
20
    {
21
        //ошибка в дате отправки, игнорируем установку
22
        if (! $startTime instanceof Carbon) {
23
            try {
24
                $startTime = Carbon::createFromFormat('Y-m-d H:i', $startTime);
25
            } catch (Exception $e) {
26
                return $this;
27
            }
28
        }
29
30
        //дата уже прошла, игнорируем установку и отправляем сейчас
31
        if ($startTime <= Carbon::now()) {
32
            return $this;
33
        }
34
35
        if (config('turbosms.sleep_mode') && config('turbosms.max_hour') > config('turbosms.min_hour')) {
36
            // уже поздно, отправляем завтра утром
37
            if ($startTime->hour > config('turbosms.max_hour')) {
38
                $startTime = $startTime->addDay()->hour(config('turbosms.min_hour'));
39
            }
40
            //сегодня рано, отправляем позже
41
            if ($startTime->hour < config('turbosms.min_hour')) {
42
                $startTime = $startTime->hour(config('turbosms.min_hour'));
43
            }
44
        }
45
46
        $this->startTime = $startTime->format('Y-m-d H:i');
47
48
        return $this;
49
    }
50
}
51