25
25
26
26
use Illuminate \Http \Request ;
27
27
use App \Models \KetQua ;
28
- use App \Models \SinhVien ;
29
28
use App \Models \DeThi ;
29
+ use Illuminate \Support \Facades \Auth ;
30
30
31
31
class KetQuaController extends Controller
32
32
{
33
33
// Xem kết quả của sinh viên cho một đề thi qua API
34
34
public function show ($ sinhvienId , $ dethiId )
35
35
{
36
- // Tìm kết quả của sinh viên với ID và đề thi được chỉ định
37
36
$ ketQua = KetQua::where ('sinhvien_id ' , $ sinhvienId )
38
37
->where ('dethi_id ' , $ dethiId )
39
38
->first ();
40
39
41
- // Nếu không tìm thấy kết quả, trả về thông báo lỗi 404
42
40
if (!$ ketQua ) {
43
41
return response ()->json (['message ' => 'Không tìm thấy kết quả. ' ], 404 );
44
42
}
45
43
46
- // Nếu tìm thấy kết quả, trả về dữ liệu kết quả dưới dạng JSON với mã trạng thái 200
47
44
return response ()->json ($ ketQua , 200 );
48
45
}
49
46
50
- // Views
51
-
52
- // Hiển thị kết quả của sinh viên cho một đề thi qua giao diện
53
- public function view ($ sinhvienId , $ dethiId )
47
+ // Thêm kết quả qua API
48
+ public function store (Request $ request )
54
49
{
55
- // Tìm kết quả của sinh viên với ID và đề thi được chỉ định
56
- $ ketQua = KetQua::where ('sinhvien_id ' , $ sinhvienId )
57
- ->where ('dethi_id ' , $ dethiId )
58
- ->first ();
50
+ // Lấy sinh viên từ token đăng nhập (Sanctum)
51
+ $ sinhVien = Auth::guard ('sanctum ' )->user ();
59
52
60
- // Nếu không tìm thấy kết quả, trả về view thông báo không tìm thấy kết quả
61
- if (!$ ketQua ) {
62
- return view ('ketqua.notfound ' );
53
+ if (!$ sinhVien ) {
54
+ return response ()->json (['message ' => 'Không tìm thấy sinh viên đã đăng nhập. ' ], 401 );
63
55
}
64
56
65
- // Nếu tìm thấy kết quả, trả về view hiển thị kết quả với dữ liệu kết quả
66
- return view ('ketqua.show ' , compact ('ketQua ' ));
57
+ // Xác thực dữ liệu đầu vào từ request
58
+ $ request ->validate ([
59
+ 'diemSo ' => 'required|numeric|min:0|max:10 ' , // Kiểm tra điểm số là số và nằm trong khoảng 0-10
60
+ 'danhSachDapAn ' => 'required|json ' , // Đáp án phải là JSON hợp lệ
61
+ 'dethi_id ' => 'required|exists:tb_dethi,id ' , // Đề thi phải tồn tại
62
+ ]);
63
+
64
+ // Tạo mới kết quả và lưu vào cơ sở dữ liệu
65
+ $ ketQua = KetQua::create ([
66
+ 'diemSo ' => $ request ->diemSo ,
67
+ 'danhSachDapAn ' => $ request ->danhSachDapAn ,
68
+ 'dethi_id ' => $ request ->dethi_id ,
69
+ 'sinhvien_id ' => $ sinhVien ->id , // Chèn sinhvien_id từ sinh viên đã đăng nhập
70
+ ]);
71
+
72
+ // Trả về kết quả vừa được thêm với mã trạng thái 201
73
+ return response ()->json (['message ' => 'Kết quả đã được lưu thành công. ' , 'ketQua ' => $ ketQua ], 201 );
67
74
}
68
75
}
0 commit comments