StartTimeAddition::setStartTime()   B
last analyzed

Complexity

Conditions 8
Paths 13

Size

Total Lines 30
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 8
eloc 14
c 1
b 0
f 0
nc 13
nop 1
dl 0
loc 30
rs 8.4444
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