import { Tariff } from "@frontend/kitui"; import { parseAxiosError } from "@root/utils/parse-error"; import makeRequest from "@api/makeRequest"; export interface GetHistoryResponse { totalPages: number; records: HistoryRecord[]; } export type HistoryRecord = { comment: string; createdAt: string; id: string; isDeleted: boolean; key: string; rawDetails: [RawDetails, KeyValue]; updatedAt: string; userId: string; }; export interface GetHistoryResponse2 { totalPages: number; records: HistoryRecord2[]; } export type HistoryRecord2 = { comment: string; createdAt: string; id: string; isDeleted: boolean; key: string; rawDetails: { price: number; tariffs: Tariff[]; }; updatedAt: string; userId: string; }; export type KeyValue = { Key: string; Value: string | number }; export type RawDetails = { Key: "tariffs" | "price"; Value: string | number | KeyValue[][]; }; const API_URL = `${process.env.REACT_APP_DOMAIN}/customer`; export async function getHistory(): Promise< [GetHistoryResponse | GetHistoryResponse2 | null, string?] > { try { const historyResponse = await makeRequest< never, GetHistoryResponse | GetHistoryResponse2 >({ url: `${API_URL}/history?page=1&limit=100&type=payCart`, method: "GET", useToken: true, }); if (!Array.isArray(historyResponse.records[0]?.rawDetails)) { return [historyResponse] as [GetHistoryResponse2]; } const checked = historyResponse.records.map((data) => { //const buffer:RawDetails[] = []; /*(data.rawDetails as HistoryRecord["rawDetails"]).forEach((slot) => { const index = regList[slot.Key] buffer[index] = { ...slot } })*/ //Чистим дыры с помощью .filter(() => true) //@ts-ignore //data.rawDetails = buffer const checkedRowDetails = [ (data.rawDetails as HistoryRecord["rawDetails"]).find( (details) => details.Key === "tariffs" ) as RawDetails, (data.rawDetails as HistoryRecord["rawDetails"]).find( (details) => details.Key === "price" ) as KeyValue, ]; return { ...data, rawDetails: checkedRowDetails } as HistoryRecord; }); historyResponse.records = checked || []; return [historyResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [null, `Не удалось получить историю. ${error}`]; } } export const sendReport = async ( id: string ): Promise<[unknown | null, string?]> => { try { const sendReportResponse = await makeRequest<{ id: string }, unknown>({ url: `${API_URL}/sendReport`, method: "POST", body: { id }, }); return [sendReportResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [[], `Не удалось отправить отчёт. ${error}`]; } }; export const sendReportById = async ( tariffId: string ): Promise<[unknown | null, string?]> => { try { const sendReportResponse = await makeRequest({ url: `${API_URL}/sendReport/${tariffId}`, method: "POST", }); return [sendReportResponse]; } catch (nativeError) { const [error] = parseAxiosError(nativeError); return [[], `Не удалось отправить отчёт. ${error}`]; } };