Pull Request branch dev-clone to main #1

Merged
gitea merged 429 commits from dev-clone into main 2024-12-23 09:31:34 +00:00
Showing only changes of commit 6e52f5dab2 - Show all commits

View File

@ -0,0 +1,120 @@
import client from "@/honoClient";
import fetchRPC from "@/utils/fetchRPC";
import { queryOptions } from "@tanstack/react-query";
import { InferRequestType } from "hono";
// Query untuk mendapatkan skor assessment saat ini
export const getCurrentAssessmentScoreQueryOptions = (assessmentId: string) =>
queryOptions({
queryKey: ["assessment", { assessmentId }],
queryFn: () =>
fetchRPC(
client.assessments.getCurrentAssessmentScore.$get({
query: {
assessmentId,
},
})
),
});
export const fetchAspects = async () => {
return await fetchRPC(
client.assessments.aspect.$get({
query: {}
})
);
};
// Query untuk mendapatkan semua pertanyaan berdasarkan halaman dan limit
export const getQuestionsAllQueryOptions = (page: number, limit: number, q?: string) =>
queryOptions({
queryKey: ["assessment", { page, limit, q }],
queryFn: () =>
fetchRPC(
client.assessments.getAllQuestions.$get({
query: {
limit: String(limit),
page: String(page),
q: q || "",
},
})
),
});
// Query untuk mendapatkan jawaban berdasarkan assessment ID
export const getAnswersQueryOptions = (assessmentId: string, page: number, limit: number, q?: string) =>
queryOptions({
queryKey: ["assessment", { assessmentId, page, limit, q }],
queryFn: () =>
fetchRPC(
client.assessments.getAnswers.$get({
query: {
assessmentId,
limit: String(limit),
page: String(page),
q: q || "",
},
})
),
});
// Query untuk toggle flag jawaban berdasarkan questionId
export const toggleFlagAnswer = async (questionId: string) => {
return await fetchRPC(
client.assessments[":questionId"].toggleFlag.$patch({
param: { questionId }
})
);
};
// Opsional: Jika Anda ingin menggunakan react-query untuk toggleFlag
export const toggleFlagAnswerMutationOptions = (questionId: string) => ({
mutationFn: () => toggleFlagAnswer(questionId),
});
// Di file queries (sesuaikan tipe yang diperlukan untuk submitAnswer)
export const submitAnswer = async (
form: {
optionId: string;
assessmentId: string;
validationInformation: string;
}
) => {
return await fetchRPC(
client.assessments.submitAnswer.$post({
json: form,
})
);
};
// Opsional: Jika Anda ingin menggunakan react-query untuk submitAnswer
export const submitAnswerMutationOptions = () => ({
mutationFn: submitAnswer,
});
// Query untuk mendapatkan rata-rata skor berdasarkan aspectId dan assessmentId
export const getAverageScoreQueryOptions = (assessmentId: string) =>
queryOptions({
queryKey: ["averageScore", { assessmentId }],
queryFn: () =>
fetchRPC(
client.assessments["average-score"].aspects.assessments[":assessmentId"].$get({
param: {
assessmentId,
},
})
),
});
export const getAverageScoreSubAspectQueryOptions = (assessmentId: string) =>
queryOptions({
queryKey: ["averageScoreSubAspects", { assessmentId }],
queryFn: () =>
fetchRPC(
client.assessments["average-score"]["sub-aspects"].assessments[":assessmentId"].$get({
param: {
assessmentId,
},
})
),
});