ArticleNavController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Http\Resources\ArticleNavResource;
  5. use App\Models\PaliText;
  6. class ArticleNavController extends Controller
  7. {
  8. /**
  9. * Display a listing of the resource.
  10. *
  11. * @return \Illuminate\Http\Response
  12. */
  13. public function index(Request $request)
  14. {
  15. //
  16. switch ($request->get('type')) {
  17. case 'chapter':
  18. $para = explode('-',$request->get('id'));
  19. $prev = PaliText::where('book',$para[0])
  20. ->where('paragraph','<',$para[1])
  21. ->where('level','<',8)
  22. ->orderBy('paragraph','desc')
  23. ->first();
  24. $next = PaliText::where('book',$para[0])
  25. ->where('paragraph','>',$para[1])
  26. ->where('level','<',8)
  27. ->orderBy('paragraph','asc')
  28. ->first();
  29. if($prev){
  30. $nav['prev']['id'] = $prev->book . '-' . $prev->paragraph;
  31. $nav['prev']['title'] = $prev->toc;
  32. $nav['prev']['subtitle'] = $prev->toc;
  33. }
  34. if($next){
  35. $nav['next']['id'] = $next->book . '-' . $next->paragraph;
  36. $nav['next']['title'] = $next->toc;
  37. $nav['next']['subtitle'] = $next->toc;
  38. }
  39. break;
  40. case 'para':
  41. $para = explode('-',$request->get('id'));
  42. $prev = PaliText::where('book',$para[0])
  43. ->where('paragraph','<',$para[1])
  44. ->orderBy('paragraph','desc')
  45. ->first();
  46. $next = PaliText::where('book',$para[0])
  47. ->where('paragraph','>',$para[1])
  48. ->orderBy('paragraph','asc')
  49. ->first();
  50. if($prev){
  51. $nav['prev']['id'] = $prev->book . '-' . $prev->paragraph;
  52. $nav['prev']['title'] = $prev->text;
  53. $nav['prev']['subtitle'] = $prev->text;
  54. }
  55. if($next){
  56. $nav['next']['id'] = $next->book . '-' . $next->paragraph;
  57. $nav['next']['title'] = $next->text;
  58. $nav['next']['subtitle'] = $next->text;
  59. }
  60. break;
  61. default:
  62. return $this->error('type?');
  63. break;
  64. }
  65. return $this->ok(new ArticleNavResource($nav));
  66. }
  67. /**
  68. * Store a newly created resource in storage.
  69. *
  70. * @param \Illuminate\Http\Request $request
  71. * @return \Illuminate\Http\Response
  72. */
  73. public function store(Request $request)
  74. {
  75. //
  76. }
  77. /**
  78. * Display the specified resource.
  79. *
  80. * @param int $id
  81. * @return \Illuminate\Http\Response
  82. */
  83. public function show($id)
  84. {
  85. //
  86. }
  87. /**
  88. * Update the specified resource in storage.
  89. *
  90. * @param \Illuminate\Http\Request $request
  91. * @param int $id
  92. * @return \Illuminate\Http\Response
  93. */
  94. public function update(Request $request, $id)
  95. {
  96. //
  97. }
  98. /**
  99. * Remove the specified resource from storage.
  100. *
  101. * @param int $id
  102. * @return \Illuminate\Http\Response
  103. */
  104. public function destroy($id)
  105. {
  106. //
  107. }
  108. }