From 4fd18b988e33d67995057690b896400fc68f185d Mon Sep 17 00:00:00 2001 From: nguentrungthat Date: Thu, 6 Feb 2025 13:16:07 +0700 Subject: [PATCH] Update --- .../Controllers/ProjectReviewController.php | 82 +++++++++++++++++++ .../Admin/app/Models/ProjectReview.php | 19 +++++ BACKEND/Modules/Admin/routes/api.php | 5 ++ ...25_02_06_100745_create_project_reviews.php | 30 +++++++ 4 files changed, 136 insertions(+) create mode 100644 BACKEND/Modules/Admin/app/Http/Controllers/ProjectReviewController.php create mode 100644 BACKEND/Modules/Admin/app/Models/ProjectReview.php create mode 100644 BACKEND/database/migrations/2025_02_06_100745_create_project_reviews.php diff --git a/BACKEND/Modules/Admin/app/Http/Controllers/ProjectReviewController.php b/BACKEND/Modules/Admin/app/Http/Controllers/ProjectReviewController.php new file mode 100644 index 0000000..579c0a2 --- /dev/null +++ b/BACKEND/Modules/Admin/app/Http/Controllers/ProjectReviewController.php @@ -0,0 +1,82 @@ +validate([ + 'userID' => 'required|exists:users,id', + 'fromDate' => 'nullable|date', + 'toDate' => 'nullable|date', + ]); + + $startDate = $request->input('fromDate'); + $endDate = $request->input('toDate'); + + $projectsData = ProjectReview::where('user_id', $request->input('userID')) + ->whereHas('user', function ($query) use ($startDate, $endDate) { + if ($startDate && $endDate) { + $query->whereBetween('updated_at', [$startDate, $endDate]); + } elseif ($startDate) { + $query->where('updated_at', '>=', $startDate); + } elseif ($endDate) { + $query->where('updated_at', '<=', $endDate); + } + }) + ->get(); + + return AbstractController::ResultSuccess($projectsData); + } + + /** + * Store a newly created resource in storage. + */ + public function create(Request $request) + { + $request->validate([ + 'name' => 'required|string', + 'role' => 'required|string', + 'note' => 'required|string', + 'user_id' => 'required|exists:users,id', + ]); + + $review = ProjectReview::create($request->all()); + return response()->json($review, 201); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, ProjectReview $projectReview) + { + $request->validate([ + 'name' => 'sometimes|required|string', + 'role' => 'sometimes|required|string', + 'note' => 'sometimes|required|string', + 'user_id' => 'sometimes|required|exists:users,id', + ]); + + $projectReview->update($request->all()); + return response()->json($projectReview); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(ProjectReview $projectReview) + { + $projectReview->delete(); + return response()->json(['message' => 'Deleted successfully']); + } +} diff --git a/BACKEND/Modules/Admin/app/Models/ProjectReview.php b/BACKEND/Modules/Admin/app/Models/ProjectReview.php new file mode 100644 index 0000000..d38f06c --- /dev/null +++ b/BACKEND/Modules/Admin/app/Models/ProjectReview.php @@ -0,0 +1,19 @@ +belongsTo(User::class); + } +} diff --git a/BACKEND/Modules/Admin/routes/api.php b/BACKEND/Modules/Admin/routes/api.php index d3aef1d..b8e208f 100755 --- a/BACKEND/Modules/Admin/routes/api.php +++ b/BACKEND/Modules/Admin/routes/api.php @@ -17,6 +17,7 @@ use Modules\Admin\app\Http\Controllers\TimekeepingController; use Modules\Admin\app\Http\Controllers\TrackingController; use Modules\Admin\app\Http\Controllers\CriteriasController; use Modules\Admin\app\Http\Controllers\EvaluationController; +use Modules\Admin\app\Http\Controllers\ProjectReviewController; use Modules\Admin\app\Http\Controllers\ProfileController; use Modules\Admin\app\Http\Controllers\TechnicalController; use Modules\Admin\app\Http\Controllers\TestCaseForSprintController; @@ -192,6 +193,10 @@ Route::middleware('api') Route::get('/sprint-review', [EvaluationController::class, 'sprintReview'])->middleware('check.permission:admin'); Route::get('/technical', [EvaluationController::class, 'technical'])->middleware('check.permission:admin'); Route::get('/report', [EvaluationController::class, 'report'])->middleware('check.permission:admin'); + Route::get('/project-review', [ProjectReviewController::class, 'getListReviews'])->middleware('check.permission:admin'); + Route::get('/project-review/create', [ProjectReviewController::class, 'create'])->middleware('check.permission:admin'); + Route::get('/project-review/update', [ProjectReviewController::class, 'update'])->middleware('check.permission:admin'); + Route::get('/project-review/delete', [ProjectReviewController::class, 'destroy'])->middleware('check.permission:admin'); }); Route::group([ diff --git a/BACKEND/database/migrations/2025_02_06_100745_create_project_reviews.php b/BACKEND/database/migrations/2025_02_06_100745_create_project_reviews.php new file mode 100644 index 0000000..d6603b7 --- /dev/null +++ b/BACKEND/database/migrations/2025_02_06_100745_create_project_reviews.php @@ -0,0 +1,30 @@ +id(); + $table->string('name'); + $table->string('role'); + $table->longText('note'); + $table->foreignId('user_id')->constrained('users')->onDelete('cascade'); // Khóa ngoại tới bảng users + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('project_reviews'); + } +};