diff --git a/BACKEND/Modules/Admin/app/Http/Controllers/CriteriasController.php b/BACKEND/Modules/Admin/app/Http/Controllers/CriteriasController.php index 92e45f1..f751818 100644 --- a/BACKEND/Modules/Admin/app/Http/Controllers/CriteriasController.php +++ b/BACKEND/Modules/Admin/app/Http/Controllers/CriteriasController.php @@ -229,7 +229,8 @@ class CriteriasController extends Controller 'criterias' => 'required|array', 'users' => 'required|array', ]); - // $sprintId = (int)$sprintId; + $sprintId = (int)$sprintId; + // Sử dụng transaction để đảm bảo tính toàn vẹn dữ liệu DB::beginTransaction(); try { @@ -245,8 +246,12 @@ class CriteriasController extends Controller $sprint->update([ 'name' => $validated['name'], 'project_id' => $validated['project_id'], - 'point' => $validated['finalPoint'] ?? "", - // Cập nhật các trường khác nếu có + 'point' => $request->finalPoint ?? "", + + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'complete_date' => $request->complete_date, + ]); } else { // Nếu không tồn tại, tạo mới Sprint @@ -254,15 +259,18 @@ class CriteriasController extends Controller 'id' => $sprintId, 'name' => $validated['name'], 'project_id' => $validated['project_id'], - 'point' => $validated['finalPoint'] ?? "", - // Thêm các trường khác nếu có + 'point' => $request->finalPoint ?? "", + + 'start_date' => $request->start_date, + 'end_date' => $request->end_date, + 'complete_date' => $request->complete_date, ]); } // Thêm lại các liên kết sprints_criterias foreach ($validated['criterias'] as $criteria) { SprintCriteria::create([ - 'sprint_id' => $sprint->id, + 'sprint_id' => $sprintId, 'criteria_id' => $criteria['id'], 'point' => $criteria['point'] ?? "", 'expect_result' => $criteria['expect'] ?? "", @@ -276,7 +284,7 @@ class CriteriasController extends Controller UserCriteria::create([ 'user_email' => $userCriteria['user_email'], 'criteria_id' => $userCriteria['criteria_id'], - 'sprint_id' => $sprint->id, + 'sprint_id' => $sprintId, 'point' => $userCriteria['point'] ?? "", 'note' => $userCriteria['note'] ?? "", ]); diff --git a/BACKEND/database/migrations/2024_09_12_084137_create_users_criterias_table.php b/BACKEND/database/migrations/2024_09_12_084137_create_users_criterias_table.php index 2b6acf6..2795301 100644 --- a/BACKEND/database/migrations/2024_09_12_084137_create_users_criterias_table.php +++ b/BACKEND/database/migrations/2024_09_12_084137_create_users_criterias_table.php @@ -20,7 +20,7 @@ return new class extends Migration $table->string('created_by'); $table->timestamps(); - $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + // $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->foreign('criteria_id')->references('id')->on('criterias')->onDelete('cascade'); $table->foreign('sprint_id')->references('id')->on('sprint')->onDelete('cascade'); }); diff --git a/FRONTEND/src/pages/SprintReview/SprintReview.tsx b/FRONTEND/src/pages/SprintReview/SprintReview.tsx index de03413..3cfd387 100644 --- a/FRONTEND/src/pages/SprintReview/SprintReview.tsx +++ b/FRONTEND/src/pages/SprintReview/SprintReview.tsx @@ -32,6 +32,10 @@ type DataProject = { type DataSprint = { id: number name: string + + startDate?: string + endDate?: string + completeDate?: string } type DataCriteriaSprint = { @@ -221,8 +225,17 @@ const SprintReview = () => { } const handleUpdate = async () => { + const dataSprintSearch = dataSprint.find( + (item: DataSprint) => item.id == Number(filter.sprint), + ) + const values = { name: dataSprint.find((item: any) => item.id == filter.sprint)?.name, + + start_date: dataSprintSearch?.startDate, + end_date: dataSprintSearch?.endDate, + complete_date: dataSprintSearch?.completeDate, + project_id: filter.project, criterias: criteriaSprint, users: criteriaUsers,