api.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. use Illuminate\Http\Request;
  3. use Illuminate\Support\Facades\Route;
  4. use Illuminate\Support\Facades\Hash;
  5. use Illuminate\Validation\ValidationException;
  6. use Illuminate\Support\Facades\DB;
  7. use Illuminate\Support\Facades\File;
  8. use Illuminate\Support\Facades\Storage;
  9. use App\Models\User;
  10. use App\Models\Message;
  11. use App\Models\Blog;
  12. use App\Models\Comment;
  13. use App\Models\BlogImage;
  14. use App\Http\Controllers\UserController;
  15. use App\Http\Controllers\BlogController;
  16. use App\Http\Controllers\BlogImageController;
  17. use App\Http\Controllers\CommentController;
  18. /*
  19. |--------------------------------------------------------------------------
  20. | API Routes
  21. |--------------------------------------------------------------------------
  22. |
  23. | Here is where you can register API routes for your application. These
  24. | routes are loaded by the RouteServiceProvider within a group which
  25. | is assigned the "api" middleware group. Enjoy building your API!
  26. |
  27. */
  28. Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
  29. return $request->user();
  30. });
  31. Route::post('/login', function (Request $request) {
  32. $request->validate([
  33. 'email' => 'required|email',
  34. 'password' => 'required',
  35. ]);
  36. $user = User::where('email', $request->email)->first();
  37. if (!$user || !Hash::check($request->password, $user->password)) {
  38. throw ValidationException::withMessages([
  39. 'email' => ['The provided credentials are incorrect.'],
  40. ]);
  41. }
  42. return [
  43. 'token' => $user->createToken('login')->plainTextToken,
  44. 'userData' => json_encode($user),
  45. ];
  46. });
  47. Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
  48. $user = $request->user();
  49. $user->tokens()->delete();
  50. return $user;
  51. });
  52. Route::middleware('auth:sanctum')->group(function () {
  53. //users controller
  54. Route::post('/user/index', [UserController::class, 'index']);
  55. Route::post('/user/show', [UserController::class, 'show']);
  56. Route::post('/user/destroy', [UserController::class, 'destroy']);
  57. //blogs controller
  58. Route::post('/blog/index', [BlogController::class, 'index']);
  59. Route::post('/blog/index-page', [BlogController::class, 'index_page']);
  60. Route::post('/blog/sidebar', [BlogController::class, 'sidebar']);
  61. Route::post('/blog/total-count', [BlogController::class, 'total_count']);
  62. Route::post('/blog/show', [BlogController::class, 'show']);
  63. Route::post('/blog/store', [BlogController::class, 'store']);
  64. Route::post('/blog/edit', [BlogController::class, 'edit']);
  65. Route::post('/blog/destroy', [BlogController::class, 'destroy']);
  66. //blogs image controller
  67. Route::post('/blog-image/index', [BlogImageController::class, 'index']);
  68. Route::post('/blog-image/show', [BlogImageController::class, 'show']);
  69. Route::post('/blog-image/store', [BlogImageController::class, 'store']);
  70. //comments controller
  71. Route::post('/comment/index-by-blog', [CommentController::class, 'index_by_blog']);
  72. Route::post('/comment/index-count', [CommentController::class, 'index_count']);
  73. Route::post('/comment/show', [CommentController::class, 'show']);
  74. Route::post('/comment/store', [CommentController::class, 'store']);
  75. Route::post('/comment/destroy', [CommentController::class, 'destroy']);
  76. });
  77. //todo count blog comment
  78. Route::middleware('auth:sanctum')->post('/blog/sideba', function (Request $request) {
  79. $recentPosts = DB::select("SELECT TOP(4)
  80. blogs.id,
  81. title,
  82. blogs.updated_at AS updatedTime,
  83. t.total AS comments,
  84. saveName
  85. FROM [laravel_kevin].[dbo].[blogs]
  86. LEFT JOIN [dbo].[users] ON [blogs].[writer] = [users].[id]
  87. LEFT JOIN (
  88. SELECT [blogId],COUNT(*) AS total
  89. FROM [laravel_kevin].[dbo].[comments]
  90. GROUP BY [blogId]) as t ON [blogs].[id] = [t].[blogId]
  91. LEFT JOIN [dbo].[blog_images] ON [blogs].[id] = [blog_images].[blogId]
  92. ORDER BY comments DESC");
  93. $categories = [
  94. ['category' => 'Fashion', 'icon' => 'WatchIcon'],
  95. ['category' => 'Food', 'icon' => 'ShoppingCartIcon'],
  96. ['category' => 'Gaming', 'icon' => 'CommandIcon'],
  97. ['category' => 'Quote', 'icon' => 'HashIcon'],
  98. ['category' => 'Video', 'icon' => 'VideoIcon'],
  99. ];
  100. return ['recentPosts' => $recentPosts, 'categories' => $categories];
  101. });
  102. Route::post('/blog-image/fake', function (Request $request) {
  103. $request->validate([
  104. 'blogId' => 'required',
  105. ]);
  106. for ( $i=$request->blogId ; $i<11 ; $i++ ) {
  107. BlogImage::insert([
  108. 'blogId' => $i,
  109. 'saveName' => 'banner-'.$i.'.jpg',
  110. 'fileName' => 'banner-'.$i.'.jpg',
  111. 'created_at' => now(),
  112. 'updated_at' => now(),
  113. ]);
  114. }
  115. return 'success';
  116. });