Added the exam information to the ticket submission

This commit is contained in:
Tiago Ribeiro
2024-03-20 21:24:09 +00:00
parent 1823538058
commit 06684a4900
4 changed files with 51 additions and 25 deletions

View File

@@ -1,5 +1,6 @@
import {Ticket, TicketType, TicketTypeLabel} from "@/interfaces/ticket";
import {User} from "@/interfaces/user";
import useExamStore from "@/stores/examStore";
import axios from "axios";
import {useState} from "react";
import {toast} from "react-toastify";
@@ -20,6 +21,8 @@ export default function TicketSubmission({user, page, onClose}: Props) {
const [description, setDescription] = useState("");
const [isLoading, setIsLoading] = useState(false);
const examState = useExamStore((state) => state);
const submit = () => {
if (!type) return toast.error("Please choose a type!", {toastId: "missing-type"});
if (subject.trim() === "")
@@ -48,6 +51,18 @@ export default function TicketSubmission({user, page, onClose}: Props) {
type,
reportedFrom: page,
description,
examInformation:
page.includes("exam") || page.includes("exercises")
? {
exam: examState.exam?.id || "",
exams: examState.exams.map((x) => x.id),
exerciseIndex: examState.exerciseIndex,
moduleIndex: examState.moduleIndex,
partIndex: examState.partIndex,
questionIndex: examState.questionIndex,
selectedModules: examState.selectedModules,
}
: undefined,
};
axios

View File

@@ -75,7 +75,7 @@ export default function Navbar({user, path, navDisabled = false, focusMode = fal
<button
className={clsx(
"border-mti-purple-light tooltip tooltip-bottom flex h-8 w-8 flex-col items-center justify-center rounded-full border p-1",
"hover:bg-mti-purple-light transition duration-300 ease-in-out hover:text-white",
"hover:bg-mti-purple-light transition duration-300 ease-in-out hover:text-white z-20",
)}
data-tip="Submit a help/feedback ticket"
onClick={() => setIsTicketOpen(true)}>

View File

@@ -1,38 +1,48 @@
import { Type } from "./user";
import {Module} from ".";
import {Type} from "./user";
export interface Ticket {
id: string;
date: string;
status: TicketStatus;
type: TicketType;
reporter: TicketReporter;
reportedFrom: string;
description: string;
subject: string;
assignedTo?: string;
id: string;
date: string;
status: TicketStatus;
type: TicketType;
reporter: TicketReporter;
reportedFrom: string;
description: string;
subject: string;
assignedTo?: string;
examInformation?: {
exams: string[];
exam: string;
selectedModules: Module[];
moduleIndex: number;
partIndex: number;
exerciseIndex: number;
questionIndex: number;
};
}
export interface TicketReporter {
id: string;
name: string;
email: string;
type: Type;
id: string;
name: string;
email: string;
type: Type;
}
export type TicketType = "feedback" | "bug" | "help";
export const TicketTypeLabel: { [key in TicketType]: string } = {
feedback: "Feedback",
bug: "Bug",
help: "Help",
export const TicketTypeLabel: {[key in TicketType]: string} = {
feedback: "Feedback",
bug: "Bug",
help: "Help",
};
export type TicketStatus = "submitted" | "in-progress" | "completed";
export const TicketStatusLabel: { [key in TicketStatus]: string } = {
submitted: "Submitted",
"in-progress": "In Progress",
completed: "Completed",
export const TicketStatusLabel: {[key in TicketStatus]: string} = {
submitted: "Submitted",
"in-progress": "In Progress",
completed: "Completed",
};
export interface TicketWithCorporate extends Ticket {
corporate?: string;
corporate?: string;
}

View File

@@ -179,6 +179,7 @@ export default function Tickets() {
<>
<Modal
isOpen={!!selectedTicket}
title={selectedTicket ? selectedTicket.id : undefined}
onClose={() => {
reload();
setSelectedTicket(undefined);