Passed
Push — master ( c62146...3b79d8 )
by Mauro
02:20
created

TaskValidation::validateTaskName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 8
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 8
loc 8
rs 9.4285
cc 2
eloc 4
nc 2
nop 1
1
<?php
2
3
namespace App\Validation;
4
5
use App\Message\TaskMessage;
6
use Respect\Validation\Validator as v;
7
8
/**
9
 * Task Validation.
10
 */
11
abstract class TaskValidation
12
{
13
    /**
14
     * Validate and sanitize a task name.
15
     *
16
     * @param string $name
17
     * @return string
18
     * @throws \Exception
19
     */
20 View Code Duplication
    protected static function validateTaskName($name)
21
    {
22
        if (!v::alnum()->length(2, 100)->validate($name)) {
23
            throw new \Exception(TaskMessage::TASK_NAME_INVALID, 400);
24
        }
25
26
        return $name;
27
    }
28
29
    /**
30
     * Validate and sanitize a task status.
31
     *
32
     * @param int $status
33
     * @return string
34
     * @throws \Exception
35
     */
36
    protected static function validateStatus($status)
37
    {
38
        if (!v::numeric()->between(0, 1)->validate($status)) {
39
            throw new \Exception(TaskMessage::TASK_STATUS_INVALID, 400);
40
        }
41
42
        return $status;
43
    }
44
45
    /**
46
     * Validate and sanitize input data when create new task.
47
     *
48
     * @param array $input
49
     * @return string
50
     * @throws \Exception
51
     */
52
    public static function validateInputOnCreateTask($input)
53
    {
54
        if (empty($input['task'])) {
55
            throw new \Exception(TaskMessage::TASK_NAME_REQUIRED, 400);
56
        }
57
        $task = self::validateTaskName($input['task']);
58
        $status = 0;
59
        if (isset($input['status'])) {
60
            $status = self::validateStatus($input['status']);
61
        }
62
63
        return ['task' => $task, 'status' => $status];
64
    }
65
66
    /**
67
     * Validate and sanitize input data when update a task.
68
     *
69
     * @param array $input
70
     * @param array $task
71
     * @return string
72
     * @throws \Exception
73
     */
74
    public static function validateInputOnUpdateTask($input, $task)
75
    {
76
        if (!isset($input['task']) && !isset($input['status'])) {
77
            throw new \Exception(TaskMessage::TASK_INFO_REQUIRED, 400);
78
        }
79
        $name = $task->task;
80
        if (isset($input['task'])) {
81
            $name = self::validateTaskName($input['task']);
82
        }
83
        $status = $task->status;
84
        if (isset($input['status'])) {
85
            $status = self::validateStatus($input['status']);
86
        }
87
88
        return ['task' => $name, 'status' => $status];
89
    }
90
}
91