Compare commits

...

6 Commits

Author SHA1 Message Date
victorAnumudu a2843d97e2 product url fixed 2025-07-08 11:58:37 +01:00
ameye f503422c42 Merge branch 'sales-text' of MERMS/MermsPanelReactJS into master 2025-07-07 15:38:13 +00:00
victorAnumudu bd470ea8bc added sale text 2025-07-07 12:38:21 +01:00
ameye 6c14b2587c Merge branch 'contact-endpoint' of MERMS/MermsPanelReactJS into master 2025-07-06 22:24:27 +00:00
ameye 085756b8bc Merge branch 'product-data-desc' of MERMS/MermsPanelReactJS into master 2025-07-06 22:24:21 +00:00
victorAnumudu eb4d5315de fixed product data description 2025-07-06 20:47:17 +01:00
7 changed files with 108 additions and 104 deletions
+28 -20
View File
@@ -21,29 +21,37 @@ export default function Calendar(){
// queryFn: () => getCalendarEvents() // queryFn: () => getCalendarEvents()
// }) // })
const calendarEvents = useMutation({ // const calendarEvents = useMutation({
mutationFn: (reqData) => { // mutationFn: (reqData) => {
return getCalendarEvents(reqData) // return getCalendarEvents(reqData)
}, // },
onError: (error) => { // onError: (error) => {
console.log(error) // console.log(error)
}, // },
onSuccess: (res) => { // onSuccess: (res) => {
if(res?.data?.resultCode != '0'){ // if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'}) // throw({message: 'Something went wrong'})
} // }
} // }
}) // })
useEffect(()=>{ // useEffect(()=>{
// let reqData = {
// token: localStorage.getItem('token'), // USER TOKEN
// uid: localStorage.getItem('uid') // USER UID
// }
// calendarEvents.mutate(reqData)
// },[])
let reqData = { let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
calendarEvents.mutate(reqData) const {data, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.calendar_events,
queryFn: () => getCalendarEvents(reqData)
})
const receievedEvents = calendarEvents?.data?.data const receievedEvents = data?.data
const category = receievedEvents?.category //EVENT CATEGORIES FROM API const category = receievedEvents?.category //EVENT CATEGORIES FROM API
const eventList = receievedEvents?.list //EVENT LIST FROM API const eventList = receievedEvents?.list //EVENT LIST FROM API
@@ -84,15 +92,15 @@ export default function Calendar(){
</div> </div>
<div className="card-body"> <div className="card-body">
<div className="row"> <div className="row">
{calendarEvents?.isPending ? {isFetching ?
<> <>
<div className="col-12"> <div className="col-12">
<p className='text-mute'>Loading...</p> <p className='text-mute'>Loading...</p>
</div> </div>
</> </>
: calendarEvents?.error ? : isError ?
<div className="col-12"> <div className="col-12">
<p className='text-danger'>{calendarEvents?.error?.message}</p> <p className='text-danger'>{error?.message}</p>
</div> </div>
: :
<> <>
+1 -1
View File
@@ -81,7 +81,7 @@ export default function EventCalendar({removeAfterDrop, eventList, activeCategor
useEffect(()=>{ useEffect(()=>{
// let newEventList = eventList?.map(item => ({...item, start: new Date(item?.start)})) // let newEventList = eventList?.map(item => ({...item, start: new Date(item?.start)}))
let newEventList = eventList?.filter(item => (Number(item.category) == Number(activeCategory)))?.map(item => ({...item, start: new Date(item?.start)})) let newEventList = eventList?.filter(item => (Number(item.category) == Number(activeCategory)))?.map(item => ({...item, start: new Date(item?.start)}))
console.log('newEventList', newEventList) // console.log('newEventList', newEventList)
setCurrentEvents(newEventList) setCurrentEvents(newEventList)
},[activeCategory]) },[activeCategory])
+13 -25
View File
@@ -1,34 +1,22 @@
import React, {useEffect} from 'react' import { useQuery } from '@tanstack/react-query'
import { useMutation } from '@tanstack/react-query'
import { productsData } from '../../services/services' import { productsData } from '../../services/services'
import productPath from "../../utils/productpath"; import productPath from "../../utils/productpath";
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import queryKeys from '../../services/queryKeys'
export default function Products() { export default function Products() {
const getProductsData = useMutation({
mutationFn: (reqData) => {
return productsData(reqData)
},
onError: (error) => {
console.log(error)
},
onSuccess: (res) => {
if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'})
}
}
})
useEffect(()=>{ let reqData = {
let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
getProductsData.mutate(reqData) const {data, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.product,
queryFn: () => productsData(reqData)
const products = getProductsData?.data?.data?.products_data // PRODUCTS DATA })
const products = data?.data?.products_data // PRODUCTS DATA
return ( return (
<> <>
@@ -37,7 +25,7 @@ export default function Products() {
<h4 className="card-title">My Products</h4> <h4 className="card-title">My Products</h4>
</div> </div>
<div className="card-body pb-0"> <div className="card-body pb-0">
{getProductsData?.isPending ? {isFetching ?
<> <>
<div className="row"> <div className="row">
<div className="col-12"> <div className="col-12">
@@ -45,10 +33,10 @@ export default function Products() {
</div> </div>
</div> </div>
</> </>
: getProductsData?.isPending ? : isError ?
<div className="row"> <div className="row">
<div className="col-12"> <div className="col-12">
<p className='text-danger'>{getProductsData?.error?.message}</p> <p className='text-danger'>{error?.message}</p>
</div> </div>
</div> </div>
: :
+11 -5
View File
@@ -5,12 +5,18 @@ import queryKeys from '../../services/queryKeys'
export default function ProductsURL() { export default function ProductsURL() {
const {data:data, isFetching, isError, error} = useQuery({ let reqData = {
token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID
}
const {data, isFetching, isError, error} = useQuery({
queryKey: queryKeys.product_url, queryKey: queryKeys.product_url,
queryFn: () => productsURL() queryFn: () => productsURL(reqData)
}) })
const urlData = data?.data?.url_data?.url const urlData = data?.data?.products_data
// console.log('data', urlData)
return ( return (
<> <>
@@ -57,8 +63,8 @@ export default function ProductsURL() {
let productUrl = '/product/'+ item?.product_id let productUrl = '/product/'+ item?.product_id
return ( return (
<tr key={index}> <tr key={index}>
<td>{Number(item?.no) + Number(index)}</td> <td>{Number(item?.id)}</td>
<td>{item?.description} - <a href={productUrl} target='_blank'>{item?.url}</a></td> <td>{item?.description} - <a href={productUrl} target='_blank'>{item?.external_url}</a></td>
<td><span className={`badge ${statusColor}`}>{item?.status}</span></td> <td><span className={`badge ${statusColor}`}>{item?.status}</span></td>
<td><a className="mr-3" href=""><i className="fe fe-edit"></i></a></td> <td><a className="mr-3" href=""><i className="fe fe-edit"></i></a></td>
+33 -25
View File
@@ -1,36 +1,44 @@
import React, {useEffect} from 'react' import { useQuery } from '@tanstack/react-query'
import { useMutation } from '@tanstack/react-query'
import { topBar } from '../../services/services' import { topBar } from '../../services/services'
import queryKeys from '../../services/queryKeys'
export default function TopBar() { export default function TopBar() {
const topBarData = useMutation({ // const topBarData = useMutation({
mutationFn: (reqData) => { // mutationFn: (reqData) => {
return topBar(reqData) // return topBar(reqData)
}, // },
onError: (error) => { // onError: (error) => {
console.log(error) // console.log(error)
}, // },
onSuccess: (res) => { // onSuccess: (res) => {
if(res?.data?.resultCode != '0'){ // if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'}) // throw({message: 'Something went wrong'})
} // }
} // }
}) // })
useEffect(()=>{ // useEffect(()=>{
let reqData = { // let reqData = {
// token: localStorage.getItem('token'), // USER TOKEN
// uid: localStorage.getItem('uid') // USER UID
// }
// topBarData.mutate(reqData)
// },[])
let reqData = {
token: localStorage.getItem('token'), // USER TOKEN token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID uid: localStorage.getItem('uid') // USER UID
} }
topBarData.mutate(reqData) const {data:topBarData, isFetching, isError, error} = useQuery({
},[]) queryKey: queryKeys.topBar,
queryFn: () => topBar(reqData)
const data = topBarData?.data?.data?.top_bar // top bar data })
const data = topBarData?.data?.top_bar // top bar data
return ( return (
<> <>
{topBarData.isPending ? {isFetching ?
<> <>
<div className="col-12"> <div className="col-12">
<div className="card p-4"> <div className="card p-4">
@@ -38,10 +46,10 @@ export default function TopBar() {
</div> </div>
</div> </div>
</> </>
: topBarData.error ? : isError?
<div className="col-12"> <div className="col-12">
<div className="card p-4"> <div className="card p-4">
<p className='text-danger'>{topBarData.error.message}</p> <p className='text-danger'>{error.message}</p>
</div> </div>
</div> </div>
: :
+5 -11
View File
@@ -18,6 +18,8 @@ export default function ProductStart(props){
const productDescription = props.productData?.description; const productDescription = props.productData?.description;
const promotion_text = props.productData?.promotion_text; const promotion_text = props.productData?.promotion_text;
const product_status = props.productData?.status; const product_status = props.productData?.status;
const saleText = props.productData?.sale_text;
const modalRef = useRef() const modalRef = useRef()
const refetch = () => { const refetch = () => {
@@ -59,7 +61,8 @@ export default function ProductStart(props){
<img className="card-img-top" src={getImage(productBanner)} alt="Card image cap" /> <img className="card-img-top" src={getImage(productBanner)} alt="Card image cap" />
<div className="card-body"> <div className="card-body">
<h4 className="card-title">{productTitle}</h4> <h4 className="card-title">{productTitle}</h4>
<p className="card-text">{productDescription}</p> <div className="card-text" dangerouslySetInnerHTML={{__html: productDescription}}/>
{/* <p className="card-text">{productDescription}</p> */}
</div> </div>
</div> </div>
</div> </div>
@@ -115,16 +118,7 @@ export default function ProductStart(props){
</button> </button>
</div> </div>
<div className="modal-body"> <div className="modal-body">
<p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis <div className="" dangerouslySetInnerHTML={{__html: saleText}}/>
in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at
eros. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus
</p>
<p>
sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Aenean lacinia
bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque
nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor
fringilla. Cras mattis consectetur purus sit amet fermentum. Cras justo odio,
</p>
{/* {mutation.error && {/* {mutation.error &&
<> <>
<div className="col-12"> <div className="col-12">
+17 -17
View File
@@ -99,6 +99,22 @@ export const contactData = (reqData) => {
return postAuxEnd(`/panel/contacts`, postData, false) return postAuxEnd(`/panel/contacts`, postData, false)
} }
// FUNCTION TO GET DASHBOARD PRODUCT URL DATA SECTION
export const productsURL = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products/url`, postData, false)
}
// FUNCTION TO GET DASHBOARD PRODUCT DATA SECTION
export const productsData = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products`, postData, false)
}
// FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION // FUNCTION TO GET DASHBOARD RECENT ACTIONS SECTION
export const recentActions = (reqData) => { export const recentActions = (reqData) => {
let postData = { let postData = {
@@ -110,29 +126,13 @@ export const recentActions = (reqData) => {
return postAuxEnd(`/panel/account/actions`, postData, false) return postAuxEnd(`/panel/account/actions`, postData, false)
} }
// FUNCTION TO GET DASHBOARD PRODUCT DATA SECTION
export const productsData = (reqData) => {
let postData = {
...reqData,
}
return postAuxEnd(`/panel/account/products`, postData, false)
}
// FUNCTION TO GET DASHBOARD PRODUCT URL DATA SECTION
export const productsURL = (reqData) => {
let postData = {
...reqData,
token: localStorage.getItem('token'), // USER TOKEN
uid: localStorage.getItem('uid') // USER UID
}
return postAuxEnd(`/panel/account/products/url`, postData, false)
// return getAuxEnd(`/panel/account/products/url`)
}
// FUNCTION TO REGISTER USER // FUNCTION TO REGISTER USER
export const signUpUser = (reqData) => { export const signUpUser = (reqData) => {