JsonSerializer   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 4

Importance

Changes 0
Metric Value
wmc 5
lcom 2
cbo 4
dl 0
loc 67
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A serializeQueryBuilderFilter() 0 20 2
A serializeQueryBuilderFilterSet() 0 10 2
A serializeQueryBuilderValidation() 0 14 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