From c8a043563fefd9f21eff89bf307d2cbcfdb59f50 Mon Sep 17 00:00:00 2001 From: ParneetkaurDev Date: Wed, 15 Jan 2025 12:41:30 +0530 Subject: [PATCH 1/6] Made frontend changes --- .../@services/draft-healthcare-service | 2 +- .../domain-repos/@services/draft-services | 2 +- apps/frontend/src/components/CustomDrawer.tsx | 33 +++++++++++-------- .../frontend/src/components/MessageDialog.tsx | 7 +++- .../src/components/SandboxRequestSection.tsx | 1 + apps/frontend/src/pages/landing/index.tsx | 8 +++-- apps/frontend/src/pages/mock/index.tsx | 2 +- .../pages/sandbox/InitiateRequestSection.tsx | 1 + apps/frontend/src/pages/sandbox/index.tsx | 2 +- .../@services/draft-healthcare-services | 2 +- .../domain-repos/@services/draft-services | 2 +- 11 files changed, 38 insertions(+), 24 deletions(-) diff --git a/apps/backend/domain-repos/@services/draft-healthcare-service b/apps/backend/domain-repos/@services/draft-healthcare-service index d91c8c66..7de7b314 160000 --- a/apps/backend/domain-repos/@services/draft-healthcare-service +++ b/apps/backend/domain-repos/@services/draft-healthcare-service @@ -1 +1 @@ -Subproject commit d91c8c66e5cd4b39a1701b92ce856d339941c9d2 +Subproject commit 7de7b3145ed2cc2681bebe71cd835b6317030379 diff --git a/apps/backend/domain-repos/@services/draft-services b/apps/backend/domain-repos/@services/draft-services index 74b56e0b..d56f3cc5 160000 --- a/apps/backend/domain-repos/@services/draft-services +++ b/apps/backend/domain-repos/@services/draft-services @@ -1 +1 @@ -Subproject commit 74b56e0b71bf480b01231ece66f6b289d702aece +Subproject commit d56f3cc560ec768861f66d0846f4b7c233495b9d diff --git a/apps/frontend/src/components/CustomDrawer.tsx b/apps/frontend/src/components/CustomDrawer.tsx index dd579f2d..756538b5 100644 --- a/apps/frontend/src/components/CustomDrawer.tsx +++ b/apps/frontend/src/components/CustomDrawer.tsx @@ -122,7 +122,7 @@ export const CustomDrawer = ({ children }: CustomDrawerProps) => { const { domain, setDomain } = useDomain(); const {environment,setEnvironment} = useEnvironment(); const theme = useTheme(); - const [mobileOpen, setMobileOpen] = React.useState(false); + const [mobileOpen, setMobileOpen] = React.useState(true); // eslint-disable-next-line @typescript-eslint/no-unused-vars const handleDrawerToggle = () => { @@ -135,7 +135,7 @@ export const CustomDrawer = ({ children }: CustomDrawerProps) => { setEnvironment(event.target.value.toLowerCase()); }; const drawer = ( -
+
{ return ( - + - { sx={{ mr: 2 }} > - + */} { - + { }} PaperProps={{ sx: { + // backgroundColor:"green", + height:"90%", // backgroundColor: theme.palette.primary.dark, // color: theme.palette.primary.contrastText, }, @@ -274,20 +276,23 @@ export const CustomDrawer = ({ children }: CustomDrawerProps) => { "& .MuiDrawer-paper": { boxSizing: "border-box", width: drawerWidth, + height:"95%", + position:"static", + top:"65px" }, }} > - - + {/* - - - {drawer} - - + */} + {/* */} + {drawer} + + { const { showDialog, closeDialog, message, messageType, copy } = useMessage(); const copyContent = () => { @@ -53,6 +53,11 @@ export const MessageDialog = () => { )} + + + diff --git a/apps/frontend/src/components/SandboxRequestSection.tsx b/apps/frontend/src/components/SandboxRequestSection.tsx index dbbe3fce..c802f736 100644 --- a/apps/frontend/src/components/SandboxRequestSection.tsx +++ b/apps/frontend/src/components/SandboxRequestSection.tsx @@ -112,6 +112,7 @@ export const SandboxRequestSection = () => { > Sandbox + If you are a Buyer and want to test Buyer(BAP) { return ( <> - + @@ -46,10 +47,11 @@ export const Landing = () => { display: "flex", justifyContent: "flex-start", height: "100%", + width:"80%", }} maxWidth="xl" > - + { - + Welcome to ONDC Mock/Sandbox diff --git a/apps/frontend/src/pages/mock/index.tsx b/apps/frontend/src/pages/mock/index.tsx index d2957fd4..763e830b 100644 --- a/apps/frontend/src/pages/mock/index.tsx +++ b/apps/frontend/src/pages/mock/index.tsx @@ -17,7 +17,7 @@ export const Mock = () => { return ( - + diff --git a/apps/frontend/src/pages/sandbox/InitiateRequestSection.tsx b/apps/frontend/src/pages/sandbox/InitiateRequestSection.tsx index 3013d97b..684c2290 100644 --- a/apps/frontend/src/pages/sandbox/InitiateRequestSection.tsx +++ b/apps/frontend/src/pages/sandbox/InitiateRequestSection.tsx @@ -368,6 +368,7 @@ export const InitiateRequestSection = () => { > Initiate Request: + if you are a seller and want to test Seller (BPP) diff --git a/apps/frontend/src/pages/sandbox/index.tsx b/apps/frontend/src/pages/sandbox/index.tsx index 1ae99f4b..e69055a2 100644 --- a/apps/frontend/src/pages/sandbox/index.tsx +++ b/apps/frontend/src/pages/sandbox/index.tsx @@ -18,7 +18,7 @@ export const Sandbox = () => { return ( - + diff --git a/packages/openapi/domain-repos/@services/draft-healthcare-services b/packages/openapi/domain-repos/@services/draft-healthcare-services index d91c8c66..7de7b314 160000 --- a/packages/openapi/domain-repos/@services/draft-healthcare-services +++ b/packages/openapi/domain-repos/@services/draft-healthcare-services @@ -1 +1 @@ -Subproject commit d91c8c66e5cd4b39a1701b92ce856d339941c9d2 +Subproject commit 7de7b3145ed2cc2681bebe71cd835b6317030379 diff --git a/packages/openapi/domain-repos/@services/draft-services b/packages/openapi/domain-repos/@services/draft-services index 74b56e0b..d56f3cc5 160000 --- a/packages/openapi/domain-repos/@services/draft-services +++ b/packages/openapi/domain-repos/@services/draft-services @@ -1 +1 @@ -Subproject commit 74b56e0b71bf480b01231ece66f6b289d702aece +Subproject commit d56f3cc560ec768861f66d0846f4b7c233495b9d From 4a62fbf1a7955301b6da49afaf84ec7a81b8cbba Mon Sep 17 00:00:00 2001 From: ParneetkaurDev Date: Thu, 16 Jan 2025 12:59:32 +0530 Subject: [PATCH 2/6] added transaction id in transactionsearch box --- .../frontend/src/components/MessageDialog.tsx | 14 ++++++++--- .../src/components/TransactionSearch.tsx | 23 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/apps/frontend/src/components/MessageDialog.tsx b/apps/frontend/src/components/MessageDialog.tsx index c50a2cc6..7b3855b2 100644 --- a/apps/frontend/src/components/MessageDialog.tsx +++ b/apps/frontend/src/components/MessageDialog.tsx @@ -10,15 +10,23 @@ import InfoTwoToneIcon from "@mui/icons-material/InfoTwoTone"; import WarningTwoToneIcon from "@mui/icons-material/WarningTwoTone"; import CheckCircleTwoToneIcon from "@mui/icons-material/CheckCircleTwoTone"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; -import { Link } from "react-router-dom"; +import { Link, useNavigate } from "react-router-dom"; export const MessageDialog = () => { const { showDialog, closeDialog, message, messageType, copy } = useMessage(); + const navigate = useNavigate(); const copyContent = () => { if (copy) navigator.clipboard.writeText(copy).catch((err) => { console.log(err.message); }); }; + + const handlebuttonclick=()=>{ + closeDialog(); // Close the dialog + const transactionMessage = message?.split(" ").pop(); + navigate(`/analyse?message=${transactionMessage}`); + } + return ( { )} - - diff --git a/apps/frontend/src/components/TransactionSearch.tsx b/apps/frontend/src/components/TransactionSearch.tsx index c1cd9b86..f6bc9c18 100644 --- a/apps/frontend/src/components/TransactionSearch.tsx +++ b/apps/frontend/src/components/TransactionSearch.tsx @@ -10,9 +10,10 @@ import { _getNodesAndEdges, actionComparator } from "../utils"; import axios from "axios"; import * as _ from "lodash"; import { useAnalyse, useMessage } from "../utils/hooks"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import RefreshIcon from "@mui/icons-material/Refresh"; import { VITE_SERVER_URL } from "../utils/env"; +import { useLocation } from "react-router-dom"; export const TransactionSearch = () => { const theme = useTheme(); @@ -21,6 +22,15 @@ export const TransactionSearch = () => { const { handleMessageToggle, setMessageType } = useMessage(); const [transactionId, setTransactionId] = useState(""); + const {search}=useLocation() + useEffect(()=>{ + if(search!=="" || search != undefined){ + setTransactionId( search.split("=").pop()||"") + } + },[]) + + + const fetchTransaction = async (transaction: string) => { console.log('API URL:', VITE_SERVER_URL); try { @@ -107,6 +117,12 @@ export const TransactionSearch = () => { 500 ); + const handlechange=(event: React.ChangeEvent) => { + const value = event.target.value; + setTransactionId(value); // Update state to reflect input change + requestTransaction(event); // Debounced API call + }; + const handleFetch = async () => { await fetchTransaction(transactionId); }; @@ -138,9 +154,10 @@ export const TransactionSearch = () => { > Date: Thu, 16 Jan 2025 13:20:43 +0530 Subject: [PATCH 3/6] fix/bg color --- apps/frontend/src/pages/landing/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/frontend/src/pages/landing/index.tsx b/apps/frontend/src/pages/landing/index.tsx index a4dce8bb..eced453d 100644 --- a/apps/frontend/src/pages/landing/index.tsx +++ b/apps/frontend/src/pages/landing/index.tsx @@ -19,7 +19,7 @@ export const Landing = () => { return ( <> - + Date: Fri, 17 Jan 2025 13:21:10 +0530 Subject: [PATCH 4/6] Added mock server payload functionality --- .../domain-repos/@agri/draft-agri_output | 1 + apps/backend/src/index.ts | 85 ++++++++++++ .../src/components/MockRequestSection.tsx | 129 ++++++++++++++++-- apps/frontend/src/utils/constants.ts | 29 +++- apps/frontend/src/utils/hooks/useAction.ts | 3 +- 5 files changed, 237 insertions(+), 10 deletions(-) create mode 160000 apps/backend/domain-repos/@agri/draft-agri_output diff --git a/apps/backend/domain-repos/@agri/draft-agri_output b/apps/backend/domain-repos/@agri/draft-agri_output new file mode 160000 index 00000000..64741de3 --- /dev/null +++ b/apps/backend/domain-repos/@agri/draft-agri_output @@ -0,0 +1 @@ +Subproject commit 64741de307f044bf439c6c79b2cb803ca9e82d1e diff --git a/apps/backend/src/index.ts b/apps/backend/src/index.ts index a26a264b..59308e99 100644 --- a/apps/backend/src/index.ts +++ b/apps/backend/src/index.ts @@ -26,6 +26,10 @@ import { import { retailRouter } from "./controllers/retail"; import { sendUpsolicieatedOnStatus } from "./lib/utils/sendUpsolicieatedOnStatus"; import { loadConfig } from "./lib/utils"; +import 'dotenv/config' +import path from 'path'; +import { sub } from 'date-fns/fp'; +const fs = require('fs'); export const app: Express = express(); @@ -71,6 +75,87 @@ app.use("/services", errorHandlingWrapper(servicesRouter)); app.use("/subscription", errorHandlingWrapper(subscriptionRouter)); app.use("/logistics", errorHandlingWrapper(logisticsRouter)); app.use("/agri", errorHandlingWrapper(agriRouter)); +app.use("/get-data", async (req, res) => { + // console.log("action",req.query,__dirname) + let { action, domain, subdomain,version } = req.query + console.log("---->",action, domain, subdomain,version) + let baseDir="" + switch (domain) { + case "agri": + baseDir = (subdomain === "ONDC:AGR11") ? path.join(__dirname, `../domain-repos/@${domain}/draft-agri_output/api/components/Examples/Agri_Bids_And_Auction/${action}/`) : path.join(__dirname, `../domain-repos/@${domain}/draft-agri_input/api/components/Examples/Agri_Products/${action}/`) + break; + case "logistics": + baseDir = (subdomain === "ONDC:LOG10")?path.join(__dirname, `../domain-repos/@${domain}/draft-2.x/api/components/Examples/B2B_Dom_Logistics/${action}/`):path.join(__dirname, `../domain-repos/@${domain}/draft-2.x/api/components/Examples/B2B_Int_Logistics/${action}/`) + break; + case "services": + switch (subdomain) { + case "ONDC:SRV11": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-services/api/components/Examples/Services_home_service/${action}/`) + break + case "ONDC:SRV13": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-healthcare-service/api/components/Examples/Health_care_services/${action}/`) + break; + case "ONDC:SRV16": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-astro/api/components/Examples/Astro_services/${action}/`) + break; + case "ONDC:SRV14": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-agri-services/api/components/Examples/Agriculture_services/${action}/`) + break + case "ONDC:SRV18": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-agri_bids_and_auction/api/components/Examples/Agri_Bids_And_Auction/${action}/`) + break; + case "ONDC:SRV18": + baseDir = path.join(__dirname, `../domain-repos/@${domain}/draft-agri_equipment/api/components/Examples/Agri_Equipment_Hiring/${action}/`) + break + } + break; + case "retail": + baseDir = (version==="b2c")?path.join(__dirname, `../domain-repos/@${domain}-b2b/b2c_exports_2.0/api/components/Examples/B2C_Exports_Json/${action}/`):path.join(__dirname, `../domain-repos/@${domain}-b2b/release-2.0.2/api/components/Examples/B2B_json/${action}/`) + break; + case "subscription": + baseDir = path.join(__dirname, `../domain-repos/@mec/draft-print_media/api/components/Examples/Print_Content/${action}/`) + break; + } + try { + // Read all files in the directory + const files = fs.readdirSync(baseDir); + + // Find the first JSON file in the directory + const jsonFile = files.find((file:any) => file.endsWith(".json")); + + if (jsonFile) { + // Construct the full file path + const filePath = path.join(baseDir, jsonFile); + console.log("File path:", filePath); + + // Read the content of the JSON file + fs.readFile(filePath, "utf8", (err:any, data:any) => { + if (err) { + console.error("Error reading file:", err); + return res.status(500).send({ error: "Error reading file" }); + } + + try { + // Parse JSON and send as a response + const jsonData = JSON.parse(data); + res.send({ data: jsonData }); + } catch (parseError) { + console.error("Error parsing JSON:", parseError); + res.status(500).send({ error: "Invalid JSON format in the file" }); + } + }); + + } else { + res.send({ data: "No file exist for this" }); + // throw new Error(`No JSON file found in directory: ${baseDir}`); + } + + + } catch (error) { + console.log(error) + } + +}) app.use("/detect_app_installation", (req: Request, res: Response) => { const headers = req.headers; return res.json({ diff --git a/apps/frontend/src/components/MockRequestSection.tsx b/apps/frontend/src/components/MockRequestSection.tsx index 4e1bbebd..4ae0132c 100644 --- a/apps/frontend/src/components/MockRequestSection.tsx +++ b/apps/frontend/src/components/MockRequestSection.tsx @@ -12,13 +12,16 @@ import Grid from "@mui/material/Grid"; import Paper from "@mui/material/Paper"; import Stack from "@mui/material/Stack"; import Typography from "@mui/material/Typography"; +import AddIcon from "@mui/icons-material/Add"; import { useEffect, useState } from "react"; import { CurlDisplay } from "."; import { useAction, useDomain, useMock } from "../utils/hooks"; -import { URL_MAPPING } from "../utils"; +import { All_Actions, ALL_SUB_DOMAINS, URL_MAPPING } from "../utils"; import axios, { AxiosError } from "axios"; import { UserGuide } from "./UserGuideSection"; import { VITE_SERVER_URL } from "../utils/env"; +import { Fab } from "@mui/material"; +import { VERSION } from "lodash"; // type MockRequestSectionProp = { // domain: string; @@ -34,6 +37,9 @@ export const MockRequestSection = () => { const { domain } = useDomain(); const [version, setVersion] = useState(""); + const [show, setshow] = useState(false); + const [Action, setAction] = useState(""); + const [Domain, setDomain] = useState(""); const { action, detectAction, logError, scenarios, setLogError } = useAction(); const { setAsyncResponse, setSyncResponse } = useMock(); @@ -41,7 +47,36 @@ export const MockRequestSection = () => { useEffect(() => { setLog(""); setLogError(false); + }, [domain]); + + async function call() { + const response = await axios.get("http://localhost:3000/get-data",{ + params: { + action: Action.toLowerCase(), + domain: domain, + subdomain:Domain, + version:version + } + }); + return response; + } +// console.log(domain,"Domainnn") + useEffect(() => { + console.log("ACTION CHANGED:", Action); + + const fetchData = async () => { + const data = await call(); + if (data.data.data) { + console.log("Response from backend:", data); + setLog(JSON.stringify(data.data.data)) + detectAction(JSON.stringify(data.data.data) , version); + } + }; + + if(Action !="" && Domain !=""){fetchData();} + }, [Action,Domain,version]); + useEffect(() => { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore @@ -68,15 +103,40 @@ export const MockRequestSection = () => { } }; + const handleAction = (event: + | React.MouseEvent + | React.KeyboardEvent + | React.FocusEvent + | null, + value: {} | null) => { + console.log("action", event); + setAction(value as string); // Ensure value is a string and set the version + }; + + const handledomain = (event: + | React.MouseEvent + | React.KeyboardEvent + | React.FocusEvent + | null, + value: {} | null) => { + console.log("action", event); + setDomain(value as string); // Ensure value is a string and set the version + }; + const handleLogChange = (e: React.ChangeEvent) => { + console.log("insidelog",e.target.value) setLog(e.target.value); detectAction(e.target.value, version); }; + const handleclick = () => { + setshow(!show); + }; + const handleSubmit = async () => { - let url = `${ - VITE_SERVER_URL - }/${domain.toLowerCase()}/${Object.keys(URL_MAPPING).filter((key) => + let url = `${VITE_SERVER_URL}/${domain.toLowerCase()}/${Object.keys( + URL_MAPPING + ).filter((key) => URL_MAPPING[key as keyof typeof URL_MAPPING].includes(action as string) )}/${action}?mode=mock&version=${version}`; if (activeScenario?.scenario) @@ -116,6 +176,59 @@ export const MockRequestSection = () => { > Mock Server + + {show && (<> + + + )} + + + + + {domain === "retail" && ( {