add complain registration, add view complaint inforation, add status change for marches when user click on mat

This commit is contained in:
smanylov
2026-03-26 17:30:30 +07:00
parent c9f230a76f
commit 7ae0fecb61
8 changed files with 518 additions and 166 deletions
+136 -2
View File
@@ -22,10 +22,10 @@ export async function getViolationSearchStatus() {
if (text) {
try {
const parsed = JSON.parse(text);
console.log('Parsed:', parsed);
return parsed;
} catch (e) {
console.log('Not JSON, raw text:', text);
return {
status: text === 'Task not found' ? 'task-not-found' : text
};
@@ -257,4 +257,138 @@ export async function fetchViolationStatistic() {
} catch (error) {
return null
}
}
interface complainBody {
previousText: string,
errorMessage: string | null,
success: boolean
}
export async function createComplaint(
state: complainBody | undefined,
formData: FormData
): Promise<complainBody> {
const email = await getSessionData('email');
const violationId = formData.get('violationId') as string || '';
const text = formData.get('note') as string || '';
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30013,
message_body: {
action: 'create',
violation_id: violationId,
text: text,
email: email
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed?.message_code === 0) {
return {
errorMessage: violationId,
previousText: text,
success: true
};
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return {
errorMessage: violationId,
previousText: text,
success: false
}
}
}
export async function fetchComplainInfo(id: number) {
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30013,
message_body: {
action: 'get_by_violation',
violation_id: id
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed?.message_code === 0) {
return {
body: parsed?.message_body
}
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return {
errorMessage: 'error'
}
}
}
export async function updateMatchStatus(id: number, status: string) {
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 30009,
message_body: {
action: 'updateStatus',
violation_id: id,
status: status,
token: token
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed?.message_body.status === 'SHOWED') {
return true
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return false
}
}