1+ <?php
2+
3+
4+ namespace App \Controllers \Api \Admin ;
5+
6+ use Slim \Http \Request ;
7+ use Slim \Http \Response ;
8+ use App \Models \Node ;
9+ use App \Models \TrafficLog ;
10+ use App \Controllers \BaseController ;
11+
12+ class NodeController extends BaseController
13+ {
14+
15+ public function index (Request $ req , Response $ res , $ args )
16+ {
17+ $ pageNum = 1 ;
18+ if (isset ($ req ->getQueryParams ()['page ' ])) {
19+ $ pageNum = $ req ->getQueryParams ()['page ' ];
20+ }
21+ $ traffic = Node::paginate (15 , [
22+ '* ' ,
23+ ], 'page ' , $ pageNum );
24+ $ traffic ->setPath ('/api/admin/nodes ' );
25+ //return $this->echoJsonWithData($res,$traffic);
26+ return $ this ->echoJson ($ res , $ traffic );
27+ }
28+
29+ private function saveModel (Response $ response , Node $ node , $ arr )
30+ {
31+ foreach ($ arr as $ k => $ v ) {
32+ $ node ->$ k = $ v ;
33+ }
34+ $ node ->save ();
35+ return $ this ->echoJsonWithData ($ response , $ node );
36+ }
37+
38+ public function store (Request $ req , Response $ res , $ args )
39+ {
40+ $ input = file_get_contents ("php://input " );
41+ $ arr = json_decode ($ input , true );
42+ return $ this ->saveModel ($ res , new Node (), $ arr );
43+ }
44+
45+ public function update (Request $ req , Response $ res , $ args )
46+ {
47+ $ input = file_get_contents ("php://input " );
48+ $ arr = json_decode ($ input , true );
49+ return $ this ->saveModel ($ res , Node::find ($ args ['id ' ]), $ arr );
50+ }
51+
52+ public function trafficLogs (Request $ req , Response $ res , $ args )
53+ {
54+ $ pageNum = 1 ;
55+ if (isset ($ req ->getQueryParams ()['page ' ])) {
56+ $ pageNum = $ req ->getQueryParams ()['page ' ];
57+ }
58+ $ traffic = TrafficLog::where ('user_traffic_log.node_id ' , $ args ['id ' ])
59+ ->join ('ss_node ' , 'user_traffic_log.node_id ' , '= ' , 'ss_node.id ' )
60+ ->orderBy ('user_traffic_log.id ' , 'desc ' )
61+ ->paginate (15 , [
62+ 'user_traffic_log.* ' ,
63+ 'ss_node.name as name '
64+ ], 'page ' , $ pageNum );
65+ $ traffic ->setPath ('/api/admin/trafficLogs ' );
66+ //return $this->echoJsonWithData($res,$traffic);
67+ return $ this ->echoJson ($ res , $ traffic );
68+ }
69+ }
0 commit comments