WbwSentenceController.php 4.8 KB

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