diff --git a/src/server/study/problems.c b/src/server/study/problems.c index a180284..58d3880 100644 --- a/src/server/study/problems.c +++ b/src/server/study/problems.c @@ -1,4 +1,5 @@ #include "db/problems.h" +#include "db/records.h" #include "jwt/jwt.h" #include "server/response.h" #include "server/study.h" @@ -176,7 +177,7 @@ static void impl_modify(mg_connection* conn, problem_form_t* form) res_200(conn, "success to modify the problem"); } -static void impl_check(mg_connection* conn, problem_form_t* form) +static void impl_check(mg_connection* conn, problem_form_t* form, const char* user_id) { if (!form->has_id) { res_need_xxx(conn, "problem id"); @@ -198,9 +199,15 @@ static void impl_check(mg_connection* conn, problem_form_t* form) int flag = check_answer(form->id, form->answer, &result); if (!flag) { + add_record_uke(user_id, form->id, form->answer); res_500(conn, "fail to check the answer"); return; } + if (result) { + add_record_ac(user_id, form->id, form->answer); + } else { + add_record_wa(user_id, form->id, form->answer); + } res_check_answer(conn, result); } @@ -276,17 +283,14 @@ int problems_handler(mg_connection* conn, void* cbdata) impl_modify(conn, &form); } } else if (!strcmp(form.action, "check")) { - impl_check(conn, &form); + impl_check(conn, &form, user_id); } else if (!strcmp(form.action, "all")) { - if (result == 2) { - res_permission_denied(conn); - } else { - impl_all(conn, &form); - } + impl_all(conn, &form); } else { res_bad_action(conn); } } + free(user_id); } problem_form_dtor(&form);