WbwSentenceController.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Wbw;
  4. use App\Models\WbwBlock;
  5. use App\Models\Channel;
  6. use App\Models\CourseMember;
  7. use Illuminate\Http\Request;
  8. use App\Http\Api\AuthApi;
  9. use App\Http\Api\ShareApi;
  10. use App\Http\Api\ChannelApi;
  11. class WbwSentenceController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @return \Illuminate\Http\Response
  17. */
  18. public function index(Request $request)
  19. {
  20. //
  21. switch ($request->get('view')) {
  22. case 'sent-can-read':
  23. $result = [];
  24. $user = AuthApi::current($request);
  25. $user_uid = null;
  26. if($user){
  27. $user_uid = $user['user_uid'];
  28. }
  29. $sentId = $request->get('book').'-'.
  30. $request->get('para').'-'.
  31. $request->get('wordStart').'-'.
  32. $request->get('wordEnd');
  33. $channels = [];
  34. if($request->has('course')){
  35. $studentsChannel = CourseMember::where('course_id',$request->get('course'))
  36. ->whereNotNull('channel_id')
  37. ->select('channel_id')
  38. ->orderBy('created_at')
  39. ->get();
  40. foreach ($studentsChannel as $key => $channel) {
  41. $channels[] = $channel->channel_id;
  42. }
  43. }else{
  44. $channels = ChannelApi::getCanReadByUser($user_uid);
  45. }
  46. $channelsId = [];
  47. if($request->has('exclude')){
  48. //移除无需查询的channel
  49. foreach ($channels as $key => $id) {
  50. if($id !== $request->get('exclude')){
  51. $channelsId[] = $id;
  52. }
  53. }
  54. }else if($request->has('channels')){
  55. //仅列出指定的channel
  56. $include = explode(',', $request->get('channels'));
  57. foreach ($channels as $key => $id) {
  58. if(in_array($id, $include)){
  59. $channelsId[] = $id;
  60. }
  61. }
  62. }else{
  63. $channelsId = $channels;
  64. }
  65. $wbwBlocksId = WbwBlock::where('book_id',$request->get('book'))
  66. ->where('paragraph',$request->get('para'))
  67. ->whereIn('channel_uid',$channelsId)
  68. ->select('uid')
  69. ->get();
  70. $validBlocks = Wbw::whereIn('block_uid',$wbwBlocksId)
  71. ->where('book_id',$request->get('book'))
  72. ->where('paragraph',$request->get('para'))
  73. ->where('wid',$request->get('wordStart'))
  74. ->select('block_uid')
  75. ->groupBy('block_uid')
  76. ->get();
  77. foreach ($validBlocks as $key => $block) {
  78. $channel = WbwBlock::where('uid',$block->block_uid)->first();
  79. $corpus = new CorpusController;
  80. $props = $corpus->getSentTpl($sentId,[$channel->channel_uid],
  81. 'edit',true,
  82. 'react');
  83. $result[] = $props;
  84. }
  85. return $this->ok(['rows'=>$result,'count'=>count($result)]);
  86. break;
  87. }
  88. }
  89. /**
  90. * Store a newly created resource in storage.
  91. *
  92. * @param \Illuminate\Http\Request $request
  93. * @return \Illuminate\Http\Response
  94. */
  95. public function store(Request $request)
  96. {
  97. //
  98. }
  99. /**
  100. * Display the specified resource.
  101. *
  102. * @param \App\Models\Wbw $wbw
  103. * @return \Illuminate\Http\Response
  104. */
  105. public function show(Wbw $wbw)
  106. {
  107. //
  108. }
  109. /**
  110. * Update the specified resource in storage.
  111. *
  112. * @param \Illuminate\Http\Request $request
  113. * @param \App\Models\Wbw $wbw
  114. * @return \Illuminate\Http\Response
  115. */
  116. public function update(Request $request, Wbw $wbw)
  117. {
  118. //
  119. }
  120. /**
  121. * Remove the specified resource from storage.
  122. *
  123. * @param \App\Models\Wbw $wbw
  124. * @return \Illuminate\Http\Response
  125. */
  126. public function destroy(Wbw $wbw)
  127. {
  128. //
  129. }
  130. }