plagiatcheck part complated base new request types

This commit is contained in:
nabijonovdavronbek619@gmail.com
2026-04-07 19:02:03 +05:00
parent 8f75349297
commit 2baf9703fe
20 changed files with 174 additions and 96 deletions

View File

@@ -1,5 +1,7 @@
// ─── Domain Types ───────────────────────────────────────────────────────────
import { PriceCalculate } from '@/features/modals/paymentModal/lib/types';
export interface User {
id: string;
firstName: string;
@@ -21,6 +23,11 @@ export interface PlagiarismSubmissionResponse {
certificateUrl?: string;
}
export interface CheckDocumentRequestResponse extends PriceCalculate {
id: number;
order_id: number;
}
// ─── Form State Types ────────────────────────────────────────────────────────
export interface PlagiarismFormState {

View File

@@ -1,6 +1,7 @@
'use client';
import { useState, useCallback, useEffect } from 'react';
import {
CheckDocumentRequestResponse,
PlagiarismFormErrors,
PlagiarismFormState,
SubmissionState,
@@ -11,6 +12,7 @@ import { useUserPlagiatStore } from '@/shared/zustand/user';
import { useMutation } from '@tanstack/react-query';
import { links } from '@/shared/request/links';
import { apiRequest } from '@/shared/request/apiRequest';
import { PriceCalculate } from '@/features/modals/paymentModal/lib/types';
// ─── Initial States ──────────────────────────────────────────────────────────
@@ -23,6 +25,12 @@ const INITIAL_FORM: PlagiarismFormState = {
document_type: 'boshqa',
};
const PRICE: PriceCalculate = {
service_fee: 0,
discount: 0,
total_price: 0,
};
const INITIAL_SUBMISSION: SubmissionState = {
status: 'idle',
error: null,
@@ -51,9 +59,8 @@ export function usePlagiarismForm() {
const [isPaymentOpen, setIsPaymentOpen] = useState(false);
const [submission, setSubmission] =
useState<SubmissionState>(INITIAL_SUBMISSION);
// const route = useRouter();
// const [document_id, setDocument_id] = useState<number>(0);
const [order_id, setOrder_id] = useState<number>(0);
const [prices, setPrices] = useState<PriceCalculate>(PRICE);
const checkdocumentRequest = useMutation({
mutationKey: ['plagiarismCheck'],
@@ -61,9 +68,14 @@ export function usePlagiarismForm() {
apiRequest('POST', links.plagiarismCheck, data),
onSuccess: (res) => {
console.log('uploda: ', res);
const resdata = res.data as { id: number; order_id: number };
const resdata = res.data as CheckDocumentRequestResponse;
const priceInfo: PriceCalculate = {
total_price: resdata?.total_price || 0,
discount: resdata?.discount || 0,
service_fee: resdata?.service_fee || 0,
};
setPrices(priceInfo);
console.log('order_id:', resdata.id);
// setDocument_id(resdata.id);
setOrder_id(resdata.order_id);
setSubmission({ status: 'success', error: null });
setForm(INITIAL_FORM);
@@ -83,7 +95,6 @@ export function usePlagiarismForm() {
onSuccess: (res) => {
console.log('payment res: ', res);
window.open(res.data.payment_link, '_self');
//route.push(`/${document_id}`);
setIsPaymentOpen(false);
},
onError: (err) => {
@@ -140,7 +151,7 @@ export function usePlagiarismForm() {
fd.append('file', form.file!); // File object — multipart/form-data
fd.append('certificate', String(form.certificate));
fd.append('total_price', '41200');
fd.append('document_type', form.document_type);
fd.append('type', form.document_type);
checkdocumentRequest.mutate(fd);
},
[form],
@@ -177,5 +188,6 @@ export function usePlagiarismForm() {
setIsPaymentOpen,
isPaymentOpen,
setOption,
prices,
};
}

View File

@@ -63,6 +63,7 @@ export function PlagiarismCheckForm() {
isPaymentOpen,
setOption,
setIsPaymentOpen,
prices,
} = usePlagiarismForm();
return (
@@ -203,12 +204,7 @@ export function PlagiarismCheckForm() {
<PaymentModal
isOpen={isPaymentOpen}
onClose={() => setIsPaymentOpen(false)}
price={{
service_fee: 41200,
discount: 5200,
total_price: 36000,
currency: 'UZS',
}}
price={prices}
onConfirmPayment={handleSubmit}
isLoading={isLoading}
/>