From 2f73e84a848f8a2de11697fa343e189798c0a4fc Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Fri, 4 Jul 2025 19:43:28 +0100 Subject: [PATCH] fixed product details page --- src/assets/img/product/banner.jpg | Bin 0 -> 6695 bytes src/component/calendar/Calendar.jsx | 40 +++++++++++++---- src/component/product/ProductFactory.jsx | 55 +++++++++++++---------- src/services/services.js | 38 +++++++--------- 4 files changed, 79 insertions(+), 54 deletions(-) create mode 100644 src/assets/img/product/banner.jpg diff --git a/src/assets/img/product/banner.jpg b/src/assets/img/product/banner.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbdd78bdda11656fe33c2137dd66fae859acee29 GIT binary patch literal 6695 zcmeH~cT|(vw!ptoEwoH1(s`mX3g}=cN~kjd1c6xY&;>4FkQxvvA%SFMu2Q6kBLvk5CDMoA3!(`d;>^`iHV7eNr;O}9F*994z5suUn7D+f2uN~&(ozlth=4>yMGhX66chdJm;Ig? zSp2^XzPJoIYJKIek>A~~kvI!AG`jismxJ=!U;9Npn^sV~dON%L?Kk@hnLO=4YetWN=kG-<6ttKK>i0mCGSyCb zF*7Prp3PPTHU$T2 zEf(t(Wb$U`@QmC+qq;D+I;6h)qQL-Y;}0MH?JK6C-DR+db?8AE3IW+{bKfF*@TN){ zDrY@>iK{&X%pT5s&<3;ov5jyVFCMGNj3Om>r7c#evgdl1r1sdDu`qPLM||IU7FOhh zUu?!z^@xla%L+FR9n_RuPbhN$Q- zf34INMCM}3hk>^XMwFpxR*&xR!{zr{+5hzR!0z6)TTPe%V$9+NcGmT3j5iJAyhUL{ zC(p{pdDF-Oki02H8QOus$}F5db7qRb8~HgnHW9XIwcf zfOO7Z<~^Qt0=I_E!xMde0yE13hZ3!Z=mI z#%L{l+<-4O)J%+@VtkzvFKj{x0W#_y{!30?{?@VlX-X%5RZp-SGeX+5k*4~;=hY+ukVMxHpK6O<9D#aM*yBp92$@N_M#E){5{b*~TT%QMdNR4EQMuJt)wdt(vTQ$|CbE`n7;|WNbQUs>SRd_?l1Kee(W{0H96R8UCZ^_W5dEC%xQ_Ibm+&g(NNI zW|tufW3a9g<{0m*h!wqTME8`Ure&KX3xb6J-sj(f==ZLa5KyO@40V55s3afOKtjLL z^6d(JUXj|0GSFDP!LE99qr%I)F{3j~zWRKocl(SQ&IU>uJ{FJEUdwW%EgOy{?+r0& z>LG9aN3~WC@V};AlR;;m^`CsDeCZm$fE;JWSnFe$4_ZFae<_;I(6J6$4|C5u0y9^sMUAHjSUr)e$nV$yOrQ*Qy%JW=D7#c$i?SXXwW5^7x4wS(Up<1ykss>5++ zxY{dN?EM*PG^VwvwBru<*|35(#v=wF!!(T#+JvSS=z6TP3!c9^A0((rV-GW>BeXb` zPH_n{19?3&ZL?A%hGvIqRMh#)ebi~7M%?uml^%Q-O3&MWQgce)iXPD%Lpc)2joEf? ze=@_!9fqSR$vdyK{HsHbhgfzQXmBOkf$KYEeog#AjTphsJI!-p&8905K1V}fMaO?~ zE2W6_d#&Cfu@mF*4U%T)GZ};N2;|@kng(G+BOWi?xaOnI+{mq}95?|gpKcl%TI5~r zJ&yJ^Hy6A)S3SyYz0AR1e~DScES%k2*b$-2HBv`M6QTtR5;v5DfR3OXw}jZDgA*_9 z`76ES&nj4r{B>6)VPr@24U~^tt`j`Q1}GGbid1GSG{?)*>-IMnX5>ZEkLW16jD;l@c&5CU4YlKL*id055X#D^J|CoL{WxEg!T z^@cVSu+S6Mu`dlRWR+M-nVQGqh^ay#%azkcIkQyV4!$J>+`6`xITDQu?_!rMw=?^c zr*7hIck~|aHy|yN6M7Q8g+mCGk{N=`uU;}Gi4JZ@O zY-OOlaG|0ZY0Cu53d9F|$R`N{65m+TW_gUABvP6a&zVGsUFlq>>}nGXcMM0qa?wq_ z@5aukUCxRej^LY;qnKScSKK1a`C4N3t)_f`!NGZZc8XYp!*tX6pol9nVbq_^i)iq$Ura?!en)0Q+u!@i z>Q0p@*T~5yLSVx3tHAF{rf`?4CmK2-FWuLYmIy+iLi3izAjHeWO~g zr|nUl=J!bsz*&#yDMLuY;tj=)2UX! zM_=pg-g_5!gcRuKi@&xQg0k$XKqi3FbTjtc(+FN3DvH6-b-oj(33dty_1h-I&K{>-q z^WRp~Bc?L`lCgld6ML#kE;vonx3ohk9gBzU;py9h-<`mYk_E6t-~Oa;+EI|=JZ=a&Ws9ZtF^QVZ2S@`5Vv4QiZlo8K~DOKQ=@l6grC9l`+R0 zN0?!8T{vb{d3a(RzUPQ{UmdaXO#{rFxz_k&N425ZZl7W*&#XV@2B3lCf^A2rU#PVqx;~z@{bjP z9Er5qlSVuh#fp8UTYLg}R2xma3@{eIijy`r^Y$1ntR{b~2q^21?2O5%(5quxXzRz~ z)B{XH&>cfAYb1}~OLb~4g{()KE1q&{(MMT0y!E45Od&Uws|tE7*|rw)Y>lZr@XMoi?tPzQ;q{$RR%Qfx4``zk(x(e0%#Kv1sfBq6EOI5STqDC( zP4l|Fe4O0IQKqm~U+To8{p$*uG04#QA!!N>fl{J!7lEc}vs0UtU?YVwf1)Yk8gEt! zaD;c$26V`xu+ByoN2PklZ}WYL*ysHTiFjAM48f3FJ8?3#HUu5BsPSClk##ZYfvn&8 ziFfR9uH-e_c;60e1Gg@HFKQNl9g2JrTHlMF7%rIIuRJoh3LKqEux|X2T};t$l}F~* zHAjZ_b}Xl6x49KRO`;}P#9uG>pgQlYwHpy`(oUb6EoFOlugY2hQj@=DOC`kSJ)guj zxe&ZKLTNgtH;C?=&K3fT7uI%t<)a`F0|QErTNY@muC7Xf>{Mlb^nBlK-uJ7oX#$>M z;;w)2aDOIU(RclU`q?Y=7L=zgO#_dtfmpXn z_x0lQyqEiT5;1IxrA-bJb*Gu?o~ekF{*KwAeb*)So&hT#(QU1xVHUSM+T&J+sZ_O_ zlC@fYplJ4RWwzA2HHHH3VaniYZU}*?9wG2IoYk$KyNX{DdK}*BkX?>i02{K(UrqNm zd|!rYaHhjqY{|?K3U1Y32>jeuWO`M@EP7>ze5G|LIhhYy06+t~Va69@s#70PHtQ-O zmdR$_nf4IK5rfVi`xVy>Nnb!xZ|s_J(Bx^;3C!HS=N)^RcX1s;pswxGg$@#JdRH%+ zw1?Ctm;wL$K Zp0~2Ve;WGd(a!`v6ZlNv|DJ$w^dFESFs}dr literal 0 HcmV?d00001 diff --git a/src/component/calendar/Calendar.jsx b/src/component/calendar/Calendar.jsx index cf427c6..0357048 100644 --- a/src/component/calendar/Calendar.jsx +++ b/src/component/calendar/Calendar.jsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useState } from "react"; -import { useQuery } from '@tanstack/react-query' +import { useMutation, useQuery } from '@tanstack/react-query' import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; import EventCalendar from "./EventCalendar"; @@ -16,12 +16,34 @@ export default function Calendar(){ // setDraggedEvent(event) // } - const {data, isFetching, isError, error} = useQuery({ - queryKey: queryKeys.calendar_events, - queryFn: () => getCalendarEvents() + // const {data, isFetching, isError, error} = useQuery({ + // queryKey: queryKeys.calendar_events, + // queryFn: () => getCalendarEvents() + // }) + + const calendarEvents = useMutation({ + mutationFn: (reqData) => { + return getCalendarEvents(reqData) + }, + onError: (error) => { + console.log(error) + }, + onSuccess: (res) => { + if(res?.data?.resultCode != '0'){ + throw({message: 'Something went wrong'}) + } + } }) - const receievedEvents = data?.data?.bar_data + useEffect(()=>{ + let reqData = { + token: localStorage.getItem('token'), // USER TOKEN + uid: localStorage.getItem('uid') // USER UID + } + calendarEvents.mutate(reqData) + },[]) + + const receievedEvents = calendarEvents?.data?.data const category = receievedEvents?.category //EVENT CATEGORIES FROM API const eventList = receievedEvents?.list //EVENT LIST FROM API @@ -62,15 +84,15 @@ export default function Calendar(){
- {isFetching ? + {calendarEvents?.isPending ? <>

Loading...

- : isError ? + : calendarEvents?.error ?
-

{error.message}

+

{calendarEvents?.error?.message}

: <> @@ -83,7 +105,7 @@ export default function Calendar(){ Drag and drop your event or click in the calendar.

*/} - {category.map((item, index) => { + {category?.map((item, index) => { let color = item?.cid == '1' ? 'fc-event-success' : item?.cid == '2' ? 'fc-event-danger' : item?.cid == '3' ? 'fc-event-warning' : 'fc-event-primary' let circleColor = item?.cid == '1' ? 'text-success' : item?.cid == '2' ? 'text-danger' : item?.cid == '3' ? 'text-warning' : 'text-primary' return ( diff --git a/src/component/product/ProductFactory.jsx b/src/component/product/ProductFactory.jsx index ec17ee7..3cd5419 100644 --- a/src/component/product/ProductFactory.jsx +++ b/src/component/product/ProductFactory.jsx @@ -1,11 +1,10 @@ -import React, {useState} from "react"; -import { useQuery } from '@tanstack/react-query' +import {useEffect} from "react"; +import { useMutation, useQuery } from '@tanstack/react-query' import BreadcrumbComBS from "../breadcrumb/BreadcrumbComBS"; // import getImage from "../../utils/getImage"; import ProductStart from "./ProductStart"; import { useLocation } from 'react-router-dom'; -import {MyProductData, productData} from "../../services/services"; -import queryKeys from "../../services/queryKeys"; +import {MyProductData} from "../../services/services"; import ProductActive from "./ProductActive"; import ProductProvision from "./ProductProvision"; import {productConst} from "../../constants/products"; @@ -13,34 +12,42 @@ import {productConst} from "../../constants/products"; export default function ProductFactory(){ const location = useLocation(); const pathname = location.pathname; - const [productStatus, setProductStatus] = useState(0); - - //productConst.PRODUCT_ACTIVE - // Split the pathname by '/' and get the last element - const lastPart = pathname.split('/').pop(); - // console.log(lastPart) + const productID = pathname.split('/').pop(); - const {data, isFetching, isError, error} = useQuery({ - queryKey: queryKeys.product, - queryFn: () => MyProductData(lastPart) + const getProductData = useMutation({ + mutationFn: (reqData) => { + return MyProductData(reqData) + }, + onError: (error) => { + console.log(error) + }, + onSuccess: (res) => { + if(res?.data?.resultCode != '0'){ + throw({message: 'Something went wrong'}) + } + } }) - - - const myproduct_data = data?.data?.myproduct_data - //setProductStatus(myproduct_data?.status) - - const product_name = myproduct_data?.product_name; - - const product_status = myproduct_data?.status; + useEffect(()=>{ + let reqData = { + product_id : productID, + token: localStorage.getItem('token'), // USER TOKEN + uid: localStorage.getItem('uid') // USER UID + } + getProductData.mutate(reqData) + },[]) + + const myproduct_data = getProductData?.data?.data?.myproduct?.myproudct // PRODUCT DETAILS + const product_name = myproduct_data?.product_name; + const product_status = myproduct_data?.status; return( <>
- {isFetching ? + {getProductData?.isPending ? <>
@@ -48,10 +55,10 @@ export default function ProductFactory(){
- : isError ? + : getProductData?.error ?
-

{error.message}

+

{getProductData?.error?.message}

: diff --git a/src/services/services.js b/src/services/services.js index ecdb8b4..b6d4239 100644 --- a/src/services/services.js +++ b/src/services/services.js @@ -75,6 +75,22 @@ export const topBar = (reqData) => { return postAuxEnd(`/panel/account/bar`, postData, false) } +// FUNCTION TO GET PRODUCT BY ID +export const MyProductData = (reqData) => { + let postData = { + ...reqData, + } + return postAuxEnd(`/panel/myproduct/dash`, postData, false) +} + +// FUNCTION TO GET CALENDAR EVENTS +export const getCalendarEvents = (reqData) => { + let postData = { + ...reqData, + } + return postAuxEnd(`/panel/account/calendar`, postData, false) +} + // FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION export const recentActions = (reqData) => { let postData = { @@ -98,6 +114,7 @@ export const productsData = (reqData) => { + // FUNCTION TO GET DASHBOARD PRODUCT URL DATA SECTION export const productsURL = (reqData) => { let postData = { @@ -152,16 +169,6 @@ export const recoverPWD = (reqData) => { return postAuxEnd('/panel/auth/reset', postData, false) } -// FUNCTION TO GET CALENDAR EVENTS -export const getCalendarEvents = (reqData) => { - let postData = { - ...reqData, - token: localStorage.getItem('token'), // USER TOKEN - uid: localStorage.getItem('uid') // USER UID - } - return postAuxEnd(`/panel/account/calendar`, postData, false) -} - // FUNCTION TO GET MY PRODUCT PROVISION DATA export const productProvision = (reqData) => { let postData = { @@ -182,15 +189,4 @@ export const contactData = (reqData) => { } return postAuxEnd(`/panel/contacts`, postData, false) // return getAuxEnd(`/panel/contacts`) -} - -export const MyProductData = (productID) => { - const reqData = { product_id : productID} - let postData = { - ...reqData, - token: localStorage.getItem('token'), // USER TOKEN - uid: localStorage.getItem('uid') // USER UID - } - return postAuxEnd(`/panel/myproduct/dash`, postData, false) - // return getAuxEnd(`/panel/myproduct/dash`,reqData) } \ No newline at end of file -- 2.34.1