Completed
Push — master ( 6ee823...14bb9c )
by CodexShaper
04:29
created

TableController::getTableColumns()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 15
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 7
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 15
ccs 0
cts 11
cp 0
crap 12
rs 10
1
<?php
2
3
namespace CodexShaper\DBM\Http\Controllers;
4
5
use CodexShaper\DBM\Database\Schema\Table;
6
use CodexShaper\DBM\Facades\Manager as DBM;
7
use Illuminate\Http\Request;
8
9
class TableController extends Controller
10
{
11
    public function all(Request $request)
12
    {
13
        // return response()->json(['success' => false, 'data' => escapeshellarg($request->perPage)]);
14
        if ($request->ajax()) {
15
16
            if (($response = DBM::authorize('database.browse')) !== true) {
17
                return $response;
18
            }
19
20
            try
21
            {
22
                $perPage         = (int) $request->perPage;
23
                $query           = $request->q;
24
                $tables          = Table::paginate($perPage, null, [], $query);
25
                $userPermissions = DBM::userPermissions();
26
27
                $newTables = [];
28
29
                foreach ($tables as $table) {
30
31
                    $newTables[] = $table;
32
                }
33
34
                return response()->json([
35
                    'success'         => true,
36
                    'tables'          => $newTables,
37
                    'pagination'      => $tables,
38
                    'userPermissions' => $userPermissions,
39
                ]);
40
41
            } catch (\Exception $e) {
42
                return response()->json([
43
                    'success' => false,
44
                    'errors'  => [$e->getMessage()],
45
                ], 400);
46
            }
47
        }
48
        return response()->json(['success' => false]);
49
    }
50
51
    public function getTable(Request $request)
52
    {
53
        if ($request->ajax()) {
54
55
            if (($response = DBM::authorize('database.update')) !== true) {
56
                return $response;
57
            }
58
59
            $userPermissions = DBM::userPermissions();
60
            $table           = Table::getTable($request->name);
61
            $object          = DBM::Object()->where('name', $request->name)->first();
62
            $isCrudExists    = false;
63
            $columns         = $table['columns'];
64
            $newColumns      = [];
65
66
            if ($object) {
67
                $fields = $object->fields()->orderBy('order', 'ASC')->get();
68
                if (count($fields) > 0) {
69
                    foreach ($fields as $field) {
70
                        foreach ($columns as $key => $column) {
71
                            if ($field->name == $column->name) {
72
                                // $column->id    = $field->id;
73
                                $column->order = $field->order;
74
                                $newColumns[]  = $column;
75
                                unset($columns[$key]);
76
                                $columns = array_values($columns);
77
                            }
78
                        }
79
                    }
80
81
                    $table['columns'] = $newColumns;
82
                    // $columns          = $newColumns;
83
                    $isCrudExists = true;
84
                }
85
            }
86
87
            return response()->json([
88
                'success'         => true,
89
                'table'           => $table,
90
                'isCrudExists'    => $isCrudExists,
91
                'userPermissions' => $userPermissions,
92
                'templates'       => DBM::templates(),
93
            ]);
94
        }
95
96
        return response()->json(['success' => false]);
97
    }
98
99
    public function getTableColumns(Request $request)
100
    {
101
        if ($request->ajax()) {
102
103
            if (($response = DBM::authorize('crud.update')) !== true) {
104
                return $response;
105
            }
106
107
            $table  = Table::getTable($request->table);
108
            $fields = $table['columns'];
109
110
            return response()->json(['success' => true, 'fields' => $fields]);
111
        }
112
113
        return response()->json(['success' => false]);
114
    }
115
}
116