Completed
Push — master ( aa02db...c8592c )
by WEBEWEB
09:51
created

JsonSerializer::serializeQueryBuilderValidation()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.7998
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
/*
4
 * This file is part of the jquery-querybuilder-bundle package.
5
 *
6
 * (c) 2019 WEBEWEB
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace WBW\Bundle\JQuery\QueryBuilderBundle\Serializer;
13
14
use WBW\Bundle\JQuery\QueryBuilderBundle\API\QueryBuilderFilterInterface;
15
use WBW\Bundle\JQuery\QueryBuilderBundle\API\QueryBuilderFilterSetInterface;
16
use WBW\Bundle\JQuery\QueryBuilderBundle\API\QueryBuilderValidationInterface;
17
use WBW\Library\Core\Argument\Helper\ArrayHelper;
18
19
/**
20
 * JSON serializer.
21
 *
22
 * @author webeweb <https://github.com/webeweb/>
23
 * @package WBW\Bundle\JQuery\QueryBuilderBundle\Serializer
24
 */
25
class JsonSerializer {
26
27
    /**
28
     * Serialize a filter.
29
     *
30
     * @param QueryBuilderFilterInterface $filter The filter.
31
     * @return array Returns the serialized filter.
32
     */
33
    public static function serializeQueryBuilderFilter(QueryBuilderFilterInterface $filter): array {
34
35
        $output = [];
36
37
        ArrayHelper::set($output, "id", $filter->getId(), [null]);
38
        ArrayHelper::set($output, "field", $filter->getField(), [null]);
39
        ArrayHelper::set($output, "label", $filter->getLabel(), [null]);
40
        ArrayHelper::set($output, "type", $filter->getType(), [null]);
41
        ArrayHelper::set($output, "input", $filter->getInput(), [null]);
42
        ArrayHelper::set($output, "values", $filter->getValues(), [null]);
43
        ArrayHelper::set($output, "multiple", $filter->getMultiple(), [null, false]);
44
45
        if (null !== $filter->getValues()) {
46
            $output["validation"] = $filter->getValidation()->jsonSerialize();
47
        }
48
49
        ArrayHelper::set($output, "operators", $filter->getOperators(), [null, []]);
50
51
        return $output;
52
    }
53
54
    /**
55
     * Serialize a filter set.
56
     *
57
     * @param QueryBuilderFilterSetInterface $filterSet The filter set.
58
     * @return array Returns the serialized filter set.
59
     */
60
    public static function serializeQueryBuilderFilterSet(QueryBuilderFilterSetInterface $filterSet): array {
61
62
        $output = [];
63
64
        foreach ($filterSet->getFilters() as $current) {
65
            $output[] = static::serializeQueryBuilderFilter($current);
66
        }
67
68
        return $output;
69
    }
70
71
    /**
72
     * Serialize a validation.
73
     *
74
     * @param QueryBuilderValidationInterface $validation The validation.
75
     * @return array Returns the serialized validation.
76
     */
77
    public static function serializeQueryBuilderValidation(QueryBuilderValidationInterface $validation): array {
78
79
        $output = [];
80
81
        ArrayHelper::set($output, "format", $validation->getFormat(), [null]);
82
        ArrayHelper::set($output, "min", $validation->getMin(), [null]);
83
        ArrayHelper::set($output, "max", $validation->getMax(), [null]);
84
        ArrayHelper::set($output, "step", $validation->getStep(), [null]);
85
        ArrayHelper::set($output, "messages", $validation->getMessages(), [null]);
86
        ArrayHelper::set($output, "allow_empty_value", $validation->getAllowEmptyValue(), [null]);
87
        ArrayHelper::set($output, "callback", $validation->getCallback(), [null]);
88
89
        return $output;
90
    }
91
}
92