Completed
Push — master ( 8f3d8d...5443e3 )
by Andrey
02:32
created

SortHelper::getSortColumn()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 1
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Itstructure\GridView\Helpers;
4
5
use Itstructure\GridView\Columns\ActionColumn;
6
use Itstructure\GridView\Columns\BaseColumn;
7
use Illuminate\Http\Request;
8
9
/**
10
 * Class SortHelper
11
 * @package Itstructure\GridView\Helpers
12
 */
13
class SortHelper
14
{
15
    const SORT_ASC = 'asc';
16
    const SORT_DESC = 'desc';
17
18
    /**
19
     * Build sort link for model entry.
20
     * @param Request $request
21
     * @param BaseColumn|ActionColumn $column_obj
22
     * @return string
23
     */
24
    public static function getSortableLink(Request $request, $column_obj): string
25
    {
26
        if ($column_obj->getSort() === false || $column_obj instanceof ActionColumn) {
27
            return '';
28
        }
29
30
        $sortQuery = $request->get('sort', null);
31
32
        if (is_null($sortQuery)) {
33
            return $request->fullUrlWithQuery([
34
                'sort' => $column_obj->getSort(),
35
            ]);
36
        }
37
38
        if ($sortQuery == $column_obj->getSort()) {
39
            return $request->fullUrlWithQuery([
40
                'sort' => '-' . $column_obj->getSort(),
41
            ]);
42
        }
43
44
        if ($sortQuery == ('-' . $column_obj->getSort())) {
45
            return $request->fullUrlWithQuery([
46
                'sort' => $column_obj->getSort(),
47
            ]);
48
        }
49
50
        return $request->fullUrlWithQuery([
51
            'sort' => $column_obj->getSort(),
52
        ]);
53
    }
54
55
    /**
56
     * @param Request $request
57
     * @return string
58
     */
59
    public static function getSortColumn(Request $request): string
60
    {
61
        $column = $request->get('sort');
62
63
        return str_replace('-', '', $column);
64
    }
65
66
    /**
67
     * @param Request $request
68
     * @return string
69
     */
70
    public static function getDirection(Request $request): string
71
    {
72
        $pos = mb_strpos($request->get('sort'), '-');
73
        if ($pos === 0) {
74
            return self::SORT_DESC;
75
        }
76
77
        return self::SORT_ASC;
78
    }
79
}
80