visuddhinanda 2 yıl önce
ebeveyn
işleme
e6cdb0edd3
1 değiştirilmiş dosya ile 125 ekleme ve 0 silme
  1. 125 0
      app/Http/Controllers/WbwSentenceController.php

+ 125 - 0
app/Http/Controllers/WbwSentenceController.php

@@ -0,0 +1,125 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Wbw;
+use App\Models\WbwBlock;
+use App\Models\Channel;
+use Illuminate\Http\Request;
+use App\Http\Api\AuthApi;
+use App\Http\Api\ShareApi;
+use App\Http\Api\ChannelApi;
+
+class WbwSentenceController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index(Request $request)
+    {
+        //
+        switch ($request->get('view')) {
+            case 'sent-can-read':
+                $result = [];
+                $user = AuthApi::current($request);
+                $user_uid = null;
+                if($user){
+                    $user_uid = $user['user_uid'];
+                }
+                $sentId = $request->get('book').'-'.
+                          $request->get('para').'-'.
+                          $request->get('wordStart').'-'.
+                          $request->get('wordEnd');
+                $channels = ChannelApi::getCanReadByUser($user_uid);
+                $channelsId = [];
+                if($request->has('exclude')){
+                    //移除无需查询的channel
+                    foreach ($channels as $key => $id) {
+                        if($id !== $request->get('exclude')){
+                            $channelsId[] = $id;
+                        }
+                    }
+                }else if($request->has('channel')){
+                    //仅列出指定的channel
+                    $include = explode(',', $request->get('channel'));
+                    foreach ($channels as $key => $id) {
+                        if(in_array($id, $include)){
+                            $channelsId[] = $id;
+                        }
+                    }
+                }else{
+                    $channelsId = $channels;
+                }
+                $wbwBlocksId = WbwBlock::where('book_id',$request->get('book'))
+                                    ->where('paragraph',$request->get('para'))
+                                    ->whereIn('channel_uid',$channelsId)
+                                    ->select('uid')
+                                    ->get();
+                $validBlocks = Wbw::whereIn('block_uid',$wbwBlocksId)
+                            ->where('book_id',$request->get('book'))
+                            ->where('paragraph',$request->get('para'))
+                            ->where('wid',$request->get('wordStart'))
+                            ->select('block_uid')
+                            ->groupBy('block_uid')
+                            ->get();
+
+                foreach ($validBlocks as $key => $block) {
+                    $channel = WbwBlock::where('uid',$block->block_uid)->first();
+                    $corpus = new CorpusController;
+                    $props = $corpus->getSentTpl($sentId,[$channel->channel_uid],
+                                               'edit',true,
+                                               'react');
+                    $result[] = $props;
+                }
+                return $this->ok(['rows'=>$result,'count'=>count($result)]);
+                break;
+        }
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Wbw $wbw)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Models\Wbw  $wbw
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Wbw $wbw)
+    {
+        //
+    }
+}