From 9440b273ec831b449b2bd0056a65d8edb9823505 Mon Sep 17 00:00:00 2001 From: victorAnumudu Date: Mon, 15 Dec 2025 20:00:51 +0100 Subject: [PATCH] added contact us structure for sending data to backend --- components/services/services.js | 61 +++++++++++++ package.json | 5 +- pages/contacts.js | 150 ++++++++++++++++++++++---------- pages/merms-blog.js | 3 + 4 files changed, 172 insertions(+), 47 deletions(-) create mode 100644 components/services/services.js diff --git a/components/services/services.js b/components/services/services.js new file mode 100644 index 0000000..459ceb4 --- /dev/null +++ b/components/services/services.js @@ -0,0 +1,61 @@ +import axios from "axios" + + +axios.interceptors.request.use( + config => { + config.headers = { + Accept: "application/json", + "Access-Control-Allow-Origin": "*", + // "Access-Control-Expose-Headers": "Access-Control-Allow-Origin", + // "Access-Control-Allow-Headers": "Origin, X-API-KEY, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Access-Control-Allow-Headers, Authorization, observe, enctype, Content-Length, X-Csrf-Token", + // "Content-Type": "application/json;charset=UTF-8", + // 'Authorization': (localStorage && localStorage.getItem('access_token')) ? `Bearer ${localStorage.getItem('access_token')}` : '', + }; + // config.headers['Authorization'] = `Bearer ${localStorage.getItem('token')}`; + // config.baseURL = process.env.REACT_APP_MAIN_API + return config; + }, + error => { + return Promise.reject(error); + } +); + +const postAuxEnd = (path, postData, media=false) => { + const basePath = media ? 'https://blogdata.chiefsoft.net' : 'https://blogdata.chiefsoft.net' + let newPostData = {} + if(!media){ + newPostData = {...postData} + }else{ + newPostData = new FormData(); + for (let data in postData) { + newPostData.append(data, postData[data]); + } + } + return axios.post(`${basePath}${path}`, newPostData).then(res => { + return res + }).catch(err => { + // throw new Error(err.response.data.error_message); + throw new Error(err); + }) +} + +const getAuxEnd = (path, reqData= null) => { + const basePath = 'https://blogdata.chiefsoft.net' + return axios.get(`${basePath}${path}`,{ params: reqData }).then(res => { + return res + // localStorage.clear(); + // window.location.href = `/login?sessionExpired=true`; + }).catch(err => { + throw new Error(err); + // throw new Error(err.response.data.message); + // return err + }) +} + +// FUNCTION TO GET MERMS BLOGS +export const getMermsBlogs = (reqData) => { + let postData = { + ...reqData + } + return getAuxEnd('/mermsblogdata/mermsemr', postData, false) +} diff --git a/package.json b/package.json index a35a3c5..cf32af9 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,10 @@ }, "dependencies": { "@tanstack/react-query": "^5.62.16", + "axios": "^1.13.2", "eslint": "8.41.0", "eslint-config-next": "13.4.3", + "formik": "^2.4.9", "next": "^13.5.8", "react": "18.2.0", "react-dom": "18.2.0", @@ -21,6 +23,7 @@ "sass": "^1.62.1", "server-only": "^0.0.1", "swiper": "^10.0.4", - "wowjs": "^1.1.3" + "wowjs": "^1.1.3", + "yup": "^1.7.1" } } diff --git a/pages/contacts.js b/pages/contacts.js index 1203845..afd5a1b 100644 --- a/pages/contacts.js +++ b/pages/contacts.js @@ -1,7 +1,49 @@ +import { useMutation } from '@tanstack/react-query'; import Layout from "../components/layout/Layout" import Link from "next/link" +import { Form, Formik } from 'formik'; +import * as Yup from "yup"; export default function Home() { + const validationSchema = Yup.object().shape({ + subject: Yup.string().required("Required"), + name: Yup.string().required("Required"), + email: Yup.string().required("Required"), + message: Yup.string().required("Required"), + }) + + const initialValues = { + subject: '', + name: '', + email: '', + message: '' + }; + + const contactMutation = useMutation({ + mutationFn: (fields) => { + return null //completePWDReset(fields) + }, + onSuccess: (res) => { + if(res?.data?.resultCode != '0'){ + throw({message: res?.data?.resultDescription}) + } + }, + // onError: (err) => { + // console.log('err', err) + // } + }) + + const handleContactMutation = (values) => { + let reqData = { + ...values + } + console.log(reqData) + setTimeout(()=>{ + contactMutation.reset() + },3000) + // contactMutation.mutate(reqData) + } + return ( <> @@ -25,52 +67,68 @@ export default function Home() {
-
- {/* Form Select */} -
-

This question is about:

- Choose a topic, so we know who to send your request to: - -
- {/* Contact Form Input */} -
-

Your Name:

- Please enter your real name: - -
-
-

Your Email Address:

- Please carefully check your email address for accuracy - -
-
-

Explain your question in details:

- Your OS version, MERMS version & build, steps you did. Be VERY precise! -