Compare commits

..

14 Commits

Author SHA1 Message Date
victorAnumudu 487494fbff route bug fixed 2025-07-10 11:53:55 +01:00
victorAnumudu 919594d7b2 Merge branch 'master' of https://gitlab.chiefsoft.net/MERMS/MermsPanelReactJS 2025-07-10 11:08:41 +01:00
ameye 7eedae8fc2 Merge branch 'signup-payload' of MERMS/MermsPanelReactJS into master 2025-07-10 08:36:37 +00:00
victorAnumudu 51a3c60590 bug fix 2025-07-10 09:05:30 +01:00
victorAnumudu ab597039ba updated complete signup endpoint 2025-07-10 08:59:20 +01:00
victorAnumudu 6fd2dcdb3d updated signup payload 2025-07-10 08:54:41 +01:00
victorAnumudu 614910e29c updated signup payload 2025-07-10 08:52:51 +01:00
ameye 2c832699c2 Merge branch 'signup-payload' of MERMS/MermsPanelReactJS into master 2025-07-08 19:11:40 +00:00
victorAnumudu c8fe2eadf6 removed isChecked value 2025-07-08 19:23:51 +01:00
ameye 1e174b7432 Merge branch 'provision-bug' of MERMS/MermsPanelReactJS into master 2025-07-08 15:59:27 +00:00
victorAnumudu dda8fa7d30 fixed bug 2025-07-08 16:53:36 +01:00
ameye d0f1d5ee34 Merge branch 'product-url' of MERMS/MermsPanelReactJS into master 2025-07-08 14:24:05 +00:00
victorAnumudu a2843d97e2 product url fixed 2025-07-08 11:58:37 +01:00
ameye a0e417fc68 Merge branch 'help-page' of MERMS/MermsPanelReactJS into master 2025-07-08 09:02:20 +00:00
9 changed files with 125 additions and 108 deletions
+18 -10
View File
@@ -1,11 +1,13 @@
import React, { useEffect, useState } from 'react'
import { Form, Formik } from "formik";
import * as Yup from "yup";
import { useDispatch } from 'react-redux'
import { Link, useNavigate, useParams } from 'react-router-dom'
import siteLinks from '../../links/siteLinks'
import { useMutation } from '@tanstack/react-query';
import { completeRegistration, verifyEmail } from '../../services/services';
import { updateUserDetails } from '../../store/UserDetails'
import { IoMdArrowDropdown } from "react-icons/io";
@@ -28,6 +30,8 @@ const validationSchema = Yup.object().shape({
export default function CSignup() {
const {jwt} = useParams()
const dispatch = useDispatch()
const navigate = useNavigate()
@@ -51,15 +55,19 @@ export default function CSignup() {
return completeRegistration(fields)
},
onSuccess: (res) => {
const {token, room} = res?.data?.data
if(token){
localStorage.setItem('token', token)
localStorage.setItem('room', room)
// const data = {token}
// dispatch(updateUserDetails({ ...data }));
navigate('/dash') // later add redux to dispatch state
if(res?.data?.resultCode != '0'){
throw({message: res?.data?.resultDescription})
}
}
const {token, room, uid} = res?.data
if(!token || !room){
throw({message: 'something went wrong, try again!'})
}
localStorage.setItem('token', token)
localStorage.setItem('room', room)
localStorage.setItem('uid', uid)
dispatch(updateUserDetails({ ...res?.data }));
navigate('/dash') // later add redux to dispatch state
},
// onError: (err) => {
// console.log('err', err)
// }
@@ -70,7 +78,7 @@ export default function CSignup() {
country : values.country,
username: values.username,
password: values.password,
verify_link: user.verify_link
verify_link: jwt
}
cSignup.mutate(reqData)
}
@@ -196,7 +204,7 @@ export default function CSignup() {
}
<div className="col-12 mt-3 text-center">
<Link to={siteLinks.login} className='text-primary' style={{color: '#6FCAEF'}}>Need help with logging in or signing up?</Link>
<Link to={siteLinks.signup} className='text-primary' style={{color: '#6FCAEF'}}>Need help with logging in or signing up?</Link>
</div>
<div className="col-12 mt-3 text-center">
+1
View File
@@ -49,6 +49,7 @@ export default function Signup2() {
const signUp = (values) => {
// helpers.resetForm()
// console.log('values', values, helpers)
delete values.isChecked
mutation.mutate(values)
}
+28 -20
View File
@@ -21,29 +21,37 @@ export default function Calendar(){
// 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 calendarEvents = useMutation({
// mutationFn: (reqData) => {
// return getCalendarEvents(reqData)
// },
// onError: (error) => {
// console.log(error)
// },
// onSuccess: (res) => {
// if(res?.data?.resultCode != '0'){
// 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 = {
token: localStorage.getItem('token'), // USER TOKEN
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 eventList = receievedEvents?.list //EVENT LIST FROM API
@@ -84,15 +92,15 @@ export default function Calendar(){
</div>
<div className="card-body">
<div className="row">
{calendarEvents?.isPending ?
{isFetching ?
<>
<div className="col-12">
<p className='text-mute'>Loading...</p>
</div>
</>
: calendarEvents?.error ?
: isError ?
<div className="col-12">
<p className='text-danger'>{calendarEvents?.error?.message}</p>
<p className='text-danger'>{error?.message}</p>
</div>
:
<>
+1 -1
View File
@@ -81,7 +81,7 @@ export default function EventCalendar({removeAfterDrop, eventList, activeCategor
useEffect(()=>{
// 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)}))
console.log('newEventList', newEventList)
// console.log('newEventList', newEventList)
setCurrentEvents(newEventList)
},[activeCategory])
+13 -25
View File
@@ -1,34 +1,22 @@
import React, {useEffect} from 'react'
import { useMutation } from '@tanstack/react-query'
import { useQuery } from '@tanstack/react-query'
import { productsData } from '../../services/services'
import productPath from "../../utils/productpath";
import { Link } from 'react-router-dom';
import queryKeys from '../../services/queryKeys'
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
uid: localStorage.getItem('uid') // USER UID
}
getProductsData.mutate(reqData)
},[])
const products = getProductsData?.data?.data?.products_data // PRODUCTS DATA
}
const {data, isFetching, isError, error} = useQuery({
queryKey: queryKeys.product,
queryFn: () => productsData(reqData)
})
const products = data?.data?.products_data // PRODUCTS DATA
return (
<>
@@ -37,7 +25,7 @@ export default function Products() {
<h4 className="card-title">My Products</h4>
</div>
<div className="card-body pb-0">
{getProductsData?.isPending ?
{isFetching ?
<>
<div className="row">
<div className="col-12">
@@ -45,10 +33,10 @@ export default function Products() {
</div>
</div>
</>
: getProductsData?.isPending ?
: isError ?
<div className="row">
<div className="col-12">
<p className='text-danger'>{getProductsData?.error?.message}</p>
<p className='text-danger'>{error?.message}</p>
</div>
</div>
:
+11 -5
View File
@@ -5,12 +5,18 @@ import queryKeys from '../../services/queryKeys'
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,
queryFn: () => productsURL()
queryFn: () => productsURL(reqData)
})
const urlData = data?.data?.url_data?.url
const urlData = data?.data?.products_data
// console.log('data', urlData)
return (
<>
@@ -57,8 +63,8 @@ export default function ProductsURL() {
let productUrl = '/product/'+ item?.product_id
return (
<tr key={index}>
<td>{Number(item?.no) + Number(index)}</td>
<td>{item?.description} - <a href={productUrl} target='_blank'>{item?.url}</a></td>
<td>{Number(item?.id)}</td>
<td>{item?.description} - <a href={productUrl} target='_blank'>{item?.external_url}</a></td>
<td><span className={`badge ${statusColor}`}>{item?.status}</span></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 { useMutation } from '@tanstack/react-query'
import { useQuery } from '@tanstack/react-query'
import { topBar } from '../../services/services'
import queryKeys from '../../services/queryKeys'
export default function TopBar() {
const topBarData = useMutation({
mutationFn: (reqData) => {
return topBar(reqData)
},
onError: (error) => {
console.log(error)
},
onSuccess: (res) => {
if(res?.data?.resultCode != '0'){
throw({message: 'Something went wrong'})
}
}
})
// const topBarData = useMutation({
// mutationFn: (reqData) => {
// return topBar(reqData)
// },
// onError: (error) => {
// console.log(error)
// },
// onSuccess: (res) => {
// if(res?.data?.resultCode != '0'){
// throw({message: 'Something went wrong'})
// }
// }
// })
useEffect(()=>{
let reqData = {
// useEffect(()=>{
// 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
uid: localStorage.getItem('uid') // USER UID
}
topBarData.mutate(reqData)
},[])
const data = topBarData?.data?.data?.top_bar // top bar data
}
const {data:topBarData, isFetching, isError, error} = useQuery({
queryKey: queryKeys.topBar,
queryFn: () => topBar(reqData)
})
const data = topBarData?.data?.top_bar // top bar data
return (
<>
{topBarData.isPending ?
{isFetching ?
<>
<div className="col-12">
<div className="card p-4">
@@ -38,10 +46,10 @@ export default function TopBar() {
</div>
</div>
</>
: topBarData.error ?
: isError?
<div className="col-12">
<div className="card p-4">
<p className='text-danger'>{topBarData.error.message}</p>
<p className='text-danger'>{error.message}</p>
</div>
</div>
:
+3 -5
View File
@@ -25,7 +25,7 @@ export default function ProductProvision(props){
queryFn: () => productProvision(reqData)
})
const provisionData = provision?.data?.provision
const provisionData = provision?.data
useEffect(()=>{
joinRoom(productSubUID); // provision subscription room
@@ -60,7 +60,7 @@ export default function ProductProvision(props){
<div className="card-body">
<div className="progress">
<div className="progress-bar progress-bar-striped progress-bar-animated" role="progressbar"
aria-valuenow={`${provisionData.percent_completed}%`} aria-valuemin="0" aria-valuemax="100" style={{width:`${provisionData.percent_completed}%`}} ></div>
aria-valuenow={`${provisionData?.percent_completed}%`} aria-valuemin="0" aria-valuemax="100" style={{width:`${provisionData?.percent_completed}%`}} ></div>
</div>
</div>
</div>
@@ -111,9 +111,7 @@ export default function ProductProvision(props){
<h4 className="card-title" style={{padding:'10px'}}>Started creating your selection</h4>
<img className="card-img-top" src={getImage('widget/working.jpg')} alt="Card image cap" />
<div className="card-body">
<p>
{productDescription}
</p>
<div className="" dangerouslySetInnerHTML={{__html: productDescription}}/>
</div>
</div>
+17 -17
View File
@@ -99,6 +99,22 @@ export const contactData = (reqData) => {
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
export const recentActions = (reqData) => {
let postData = {
@@ -110,29 +126,13 @@ export const recentActions = (reqData) => {
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
export const signUpUser = (reqData) => {