2
0

ArticleNavController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. if (isset($nav)) {
  66. return $this->ok(new ArticleNavResource($nav));
  67. } else {
  68. return $this->error('no nav data', 200, 200);
  69. }
  70. }
  71. /**
  72. * Store a newly created resource in storage.
  73. *
  74. * @param \Illuminate\Http\Request $request
  75. * @return \Illuminate\Http\Response
  76. */
  77. public function store(Request $request)
  78. {
  79. //
  80. }
  81. /**
  82. * Display the specified resource.
  83. *
  84. * @param int $id
  85. * @return \Illuminate\Http\Response
  86. */
  87. public function show($id)
  88. {
  89. //
  90. }
  91. /**
  92. * Update the specified resource in storage.
  93. *
  94. * @param \Illuminate\Http\Request $request
  95. * @param int $id
  96. * @return \Illuminate\Http\Response
  97. */
  98. public function update(Request $request, $id)
  99. {
  100. //
  101. }
  102. /**
  103. * Remove the specified resource from storage.
  104. *
  105. * @param int $id
  106. * @return \Illuminate\Http\Response
  107. */
  108. public function destroy($id)
  109. {
  110. //
  111. }
  112. }