2024-04-16 19:46:07 +00:00
|
|
|
|
import { Tariff } from "@frontend/kitui"
|
2023-11-05 23:33:40 +00:00
|
|
|
|
import { parseAxiosError } from "@root/utils/parse-error"
|
2024-04-16 19:46:07 +00:00
|
|
|
|
import makeRequest from "@api/makeRequest"
|
2023-09-12 21:45:18 +00:00
|
|
|
|
|
|
|
|
|
export interface GetHistoryResponse {
|
2024-01-04 10:20:14 +00:00
|
|
|
|
totalPages: number;
|
|
|
|
|
records: HistoryRecord[];
|
2023-09-12 21:45:18 +00:00
|
|
|
|
}
|
|
|
|
|
|
2023-11-10 14:51:50 +00:00
|
|
|
|
export type HistoryRecord = {
|
2024-01-04 10:20:14 +00:00
|
|
|
|
comment: string;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
id: string;
|
|
|
|
|
isDeleted: boolean;
|
|
|
|
|
key: string;
|
|
|
|
|
rawDetails: [RawDetails, KeyValue];
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
userId: string;
|
2023-09-15 21:00:02 +00:00
|
|
|
|
};
|
|
|
|
|
|
2024-03-12 17:07:56 +00:00
|
|
|
|
export interface GetHistoryResponse2 {
|
|
|
|
|
totalPages: number;
|
|
|
|
|
records: HistoryRecord[];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type HistoryRecord2 = {
|
|
|
|
|
comment: string;
|
|
|
|
|
createdAt: string;
|
|
|
|
|
id: string;
|
|
|
|
|
isDeleted: boolean;
|
|
|
|
|
key: string;
|
|
|
|
|
rawDetails: {
|
|
|
|
|
price: number;
|
|
|
|
|
tariffs: Tariff[];
|
|
|
|
|
};
|
|
|
|
|
updatedAt: string;
|
|
|
|
|
userId: string;
|
|
|
|
|
};
|
|
|
|
|
|
2023-10-16 21:05:18 +00:00
|
|
|
|
type RawDetails = { Key: string; Value: KeyValue[][] }
|
2023-09-16 12:24:19 +00:00
|
|
|
|
type KeyValue = { Key: string; Value: string | number };
|
|
|
|
|
|
2024-01-04 10:20:14 +00:00
|
|
|
|
const regList:Record<string, number> = {
|
|
|
|
|
"tariffs": 0,
|
|
|
|
|
"price": 1
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-12 17:07:56 +00:00
|
|
|
|
export async function getHistory(): Promise<[GetHistoryResponse | GetHistoryResponse2 | null, string?]> {
|
2023-11-05 23:33:40 +00:00
|
|
|
|
try {
|
|
|
|
|
const historyResponse = await makeRequest<never, GetHistoryResponse>({
|
2024-01-17 20:04:39 +00:00
|
|
|
|
url: process.env.REACT_APP_DOMAIN + "/customer/history?page=1&limit=100&type=payCart",
|
2023-11-05 23:33:40 +00:00
|
|
|
|
method: "get",
|
|
|
|
|
useToken: true,
|
|
|
|
|
})
|
2023-09-12 21:45:18 +00:00
|
|
|
|
|
2024-03-12 17:07:56 +00:00
|
|
|
|
if (!Array.isArray(historyResponse.records[0]?.rawDetails)) {
|
|
|
|
|
return [historyResponse] as [GetHistoryResponse2]
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-04 10:20:14 +00:00
|
|
|
|
const checked = historyResponse.records.map((data) => {
|
|
|
|
|
const buffer:KeyValue[] = []
|
|
|
|
|
data.rawDetails.forEach((slot) => {
|
|
|
|
|
let index = regList[slot.Key as string]
|
|
|
|
|
//@ts-ignore
|
|
|
|
|
buffer[index] = { Key: slot.Key, Value: slot.Value }
|
|
|
|
|
})
|
2024-04-16 19:51:07 +00:00
|
|
|
|
//Чистим дыры с помощью .filter(() => true)
|
2024-01-04 10:20:14 +00:00
|
|
|
|
//@ts-ignore
|
|
|
|
|
data.rawDetails = buffer
|
|
|
|
|
return data
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
historyResponse.records = checked || []
|
2023-11-05 23:33:40 +00:00
|
|
|
|
return [historyResponse]
|
|
|
|
|
} catch (nativeError) {
|
|
|
|
|
const [error] = parseAxiosError(nativeError)
|
2023-09-12 21:45:18 +00:00
|
|
|
|
|
2023-11-05 23:33:40 +00:00
|
|
|
|
return [null, `Не удалось получить историю. ${error}`]
|
|
|
|
|
}
|
2023-09-12 21:45:18 +00:00
|
|
|
|
}
|