Compare commits

..

9 Commits

9 changed files with 165 additions and 124 deletions
+3 -10
View File
@@ -28,21 +28,14 @@ export default function VerifyYou() {
</span> </span>
</div> </div>
<div className="input-area"> <div className="input-area">
<div className="mb-5"> <div className="mb-5">
<p className="text-[14px] leading-[19px] text-center text-[#181c32]"> <p className="text-[14px] leading-[19px] text-center text-[#181c32]">
<b>Verify Email.</b> Help us secure your WrenchBoard account Please <span className="font-semibold tracking-wide">verify your email</span> to secure your account.
by verifying your email registration address. Verification
will let you access all of WrenchBoard's features.
</p> </p>
</div> </div>
<div className="mb-5"> <div className="mb-5">
<p className="text-[14px] leading-[19px] text-center text-[#181c32]"> <p className="text-[14px] leading-[19px] text-center text-[#181c32]">
If you do not receive the confirmation message within a few If you don't see the confirmation email, check your <span className='font-semibold tracking-wide'>Junk</span> or <span className='font-semibold tracking-wide'>Spam</span> folder and mark it as "Not Junk"
minutes of signing up, please check your Junk E-mail folder
just in case the confirmation email got delivered there
instead of your inbox. If so, select the confirmation
message and click Not Junk, which will allow future messages
to get through.
</p> </p>
</div> </div>
</div> </div>
@@ -1,4 +1,5 @@
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import { useSelector } from "react-redux";
import { toast } from "react-toastify"; import { toast } from "react-toastify";
import usersService from "../../../services/UsersService"; import usersService from "../../../services/UsersService";
import ModalCom from "../../Helpers/ModalCom"; import ModalCom from "../../Helpers/ModalCom";
@@ -9,6 +10,11 @@ import LockJob from "./LockJob";
const MarketPopUp = ({ details, onClose, situation, marketInt, marketPlaceProduct }) => { const MarketPopUp = ({ details, onClose, situation, marketInt, marketPlaceProduct }) => {
let { jobLists } = useSelector((state) => state.jobLists);
const interestCount = jobLists?.interest_list?.filter(item => item.job_uid == details.job_uid);
// console.log('interestList', interest_count)
// console.log('MEMO', jobLists?.interest_list, datas.job_uid)
let {sendJobInterestToOwner} = SocketValues() // function to emit job interest request let {sendJobInterestToOwner} = SocketValues() // function to emit job interest request
const emitOfferInterest = () => { const emitOfferInterest = () => {
let message = { let message = {
@@ -326,7 +332,7 @@ const MarketPopUp = ({ details, onClose, situation, marketInt, marketPlaceProduc
<div className="text-slate-900"> <div className="text-slate-900">
<p className="flex items-center tracking-wide"> <p className="flex items-center tracking-wide">
<span className="job-label">Interest: </span> <b className="ml-1">{details.interest_count}</b> <span className="job-label">Interest: </span> <b className="ml-1">{interestCount.length > 0 ? interestCount[0].interest_count : '0'}</b>
</p> </p>
<hr /> <hr />
<p className="my-1 flex flex-col"> <p className="my-1 flex flex-col">
+145 -103
View File
@@ -7,6 +7,7 @@ import LoadingSpinner from "../Spinners/LoadingSpinner";
import { Form, Formik } from "formik"; import { Form, Formik } from "formik";
import * as Yup from "yup"; import * as Yup from "yup";
import ReferralTable from "../MyWallet/WalletComponent/ReferralTable"; import ReferralTable from "../MyWallet/WalletComponent/ReferralTable";
import TabButton from "../customTabs/TabButton";
const validationSchema = Yup.object().shape({ const validationSchema = Yup.object().shape({
ref_email: Yup.string() ref_email: Yup.string()
@@ -105,13 +106,27 @@ function ReferralDisplay() {
sendReferralMsg({...values}); // FUNCTION TO SEND REFERRAL MESSAGE sendReferralMsg({...values}); // FUNCTION TO SEND REFERRAL MESSAGE
}; };
const [selectedTab, setSelectedTab] = useState("Send Referral");
const tabs = [ //STATE FOR SWITCHING BETWEEN TABS
{
id: 1,
title: "Send Referral",
iconName: "history",
},
{
id: 2,
title: "Referral List",
iconName: "history",
},
]
useEffect(() => { useEffect(() => {
allReferrals(); allReferrals();
}, [refHistoryReload]); }, [refHistoryReload]);
return ( return (
<div className="content-wrapper w-full lg:flex xl:space-x-8 bottomMargin"> <>
<div className="lg:w-2/2 w-full mb-10 lg:mb-0"> <div className='w-full'>
<div className="sm:flex justify-between items-center mb-6"> <div className="sm:flex justify-between items-center mb-6">
<div className="mb-5 sm:mb-0"> <div className="mb-5 sm:mb-0">
<h1 className="text-26 font-bold inline-flex gap-3 text-dark-gray dark:text-white items-center"> <h1 className="text-26 font-bold inline-flex gap-3 text-dark-gray dark:text-white items-center">
@@ -119,111 +134,138 @@ function ReferralDisplay() {
</h1> </h1>
</div> </div>
</div> </div>
</div>
<div className="referral w-full md:p-8 p-4 bg-white dark:bg-dark-white rounded-2xl shadow"> <div className="w-full h-full p-4 bg-white dark:bg-dark-white rounded-2xl section-shadow lg:flex lg:px-10 px-4 justify-between">
<h2 className="mb-4 text-slate-900 dark:text-white text-xl lg:text-2xl font-medium"> <div className="content-tab-items lg:w-[230px] w-full mr-2">
Send Referral <div className='overflow-hidden mb-5 lg:mb-0 py-2 lg:py-8'>
</h2> {tabs.map((item) => (
<Formik <div key={item.id} className='w-full'>
initialValues={initialValues} <TabButton
validationSchema={validationSchema} key={item.id}
onSubmit={handleSubmit} item={item.title}
> iconName={item.iconName}
{(props) => ( selectedTab={selectedTab}
<Form className="referral-info"> setSelectedTab={setSelectedTab}
<div className="block md:mb-6 md:flex gap-10"> />
{/* Firstname */} </div>
<div className="field w-full mb-6 md:mb-0"> ))}
<InputCom </div>
fieldClass="px-6"
label="Firstname"
type="text"
name="ref_firstname"
placeholder="Firstname"
value={props.values.ref_firstname}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_firstname &&
props.touched.ref_firstname && (
<p className="text-sm text-red-500">
{props.errors.ref_firstname}
</p>
)}
</div>
{/* Lastname */}
<div className="field w-full mb-6 md:mb-0">
<InputCom
fieldClass="px-6"
label="Lastname"
type="text"
name="ref_lastname"
placeholder="Lastname"
value={props.values.ref_lastname}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_lastname &&
props.touched.ref_lastname && (
<p className="text-sm text-red-500">
{props.errors.ref_lastname}
</p>
)}
</div>
</div>
<div className="field w-full mb-6">
<InputCom
fieldClass="px-6"
label="Email"
type="text"
name="ref_email"
placeholder="Email"
value={props.values.ref_email}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_email && props.touched.ref_email && (
<p className="text-sm text-red-500">
{props.errors.ref_email}
</p>
)}
</div>
<hr />
{error.message != "" && (
<p className="text-base text-red-500 py-2">{error.message}</p>
)}
<div className="referral-btn flex justify-end items-center py-4 border-b-4">
{error.loading ? (
<LoadingSpinner size="6" color="sky-blue" />
) : (
<button
type="submit"
className="px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
>
Send Message
</button>
)}
</div>
</Form>
)}
</Formik>
</div> </div>
<div className="w-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mr-10"></div>
<div className="flex-1 overflow-y-auto min-h-[520px]">
<>
{selectedTab == 'Send Referral' &&
<div className="referral w-full p-4">
<h2 className="mb-4 text-slate-900 dark:text-white text-xl lg:text-2xl font-medium">
Send Referral
</h2>
<Formik
initialValues={initialValues}
validationSchema={validationSchema}
onSubmit={handleSubmit}
>
{(props) => (
<Form className="referral-info">
<div className="block md:mb-6 md:flex gap-10">
{/* Firstname */}
<div className="field w-full mb-6 md:mb-0">
<InputCom
fieldClass="px-6"
label="Firstname"
type="text"
name="ref_firstname"
placeholder="Firstname"
value={props.values.ref_firstname}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_firstname &&
props.touched.ref_firstname && (
<p className="text-sm text-red-500">
{props.errors.ref_firstname}
</p>
)}
</div>
<div className="w-full md:p-8 p-4 bg-white dark:bg-dark-white rounded-2xl shadow"> {/* Lastname */}
<h2 className="mb-2 text-slate-900 dark:text-white text-xl lg:text-2xl font-medium"> <div className="field w-full mb-6 md:mb-0">
Referral List <InputCom
</h2> fieldClass="px-6"
{referralList.loading ? ( label="Lastname"
<LoadingSpinner size="32" color="sky-blue" /> type="text"
) : ( name="ref_lastname"
<ReferralTable history={referralList} /> placeholder="Lastname"
)} value={props.values.ref_lastname}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_lastname &&
props.touched.ref_lastname && (
<p className="text-sm text-red-500">
{props.errors.ref_lastname}
</p>
)}
</div>
</div>
<div className="field w-full mb-6">
<InputCom
fieldClass="px-6"
label="Email"
type="text"
name="ref_email"
placeholder="Email"
value={props.values.ref_email}
inputHandler={props.handleChange}
blurHandler={props.handleBlur}
/>
{props.errors.ref_email && props.touched.ref_email && (
<p className="text-sm text-red-500">
{props.errors.ref_email}
</p>
)}
</div>
<hr />
{error.message != "" && (
<p className="text-base text-red-500 py-2">{error.message}</p>
)}
<div className="referral-btn flex justify-end items-center py-4">
{error.loading ? (
<LoadingSpinner size="6" color="sky-blue" />
) : (
<button
type="submit"
className="px-2 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
>
Send Message
</button>
)}
</div>
</Form>
)}
</Formik>
</div>
}
{selectedTab == 'Referral List' &&
<>
<div className="w-full p-4">
<h2 className="mb-2 text-slate-900 dark:text-white text-xl lg:text-2xl font-medium">
Referral List
</h2>
{referralList.loading ? (
<LoadingSpinner size="22" color="sky-blue" />
) : (
<ReferralTable history={referralList} />
)}
</div>
</>
}
</>
</div> </div>
</div> </div>
</div> </>
); );
} }
@@ -344,11 +344,11 @@ function NewJobListPopout({
{selectedTab == 'family' ? {selectedTab == 'family' ?
'Assign to family' 'Assign to family'
: selectedTab == 'public' ? : selectedTab == 'public' ?
'Offer this job to public' 'Place in Market'
: selectedTab == 'individual' ? : selectedTab == 'individual' ?
'Offer this job to individual' 'Assign to individual'
: selectedTab == 'group' ? : selectedTab == 'group' ?
'Offer this job to your Group' 'Preferred List'
: :
null null
} }
@@ -48,7 +48,7 @@ export default function AssignToFamily({
</div> </div>
<div className="mt-3 mb-1 flex justify-end items-center"> <div className="mt-3 mb-1 flex justify-end items-center">
<button <button
className={`px-4 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white`} className={`uppercase px-4 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white`}
type="submit" type="submit"
name='family' name='family'
> >
@@ -48,14 +48,14 @@ export default function AssignToGroup({
</div> </div>
<div className="mt-3 mb-1 flex justify-end items-center"> <div className="mt-3 mb-1 flex justify-end items-center">
<button <button
className={`px-4 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white`} className={`uppercase px-4 h-11 flex justify-center items-center btn-gradient text-sm rounded-full text-white`}
type="submit" type="submit"
name='group' name='group'
> >
{loader?.jobFields ? {loader?.jobFields ?
<LoadingSpinner size={5} /> <LoadingSpinner size={5} />
: :
'Send Order to Group' 'Send Task to Group'
} }
</button> </button>
</div> </div>
@@ -53,7 +53,7 @@ export default function AssignToIndividual({
</div> </div>
<div className="mt-3 mb-1 flex justify-end items-center"> <div className="mt-3 mb-1 flex justify-end items-center">
<button <button
className={`px-4 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white`} className={`uppercase px-4 h-11 flex justify-center items-center btn-gradient text-sm rounded-full text-white`}
type="submit" type="submit"
name='individual' name='individual'
> >
@@ -102,14 +102,14 @@ export default function AssignToPublic({
</div> </div>
<div className="mt-3 mb-1 flex justify-end items-center"> <div className="mt-3 mb-1 flex justify-end items-center">
<button <button
className={`px-4 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white`} className={`uppercase px-4 h-11 flex justify-center items-center btn-gradient text-sm rounded-full text-white`}
type="submit" type="submit"
name='public' name='public'
> >
{loader?.jobFields ? {loader?.jobFields ?
<LoadingSpinner size={5} /> <LoadingSpinner size={5} />
: :
'Show Task to Public' 'Place Task to the Market'
} }
</button> </button>
</div> </div>
+1 -1
View File
@@ -208,7 +208,7 @@ class usersService {
// } // }
getHeroJBanners() { getHeroJBanners() {
var postData = { var postData = {
uuid: localStorage.getItem("uid"), uid: localStorage.getItem("uid"),
member_id: localStorage.getItem("member_id"), member_id: localStorage.getItem("member_id"),
sessionid: localStorage.getItem("session_token"), sessionid: localStorage.getItem("session_token"),
page: 0, page: 0,