Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 99d4301588 |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 32 28" viewBox="0 0 32 28" id="List"><circle cx="2" cy="2" r="2" fill="#767fad" class="color4e4e50 svgShape"></circle><path fill="#767fad" d="M8 0h24v4H8z" class="color4e4e50 svgShape"></path><circle cx="10" cy="10" r="2" fill="#767fad" class="color4e4e50 svgShape"></circle><path fill="#767fad" d="M16 8h16v4H16z" class="color4e4e50 svgShape"></path><circle cx="10" cy="26" r="2" fill="#767fad" class="color4e4e50 svgShape"></circle><path fill="#767fad" d="M16 24h16v4H16z" class="color4e4e50 svgShape"></path><circle cx="18" cy="18" r="2" fill="#767fad" class="color4e4e50 svgShape"></circle><path fill="#767fad" d="M24 16h8v4h-8z" class="color4e4e50 svgShape"></path></svg>
|
||||
|
After Width: | Height: | Size: 743 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" id="Group" x="0" y="0" version="1.1" viewBox="0 0 52 52" xml:space="preserve"><path d="M26.003 13.05c2.44 0 4.43-1.99 4.43-4.43a4.44 4.44 0 0 0-4.43-4.44c-2.45 0-4.44 1.99-4.44 4.44a4.44 4.44 0 0 0 4.44 4.43zM11.293 38.77c2.44 0 4.43-1.99 4.43-4.43a4.44 4.44 0 0 0-4.43-4.44c-2.45 0-4.43 1.99-4.43 4.44 0 2.44 1.98 4.43 4.43 4.43z" fill="#4687ba" class="color000000 svgShape"></path><path d="M49.493 41.93a10.091 10.091 0 0 0-3.643-3.739 6.418 6.418 0 0 1-5.138 2.58 6.392 6.392 0 0 1-4.371-1.737.975.975 0 0 0-.158-.258l-9.184-9.903V22.1h4.344c1.41 0 2.68-.73 3.4-1.94.72-1.23.73-2.7.04-3.95a10.09 10.09 0 0 0-3.643-3.739 6.418 6.418 0 0 1-5.138 2.579 6.43 6.43 0 0 1-5.144-2.58 10.085 10.085 0 0 0-3.645 3.74c-.69 1.25-.67 2.72.05 3.95a3.9 3.9 0 0 0 3.39 1.94h4.346v6.624c-.01.022-.016.044-.025.066l-9.22 9.941a.978.978 0 0 0-.22.42 6.378 6.378 0 0 1-4.242 1.62 6.417 6.417 0 0 1-5.14-2.584 10.086 10.086 0 0 0-3.65 3.743c-.69 1.25-.67 2.72.05 3.95a3.9 3.9 0 0 0 3.39 1.94h10.69c1.41 0 2.68-.73 3.4-1.94.72-1.23.73-2.7.04-3.95a10.03 10.03 0 0 0-2.134-2.612l8.01-8.636 8.055 8.685c-.815.73-1.53 1.58-2.08 2.563-.69 1.25-.67 2.72.05 3.95a3.9 3.9 0 0 0 3.39 1.94h10.69c1.41 0 2.68-.73 3.4-1.94.72-1.23.73-2.7.04-3.95z" fill="#4687ba" class="color000000 svgShape"></path><path d="M40.713 38.77c2.44 0 4.43-1.99 4.43-4.43a4.44 4.44 0 0 0-4.43-4.44c-2.45 0-4.44 1.99-4.44 4.44a4.44 4.44 0 0 0 4.44 4.43z" fill="#4687ba" class="color000000 svgShape"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" id="List"><switch><g fill="#767fad" class="color000000 svgShape"><g fill="#4687ba" class="color0ac5ab svgShape"><path d="M20 0H8a8 8 0 00-8 8v12a8 8 0 008 8h12a8 8 0 008-8V8a8 8 0 00-8-8zM56 0H44a8 8 0 00-8 8v12a8 8 0 008 8h12a8 8 0 008-8V8a8 8 0 00-8-8zM20 36H8a8 8 0 00-8 8v12a8 8 0 008 8h12a8 8 0 008-8V44a8 8 0 00-8-8zM56 36H44a8 8 0 00-8 8v12a8 8 0 008 8h12a8 8 0 008-8V44a8 8 0 00-8-8z" fill="#767fad" class="color000000 svgShape"></path></g></g></switch></svg>
|
||||
|
After Width: | Height: | Size: 527 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8" id="List"><path d="M0 0v3h3V0H0zm4 0v1h4V0H4zm0 2v1h3V2H4zM0 4v3h3V4H0zm4 0v1h4V4H4zm0 2v1h3V6H4z" fill="#b22b7d" class="color000000 svgShape"></path></svg>
|
||||
|
After Width: | Height: | Size: 214 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" id="List"><path d="M9 3a6 6 0 1 0 6 6A6 6 0 0 0 9 3zM9 13a4 4 0 1 1 4-4A4 4 0 0 1 9 13zM17 9H28a1 1 0 0 0 0-2H17a1 1 0 0 0 0 2zM17 13h6a1 1 0 0 0 0-2H17a1 1 0 0 0 0 2zM9 17a6 6 0 1 0 6 6A6 6 0 0 0 9 17zM9 27a4 4 0 1 1 4-4A4 4 0 0 1 9 27zM28 21H17a1 1 0 0 0 0 2H28a1 1 0 0 0 0-2zM23 25H17a1 1 0 0 0 0 2h6a1 1 0 0 0 0-2z" fill="#4687ba" class="color000000 svgShape"></path></svg>
|
||||
|
After Width: | Height: | Size: 437 B |
@@ -59,7 +59,7 @@ export default function ForgotPassword() {
|
||||
}
|
||||
|
||||
if (email !== "" && checked) {
|
||||
const reqData = { email };
|
||||
const reqData = { email, action:11013 };
|
||||
setResetLoading(true);
|
||||
try {
|
||||
const res = await userApi.StartResetPassword(reqData);
|
||||
|
||||
@@ -59,7 +59,7 @@ export default function ForgotPassword() {
|
||||
}
|
||||
|
||||
if (email !== "" && checked) {
|
||||
const reqData = { email };
|
||||
const reqData = { email, action:11013 };
|
||||
setResetLoading(true);
|
||||
try {
|
||||
const res = await userApi.StartResetPassword(reqData);
|
||||
|
||||
@@ -98,6 +98,7 @@ export default function Login() {
|
||||
password: password,
|
||||
sessionid: "STARTING",
|
||||
login_mode: 1100,
|
||||
action: 11025,
|
||||
};
|
||||
} else if (name == "family") {
|
||||
// Post Data Info for family Login
|
||||
@@ -106,6 +107,7 @@ export default function Login() {
|
||||
pin: password,
|
||||
sessionid: "20067A92714",
|
||||
login_mode: 1105,
|
||||
action: 11025,
|
||||
};
|
||||
} else {
|
||||
setLoginLoading(false);
|
||||
|
||||
@@ -97,7 +97,8 @@ export default function Login() {
|
||||
username: email,
|
||||
password: password,
|
||||
sessionid: "STARTING",
|
||||
login_mode: 1100
|
||||
login_mode: 1100,
|
||||
action: 11025,
|
||||
};
|
||||
} else if (name == "family") {
|
||||
// Post Data Info for family Login
|
||||
@@ -105,7 +106,8 @@ export default function Login() {
|
||||
username: email,
|
||||
pin: password,
|
||||
sessionid: "20067A92714",
|
||||
login_mode: 1105
|
||||
login_mode: 1105,
|
||||
action: 11025,
|
||||
};
|
||||
} else {
|
||||
setLoginLoading(false);
|
||||
|
||||
@@ -36,7 +36,10 @@ export default function VerifyLink() {
|
||||
var postData = {
|
||||
username: email,
|
||||
password: password,
|
||||
login_mode: 100,
|
||||
sessionid: "STARTER-NOTREAL",
|
||||
verify_link: token,
|
||||
action: 11012,
|
||||
};
|
||||
const res = await userApi?.CompleteSignUp(postData);
|
||||
|
||||
|
||||
@@ -36,7 +36,10 @@ export default function VerifyLink() {
|
||||
var postData = {
|
||||
username: email,
|
||||
password: password,
|
||||
login_mode: 100,
|
||||
sessionid: "STARTER-NOTREAL",
|
||||
verify_link: token,
|
||||
action: 11012,
|
||||
};
|
||||
const res = await userApi?.CompleteSignUp(postData);
|
||||
|
||||
|
||||
@@ -11,11 +11,7 @@ import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
||||
const VerifyPassword = () => {
|
||||
const [password, setPassword] = useState("");
|
||||
const [confirmPassword, setConfirmPassword] = useState("");
|
||||
const [requestStatus, setRequestStatus] = useState({
|
||||
loading: true,
|
||||
status: false,
|
||||
data: [],
|
||||
});
|
||||
const [requestStatus, setRequestStatus] = useState({loading: true, status:false, data: []})
|
||||
const [msgError, setMsgError] = useState("");
|
||||
const [linkLoader, setLinkLoader] = useState(false);
|
||||
const [linkSuccess, setLinkSuccess] = useState(null);
|
||||
@@ -39,64 +35,60 @@ const VerifyPassword = () => {
|
||||
};
|
||||
|
||||
const completeReset = async () => {
|
||||
if (!password || !confirmPassword) {
|
||||
// CHECKS IF PASSWORD IS EMPTY
|
||||
if(!password || !confirmPassword){ // CHECKS IF PASSWORD IS EMPTY
|
||||
setMsgError("Please fill in fields");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (password != confirmPassword) {
|
||||
// CHECKS IF PASSWORD EQUALS CONFIRM PASSWORD
|
||||
if(password != confirmPassword){ // CHECKS IF PASSWORD EQUALS CONFIRM PASSWORD
|
||||
setMsgError("Passwords does not match");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (password.length < 6) {
|
||||
// CHECKS IF PASSWORD LENGTH IS UPTO 6 CHARACTERS
|
||||
if(password.length < 6){ // CHECKS IF PASSWORD LENGTH IS UPTO 6 CHARACTERS
|
||||
setMsgError("Password must be upto six characters");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (!PasswordValidator(password)) {
|
||||
// CHECKS IF PASSWORD IS VALID
|
||||
setMsgError(
|
||||
"Password must contain alphanumeric, uppercase and special character: eg: Password1@"
|
||||
);
|
||||
if(!PasswordValidator(password)){ // CHECKS IF PASSWORD IS VALID
|
||||
setMsgError("Password must contain alphanumeric, uppercase and special character: eg: Password1@");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
try {
|
||||
setLinkLoader(true);
|
||||
var reqData = {
|
||||
reset_link: token,
|
||||
newpass: password,
|
||||
m_uid: requestStatus.data?.m_uid || "",
|
||||
reset_uid: requestStatus.data?.reset_uid || "",
|
||||
step: 300,
|
||||
};
|
||||
const res = await userApi?.CompleteResetPassword(reqData);
|
||||
setLinkLoader(true);
|
||||
var reqData = {
|
||||
sessionid: "DUMMY-CANNOT_BE_EMPTY",
|
||||
reset_link: token,
|
||||
newpass: password,
|
||||
m_uid: requestStatus.data?.m_uid || '',
|
||||
reset_uid: requestStatus.data?.reset_uid || '',
|
||||
step: 300,
|
||||
action: 730,
|
||||
};
|
||||
const res = await userApi?.CompleteResetPassword(reqData);
|
||||
|
||||
if (res.status == 200) {
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0) {
|
||||
// setTimeout(() => {
|
||||
// navigate("/login", { replace: true });
|
||||
// setLinkLoader(false);
|
||||
// }, 2000);
|
||||
setLinkSuccess(true);
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setMsgError("An error occurred");
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
if (res.status == 200) {
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0) {
|
||||
// setTimeout(() => {
|
||||
// navigate("/login", { replace: true });
|
||||
// setLinkLoader(false);
|
||||
// }, 2000);
|
||||
setLinkSuccess(true);
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setMsgError("An error occurred");
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} catch (error) {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
@@ -108,33 +100,31 @@ const VerifyPassword = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const verifyResetPwd = () => {
|
||||
// FUNCTION TO VERIFY RESET PASSWORD LINK
|
||||
setRequestStatus({ loading: true, status: false, data: [] });
|
||||
const verifyResetPwd = () => { // FUNCTION TO VERIFY RESET PASSWORD LINK
|
||||
setRequestStatus({loading: true, status:false, data: []})
|
||||
var reqData = {
|
||||
sessionid: "DUMMY-CANNOT_BE_EMPTY",
|
||||
reset_link: token,
|
||||
step: 200,
|
||||
action: 730,
|
||||
};
|
||||
userApi
|
||||
.CompleteResetPassword(reqData)
|
||||
.then((res) => {
|
||||
if (res.status != 200 || res.data.internal_return < 0) {
|
||||
return setRequestStatus({ loading: false, status: false, data: [] });
|
||||
}
|
||||
setRequestStatus({ loading: false, status: true, data: res.data });
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({ loading: false, status: false, data: [] });
|
||||
});
|
||||
};
|
||||
userApi.CompleteResetPassword(reqData).then(res => {
|
||||
if(res.status != 200 || res.data.internal_return < 0){
|
||||
return setRequestStatus({loading: false, status:false, data: []})
|
||||
}
|
||||
setRequestStatus({loading: false, status:true, data: res.data})
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading: false, status:false, data: []})
|
||||
})
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
useEffect(()=>{
|
||||
// little checker for the validity of the token
|
||||
if (token == null || token?.length != 64) {
|
||||
return setRequestStatus({ loading: false, status: false, data: [] });
|
||||
}
|
||||
verifyResetPwd();
|
||||
}, []);
|
||||
if (token==null || token?.length != 64) {
|
||||
return setRequestStatus({loading: false, status:false, data: []});
|
||||
}
|
||||
verifyResetPwd()
|
||||
},[])
|
||||
return (
|
||||
<>
|
||||
<AuthLayout slogan="Welcome to WrenchBoard">
|
||||
@@ -149,68 +139,59 @@ const VerifyPassword = () => {
|
||||
</Link>
|
||||
</div>
|
||||
<div className="content-wrapper login shadow-md w-full lg:max-w-[500px] mx-auto flex justify-center items-center dark:bg-dark-white 2xl:w-[828px] rounded-[0.475rem] sm:p-7 p-5">
|
||||
{requestStatus.loading ? (
|
||||
<LoadingSpinner color="sky-blue" size="16" height="h-300px" />
|
||||
) : !requestStatus.loading && requestStatus.status ? (
|
||||
<div className="w-full">
|
||||
{linkSuccess == null ? (
|
||||
<>
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
||||
Password Reset
|
||||
</h1>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
Enter a new password to reset
|
||||
</span>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
We'll send an email to confirm reset
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-red-500 font-semibold mb-3 leading-[27.3px] text-[13px]">
|
||||
Must include a special, numeric, uppercase and lowercase
|
||||
character
|
||||
</p>
|
||||
</div>
|
||||
<SuccessfulComponent
|
||||
password={password}
|
||||
confirmPassword={confirmPassword}
|
||||
handlePassword={handlePassword}
|
||||
onSubmit={completeReset}
|
||||
msgErr={msgError}
|
||||
loader={linkLoader}
|
||||
showPassword={showPassword}
|
||||
onClick={togglePasswordVisibility}
|
||||
navigateHandler={() => navigate("/login")}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<ForgetPwdResponse
|
||||
title={
|
||||
linkSuccess
|
||||
? "Password Reset Complete"
|
||||
: "Password Reset Error"
|
||||
}
|
||||
message={
|
||||
linkSuccess
|
||||
? "Password Reset Complete. You can login now with your new credentials"
|
||||
: "Password Reset Error. Please get in touch with support for further support"
|
||||
}
|
||||
type={linkSuccess}
|
||||
{requestStatus.loading ?
|
||||
<LoadingSpinner color='sky-blue' size='16' height='h-300px' />
|
||||
:
|
||||
!requestStatus.loading && requestStatus.status ?
|
||||
<div className="w-full">
|
||||
{linkSuccess == null ?
|
||||
<>
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
||||
Password Reset
|
||||
</h1>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
Enter a new password to reset
|
||||
</span>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
We'll send an email to confirm reset
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-red-500 font-semibold mb-3 leading-[27.3px] text-[13px]">
|
||||
Must include a special, numeric, uppercase and lowercase character
|
||||
</p>
|
||||
</div>
|
||||
<SuccessfulComponent
|
||||
password={password}
|
||||
confirmPassword={confirmPassword}
|
||||
handlePassword={handlePassword}
|
||||
onSubmit={completeReset}
|
||||
msgErr={msgError}
|
||||
loader={linkLoader}
|
||||
showPassword={showPassword}
|
||||
onClick={togglePasswordVisibility}
|
||||
navigateHandler={() => navigate("/login")}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
) : (
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<ForgetPwdResponse
|
||||
title={"Forget Password"}
|
||||
message={
|
||||
"We are unable to continue to reset process. This error is usually due to expired links. Please start all over or contact us"
|
||||
}
|
||||
type={requestStatus.status}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
:
|
||||
<ForgetPwdResponse
|
||||
title={linkSuccess? 'Password Reset Complete' : 'Password Reset Error'}
|
||||
message={linkSuccess? 'Password Reset Complete. You can login now with your new credentials' : 'Password Reset Error. Please get in touch with support for further support'
|
||||
}
|
||||
type={linkSuccess}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
:
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<ForgetPwdResponse
|
||||
title={'Forget Password'}
|
||||
message={'We are unable to continue to reset process. This error is usually due to expired links. Please start all over or contact us'}
|
||||
type={requestStatus.status}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</AuthLayout>
|
||||
|
||||
@@ -11,11 +11,7 @@ import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
||||
const VerifyPassword = () => {
|
||||
const [password, setPassword] = useState("");
|
||||
const [confirmPassword, setConfirmPassword] = useState("");
|
||||
const [requestStatus, setRequestStatus] = useState({
|
||||
loading: true,
|
||||
status: false,
|
||||
data: [],
|
||||
});
|
||||
const [requestStatus, setRequestStatus] = useState({loading: true, status:false, data: []})
|
||||
const [msgError, setMsgError] = useState("");
|
||||
const [linkLoader, setLinkLoader] = useState(false);
|
||||
const [linkSuccess, setLinkSuccess] = useState(null);
|
||||
@@ -39,64 +35,60 @@ const VerifyPassword = () => {
|
||||
};
|
||||
|
||||
const completeReset = async () => {
|
||||
if (!password || !confirmPassword) {
|
||||
// CHECKS IF PASSWORD IS EMPTY
|
||||
if(!password || !confirmPassword){ // CHECKS IF PASSWORD IS EMPTY
|
||||
setMsgError("Please fill in fields");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (password != confirmPassword) {
|
||||
// CHECKS IF PASSWORD EQUALS CONFIRM PASSWORD
|
||||
if(password != confirmPassword){ // CHECKS IF PASSWORD EQUALS CONFIRM PASSWORD
|
||||
setMsgError("Passwords does not match");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (password.length < 6) {
|
||||
// CHECKS IF PASSWORD LENGTH IS UPTO 6 CHARACTERS
|
||||
if(password.length < 6){ // CHECKS IF PASSWORD LENGTH IS UPTO 6 CHARACTERS
|
||||
setMsgError("Password must be upto six characters");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
if (!PasswordValidator(password)) {
|
||||
// CHECKS IF PASSWORD IS VALID
|
||||
setMsgError(
|
||||
"Password must contain alphanumeric, uppercase and special character: eg: Password1@"
|
||||
);
|
||||
if(!PasswordValidator(password)){ // CHECKS IF PASSWORD IS VALID
|
||||
setMsgError("Password must contain alphanumeric, uppercase and special character: eg: Password1@");
|
||||
return setTimeout(() => {
|
||||
setMsgError(null);
|
||||
}, process.env.REACT_APP_RESET_START_ERROR_TIMEOUT);
|
||||
}
|
||||
try {
|
||||
setLinkLoader(true);
|
||||
var reqData = {
|
||||
reset_link: token,
|
||||
newpass: password,
|
||||
m_uid: requestStatus.data?.m_uid || "",
|
||||
reset_uid: requestStatus.data?.reset_uid || "",
|
||||
step: 300,
|
||||
};
|
||||
const res = await userApi?.CompleteResetPassword(reqData);
|
||||
setLinkLoader(true);
|
||||
var reqData = {
|
||||
sessionid: "DUMMY-CANNOT_BE_EMPTY",
|
||||
reset_link: token,
|
||||
newpass: password,
|
||||
m_uid: requestStatus.data?.m_uid || '',
|
||||
reset_uid: requestStatus.data?.reset_uid || '',
|
||||
step: 300,
|
||||
action: 730,
|
||||
};
|
||||
const res = await userApi?.CompleteResetPassword(reqData);
|
||||
|
||||
if (res.status == 200) {
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0) {
|
||||
// setTimeout(() => {
|
||||
// navigate("/login", { replace: true });
|
||||
// setLinkLoader(false);
|
||||
// }, 2000);
|
||||
setLinkSuccess(true);
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setMsgError("An error occurred");
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
if (res.status == 200) {
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0) {
|
||||
// setTimeout(() => {
|
||||
// navigate("/login", { replace: true });
|
||||
// setLinkLoader(false);
|
||||
// }, 2000);
|
||||
setLinkSuccess(true);
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setMsgError("An error occurred");
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} else {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
}
|
||||
} catch (error) {
|
||||
setLinkLoader(false);
|
||||
setLinkSuccess(false);
|
||||
@@ -108,33 +100,31 @@ const VerifyPassword = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const verifyResetPwd = () => {
|
||||
// FUNCTION TO VERIFY RESET PASSWORD LINK
|
||||
setRequestStatus({ loading: true, status: false, data: [] });
|
||||
const verifyResetPwd = () => { // FUNCTION TO VERIFY RESET PASSWORD LINK
|
||||
setRequestStatus({loading: true, status:false, data: []})
|
||||
var reqData = {
|
||||
sessionid: "DUMMY-CANNOT_BE_EMPTY",
|
||||
reset_link: token,
|
||||
step: 200,
|
||||
action: 730,
|
||||
};
|
||||
userApi
|
||||
.CompleteResetPassword(reqData)
|
||||
.then((res) => {
|
||||
if (res.status != 200 || res.data.internal_return < 0) {
|
||||
return setRequestStatus({ loading: false, status: false, data: [] });
|
||||
}
|
||||
setRequestStatus({ loading: false, status: true, data: res.data });
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({ loading: false, status: false, data: [] });
|
||||
});
|
||||
};
|
||||
userApi.CompleteResetPassword(reqData).then(res => {
|
||||
if(res.status != 200 || res.data.internal_return < 0){
|
||||
return setRequestStatus({loading: false, status:false, data: []})
|
||||
}
|
||||
setRequestStatus({loading: false, status:true, data: res.data})
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading: false, status:false, data: []})
|
||||
})
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
useEffect(()=>{
|
||||
// little checker for the validity of the token
|
||||
if (token == null || token?.length != 64) {
|
||||
return setRequestStatus({ loading: false, status: false, data: [] });
|
||||
}
|
||||
verifyResetPwd();
|
||||
}, []);
|
||||
if (token==null || token?.length != 64) {
|
||||
return setRequestStatus({loading: false, status:false, data: []});
|
||||
}
|
||||
verifyResetPwd()
|
||||
},[])
|
||||
return (
|
||||
<>
|
||||
<AuthLayout slogan="Welcome to WrenchBoard">
|
||||
@@ -149,68 +139,59 @@ const VerifyPassword = () => {
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex place-content-center">
|
||||
{requestStatus.loading ? (
|
||||
<LoadingSpinner color="sky-blue" size="16" height="h-300px" />
|
||||
) : !requestStatus.loading && requestStatus.status ? (
|
||||
<div className="w-11/12 sm:max-w-[500px]">
|
||||
{linkSuccess == null ? (
|
||||
<>
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
||||
Password Reset
|
||||
</h1>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
Enter a new password to reset
|
||||
</span>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
We'll send an email to confirm reset
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-red-500 font-semibold mb-3 leading-[27.3px] text-[13px]">
|
||||
Must include a special, numeric, uppercase and lowercase
|
||||
character
|
||||
</p>
|
||||
</div>
|
||||
<SuccessfulComponent
|
||||
password={password}
|
||||
confirmPassword={confirmPassword}
|
||||
handlePassword={handlePassword}
|
||||
onSubmit={completeReset}
|
||||
msgErr={msgError}
|
||||
loader={linkLoader}
|
||||
showPassword={showPassword}
|
||||
onClick={togglePasswordVisibility}
|
||||
navigateHandler={() => navigate("/login")}
|
||||
/>
|
||||
</>
|
||||
) : (
|
||||
<ForgetPwdResponse
|
||||
title={
|
||||
linkSuccess
|
||||
? "Password Reset Complete"
|
||||
: "Password Reset Error"
|
||||
}
|
||||
message={
|
||||
linkSuccess
|
||||
? "Password Reset Complete. You can login now with your new credentials"
|
||||
: "Password Reset Error. Please get in touch with support for further support"
|
||||
}
|
||||
type={linkSuccess}
|
||||
{requestStatus.loading ?
|
||||
<LoadingSpinner color='sky-blue' size='16' height='h-300px' />
|
||||
:
|
||||
!requestStatus.loading && requestStatus.status ?
|
||||
<div className="w-11/12 sm:max-w-[500px]">
|
||||
{linkSuccess == null ?
|
||||
<>
|
||||
<div className="title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<h1 className="text-[#181c32] font-semibold dark:text-white mb-3 leading-[27.3px] text-[22.75px]">
|
||||
Password Reset
|
||||
</h1>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
Enter a new password to reset
|
||||
</span>
|
||||
<span className="text-gray-400 font-medium text-[16.25px] leading-[24.375px]">
|
||||
We'll send an email to confirm reset
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-red-500 font-semibold mb-3 leading-[27.3px] text-[13px]">
|
||||
Must include a special, numeric, uppercase and lowercase character
|
||||
</p>
|
||||
</div>
|
||||
<SuccessfulComponent
|
||||
password={password}
|
||||
confirmPassword={confirmPassword}
|
||||
handlePassword={handlePassword}
|
||||
onSubmit={completeReset}
|
||||
msgErr={msgError}
|
||||
loader={linkLoader}
|
||||
showPassword={showPassword}
|
||||
onClick={togglePasswordVisibility}
|
||||
navigateHandler={() => navigate("/login")}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
) : (
|
||||
<div className="w-11/12 sm:max-w-[500px] title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<ForgetPwdResponse
|
||||
title={"Forget Password"}
|
||||
message={
|
||||
"We are unable to continue to reset process. This error is usually due to expired links. Please start all over or contact us"
|
||||
}
|
||||
type={requestStatus.status}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
:
|
||||
<ForgetPwdResponse
|
||||
title={linkSuccess? 'Password Reset Complete' : 'Password Reset Error'}
|
||||
message={linkSuccess? 'Password Reset Complete. You can login now with your new credentials' : 'Password Reset Error. Please get in touch with support for further support'
|
||||
}
|
||||
type={linkSuccess}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
:
|
||||
<div className="w-11/12 sm:max-w-[500px] title-area flex flex-col justify-center items-center relative text-center mb-7">
|
||||
<ForgetPwdResponse
|
||||
title={'Forget Password'}
|
||||
message={'We are unable to continue to reset process. This error is usually due to expired links. Please start all over or contact us'}
|
||||
type={requestStatus.status}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</AuthLayout>
|
||||
|
||||
@@ -13,7 +13,6 @@ import usersService from "../../services/UsersService";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import AssignTaskPopout from "./FamilyPopout/AssignTaskPopout";
|
||||
import FamilyWallet from "./Tabs/FamilyWallet";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
|
||||
// Lazy Imports for components
|
||||
const FamilyWaitlist = lazy(() => import("./Tabs/FamilyWaitlist"));
|
||||
@@ -128,7 +127,7 @@ export default function FamilyManageTabs({
|
||||
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
|
||||
file_data: base64Img,
|
||||
msg_type: 'FILE',
|
||||
action: apiConst.WRENCHBOARD_PICTURE_FAMMEMBER
|
||||
action: 11305
|
||||
}
|
||||
setUploadStatus({loading: true, status: false, message:'Loading...'})
|
||||
apiCall.sendFiles(reqData).then(res=>{
|
||||
@@ -286,7 +285,7 @@ export default function FamilyManageTabs({
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
job_type: "FAMILY",
|
||||
action: apiConst.WRENCHBOARD_PICTURE_FAMMEMBER,
|
||||
action: 13005,
|
||||
};
|
||||
|
||||
if (checkFamilyTask) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import React, { useMemo, useRef, useState } from "react";
|
||||
import usersService from "../../../../services/UsersService";
|
||||
import { apiConst } from "../../../../lib/apiConst";
|
||||
|
||||
const FamilyBanner = ({ imageServer }) => {
|
||||
const uploadedImage = `${imageServer}${localStorage.getItem(
|
||||
@@ -66,7 +65,7 @@ const FamilyBanner = ({ imageServer }) => {
|
||||
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
|
||||
file_data: base64Img,
|
||||
msg_type: "FILE",
|
||||
action: apiConst.WRENCHBOARD_PICTURE_JOB,
|
||||
action: 11303,
|
||||
};
|
||||
setUploadStatus({
|
||||
loading: true,
|
||||
|
||||
@@ -55,6 +55,7 @@ export default function FamilyProfile({ familyData, className }) {
|
||||
year: familyData?.year,
|
||||
month: familyData?.month,
|
||||
enable_traking: familyData?.enable_traking,
|
||||
action: 22020,
|
||||
};
|
||||
|
||||
// const handleChange = ({ target: { name, value } }) => {
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import ModalCom from "../../../Helpers/ModalCom";
|
||||
import InputCom from "../../../Helpers/Inputs/InputCom";
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import ModalCom from '../../../Helpers/ModalCom'
|
||||
import InputCom from '../../../Helpers/Inputs/InputCom'
|
||||
import { Form, Formik } from "formik";
|
||||
import * as Yup from "yup";
|
||||
|
||||
import { AmountTo2DP } from "../../../Helpers/PriceFormatter";
|
||||
import usersService from "../../../../services/UsersService";
|
||||
import LoadingSpinner from "../../../Spinners/LoadingSpinner";
|
||||
import { PriceFormatter } from "../../../Helpers/PriceFormatter";
|
||||
import { tableReload } from "../../../../store/TableReloads";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { apiConst } from "../../../../lib/apiConst";
|
||||
import {AmountTo2DP} from '../../../Helpers/PriceFormatter'
|
||||
import usersService from '../../../../services/UsersService';
|
||||
import LoadingSpinner from '../../../Spinners/LoadingSpinner';
|
||||
import { PriceFormatter } from '../../../Helpers/PriceFormatter';
|
||||
import { tableReload } from '../../../../store/TableReloads';
|
||||
import { useDispatch } from 'react-redux';
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
// amount: Yup.string()
|
||||
@@ -23,149 +22,104 @@ const validationSchema = Yup.object().shape({
|
||||
// return true;
|
||||
// })
|
||||
// .required("Amount is required"),
|
||||
amount: Yup.number("Please enter a number")
|
||||
.min(1, "Price must be greater than 0")
|
||||
.required("Amount is required"),
|
||||
comment: Yup.string().required("Comment is required"),
|
||||
amount: Yup.number('Please enter a number')
|
||||
.min(1, "Price must be greater than 0")
|
||||
.required("Amount is required"),
|
||||
comment: Yup.string()
|
||||
.required("Comment is required"),
|
||||
});
|
||||
|
||||
function FamilyAddFundPopout({ action, situation, wallet, familyData }) {
|
||||
const dispatch = useDispatch();
|
||||
function FamilyAddFundPopout({action, situation, wallet, familyData}) {
|
||||
|
||||
const apiUrl = new usersService();
|
||||
const dispatch = useDispatch()
|
||||
|
||||
const [startTransfer, setStartTransfer] = useState({
|
||||
loading: true,
|
||||
data: {},
|
||||
});
|
||||
const apiUrl = new usersService()
|
||||
|
||||
const [startTransfer, setStartTransfer] = useState({loading:true, data: {}})
|
||||
|
||||
const [requestStatus, setRequestStatus] = useState({loading:false, status:false, message:''})
|
||||
|
||||
const [requestStatus, setRequestStatus] = useState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
});
|
||||
|
||||
// initial values for formik
|
||||
let initialValues = {
|
||||
amount: "",
|
||||
from: AmountTo2DP(startTransfer?.data?.origing_current_balance * 0.01),
|
||||
amount: '',
|
||||
from : AmountTo2DP(startTransfer?.data?.origing_current_balance*0.01),
|
||||
to: `${familyData.firstname} ${familyData.lastname}`,
|
||||
comment: "",
|
||||
comment: ''
|
||||
};
|
||||
// FUNCTION TO PERFORM FAMILY TRANSFER
|
||||
const handleAddFund = (values) => {
|
||||
setRequestStatus({ loading: true, status: false, message: "" });
|
||||
setRequestStatus({loading:true, status:false, message:''})
|
||||
|
||||
let senderBal = startTransfer?.data?.origing_current_balance || ""; // SENDER'S ACCOUNT BALANCE
|
||||
let senderLimit = startTransfer?.data?.origing_transfer_limit || ""; // SENDER'S TRANSFER LIMIT
|
||||
let senderBal = startTransfer?.data?.origing_current_balance || '' // SENDER'S ACCOUNT BALANCE
|
||||
let senderLimit = startTransfer?.data?.origing_transfer_limit || '' // SENDER'S TRANSFER LIMIT
|
||||
|
||||
let reqData = {
|
||||
// API REQUEST DATA
|
||||
family_uid: familyData.uid,
|
||||
wallet_uid: wallet.wallet_uid,
|
||||
origing_wallet_uid: startTransfer?.data?.origing_wallet_uid,
|
||||
currency: startTransfer?.data?.currency,
|
||||
amount: values.amount * 100,
|
||||
description: values.comment,
|
||||
family_transfer_mode: 100,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_TRANSFER,
|
||||
};
|
||||
|
||||
if (!senderBal || !senderLimit) {
|
||||
// RETURNS UNAUTHORIZED, IF SENDER BAL OR LIMIT IS NOT AVAILABLE
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unauthorized, try again later",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 5000);
|
||||
let reqData = { // API REQUEST DATA
|
||||
family_uid : familyData.uid,
|
||||
wallet_uid : wallet.wallet_uid,
|
||||
origing_wallet_uid : startTransfer?.data?.origing_wallet_uid,
|
||||
currency : startTransfer?.data?.currency,
|
||||
amount : values.amount*100,
|
||||
description : values.comment,
|
||||
family_transfer_mode : 100,
|
||||
action : 22014
|
||||
}
|
||||
|
||||
if (values.amount > senderBal * 0.01) {
|
||||
// CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS BALANCE
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "You cannot send more than your balance",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 5000);
|
||||
if(!senderBal || !senderLimit){ // RETURNS UNAUTHORIZED, IF SENDER BAL OR LIMIT IS NOT AVAILABLE
|
||||
setRequestStatus({loading:false, status:false, message:'Unauthorized, try again later'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
if (values.amount > senderLimit * 0.01) {
|
||||
// CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS LIMIT
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: `You cannot exceed ${senderLimit * 0.01} ${
|
||||
startTransfer?.data?.origing_currency.charAt(0).toUpperCase() +
|
||||
startTransfer?.data?.origing_currency.slice(1).toLowerCase()
|
||||
}`,
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 5000);
|
||||
if(values.amount > senderBal*0.01){ // CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS BALANCE
|
||||
setRequestStatus({loading:false, status:false, message:'You cannot send more than your balance'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
apiUrl
|
||||
.familyTransfer(reqData)
|
||||
.then(({ data }) => {
|
||||
if (
|
||||
data.internal_return < 0 ||
|
||||
data.credit_confirm == "" ||
|
||||
data.pay_confirm == ""
|
||||
) {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Transfer Failed",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 5000);
|
||||
}
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: "Transfer Successful",
|
||||
});
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
dispatch(tableReload({ type: "WALLETTABLE" })); // UPDATES PARENT WALLET ACCOUNT
|
||||
action(); // TO CLOSE THE MODAL
|
||||
}, 5000);
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Network Error, try again",
|
||||
});
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 5000);
|
||||
});
|
||||
};
|
||||
if(values.amount > senderLimit*0.01){ // CHECKS TO SEE IF SENDER IS SENDING MORE THAN HIS LIMIT
|
||||
setRequestStatus({loading:false, status:false, message:`You cannot exceed ${senderLimit*0.01} ${startTransfer?.data?.origing_currency.charAt(0).toUpperCase() + startTransfer?.data?.origing_currency.slice(1).toLowerCase()}`})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
apiUrl.familyTransfer(reqData).then(({data}) => {
|
||||
if(data.internal_return < 0 || data.credit_confirm == '' || data.pay_confirm == ''){
|
||||
setRequestStatus({loading:false, status:false, message:'Transfer Failed'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
}, 5000)
|
||||
}
|
||||
setRequestStatus({loading:false, status:true, message:'Transfer Successful'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
dispatch(tableReload({ type: "WALLETTABLE" })); // UPDATES PARENT WALLET ACCOUNT
|
||||
action() // TO CLOSE THE MODAL
|
||||
}, 5000)
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading:false, status:false, message:'Network Error, try again'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
}, 5000)
|
||||
})
|
||||
}
|
||||
|
||||
// LOAD FAMILY START TRANSFER
|
||||
useEffect(() => {
|
||||
useEffect(()=>{
|
||||
let reqData = {
|
||||
family_uid: familyData.uid,
|
||||
wallet_uid: wallet.wallet_uid,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_TRANSFERSTART,
|
||||
};
|
||||
apiUrl
|
||||
.familyTransferStart(reqData)
|
||||
.then((response) => {
|
||||
setStartTransfer({ loading: false, data: response?.data });
|
||||
})
|
||||
.catch((err) => {
|
||||
setStartTransfer({ loading: false, data: {} });
|
||||
});
|
||||
}, []);
|
||||
action: 22013
|
||||
}
|
||||
apiUrl.familyTransferStart(reqData).then(response => {
|
||||
setStartTransfer({loading:false, data:response?.data })
|
||||
}).catch(err => {
|
||||
setStartTransfer({loading:false, data: {}})
|
||||
})
|
||||
},[])
|
||||
|
||||
return (
|
||||
<ModalCom action={action} situation={situation}>
|
||||
@@ -201,125 +155,116 @@ function FamilyAddFundPopout({ action, situation, wallet, familyData }) {
|
||||
</button>
|
||||
</div>
|
||||
<div className="logout-modal-body w-full flex flex-col items-center px-10 py-8">
|
||||
{startTransfer.loading && (
|
||||
<LoadingSpinner size="16" color="sky-blue" height={"h-64"} />
|
||||
)}
|
||||
|
||||
{!startTransfer.loading && (
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
validationSchema={validationSchema}
|
||||
onSubmit={handleAddFund}
|
||||
>
|
||||
{(props) => (
|
||||
<Form className="w-full">
|
||||
<div className="flex flex-col-reverse sm:flex-row">
|
||||
<div className="fields w-full">
|
||||
{/* AMOUNT */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="0"
|
||||
label={`Amount (${startTransfer?.data?.currency})`}
|
||||
name="amount"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9] ${
|
||||
props.errors.amount && props.touched.amount
|
||||
? "border border-red-500"
|
||||
: ""
|
||||
}`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.amount}
|
||||
inputHandler={props.handleChange}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* FROM */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="From"
|
||||
label={`From (${startTransfer?.data?.origing_currency})`}
|
||||
name="from"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9]`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.from}
|
||||
disable={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* TO */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="To"
|
||||
label="To:"
|
||||
name="to"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9]`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.to}
|
||||
disable={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* COMMENT */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<div className="w-full">
|
||||
<label
|
||||
htmlFor="Job Delivery Details"
|
||||
className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex items-center gap-1"
|
||||
>
|
||||
Comment
|
||||
{/* {props.errors.comment && props.touched.comment && <span className='text-sm text-red-500'>{' '}{props.errors.comment}</span>} */}
|
||||
</label>
|
||||
<textarea
|
||||
// id="Job Delivery Details"
|
||||
rows="2"
|
||||
className={`input-field px-3 py-2 placeholder:text-base text-dark-gray dark:text-white w-full bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-[#dce4e9] rounded-[10px] border ${
|
||||
props.errors.comment && props.touched.comment
|
||||
? "border border-red-500"
|
||||
: ""
|
||||
}`}
|
||||
style={{ resize: "none" }}
|
||||
name="comment"
|
||||
value={props.values.comment}
|
||||
onChange={props.handleChange}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{/* inputs ends here */}
|
||||
{startTransfer.loading && <LoadingSpinner size='16' color='sky-blue' height={'h-64'} />}
|
||||
|
||||
{ !startTransfer.loading &&
|
||||
<Formik
|
||||
initialValues={initialValues}
|
||||
validationSchema={validationSchema}
|
||||
onSubmit={handleAddFund}
|
||||
>
|
||||
{(props) => (
|
||||
<Form className="w-full">
|
||||
<div className="flex flex-col-reverse sm:flex-row">
|
||||
<div className="fields w-full">
|
||||
{/* AMOUNT */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="0"
|
||||
label={`Amount (${startTransfer?.data?.currency})`}
|
||||
name="amount"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9] ${props.errors.amount && props.touched.amount ? 'border border-red-500' : ''}`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.amount}
|
||||
inputHandler={props.handleChange}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* FROM */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="From"
|
||||
label={`From (${startTransfer?.data?.origing_currency})`}
|
||||
name="from"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9]`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.from}
|
||||
disable={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* TO */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<InputCom
|
||||
placeholder="To"
|
||||
label="To:"
|
||||
name="to"
|
||||
type="text"
|
||||
parentClass="flex items-center gap-1 w-full"
|
||||
labelClass="flex-[0.3] mb-0"
|
||||
inputClass={`flex-[0.7] input-curve lg border border-[#dce4e9]`}
|
||||
fieldClass="px-2 text-right"
|
||||
value={props.values.to}
|
||||
disable={true}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* COMMENT */}
|
||||
<div className="field w-full mb-[0.5rem]">
|
||||
<div className="w-full">
|
||||
<label
|
||||
htmlFor="Job Delivery Details"
|
||||
className="input-label text-[#181c32] dark:text-white text-[13.975px] leading-[20.9625px] font-semibold flex items-center gap-1"
|
||||
>
|
||||
Comment
|
||||
{/* {props.errors.comment && props.touched.comment && <span className='text-sm text-red-500'>{' '}{props.errors.comment}</span>} */}
|
||||
</label>
|
||||
<textarea
|
||||
// id="Job Delivery Details"
|
||||
rows="2"
|
||||
className={`input-field px-3 py-2 placeholder:text-base text-dark-gray dark:text-white w-full bg-slate-100 dark:bg-[#11131F] focus:ring-0 focus:outline-[#dce4e9] rounded-[10px] border ${props.errors.comment && props.touched.comment ? 'border border-red-500' : ''}`}
|
||||
style={{ resize: "none" }}
|
||||
name="comment"
|
||||
value={props.values.comment}
|
||||
onChange={props.handleChange}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{/* inputs ends here */}
|
||||
</div>
|
||||
{/* ERROR DISPLAY AND SUBMIT BUTTON */}
|
||||
<div className="content-footer w-full">
|
||||
{/* error or success display */}
|
||||
{requestStatus.message != "" &&
|
||||
(!requestStatus.status ? (
|
||||
</div>
|
||||
{/* ERROR DISPLAY AND SUBMIT BUTTON */}
|
||||
<div className="content-footer w-full">
|
||||
{/* error or success display */}
|
||||
{requestStatus.message != "" &&
|
||||
(!requestStatus.status ? (
|
||||
<div
|
||||
className={`relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
// className={`pb-1 absolute bottom-0 left-1/2 -translate-x-1/2 text-[#912741] rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
|
||||
>
|
||||
{requestStatus.message}
|
||||
</div>
|
||||
) : (
|
||||
requestStatus.status && (
|
||||
<div
|
||||
className={`relative p-4 text-[#912741] bg-[#fcd9e2] border-[#fbc6d3] rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
// className={`pb-1 absolute bottom-0 left-1/2 -translate-x-1/2 text-[#912741] rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
className={`relative p-4 text-green-700 bg-slate-200 border-slate-800 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
// className={`pb-1 absolute bottom-0 left-1/2 -translate-x-1/2 text-green-700 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
>
|
||||
{requestStatus.message}
|
||||
</div>
|
||||
) : (
|
||||
requestStatus.status && (
|
||||
<div
|
||||
className={`relative p-4 text-green-700 bg-slate-200 border-slate-800 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
// className={`pb-1 absolute bottom-0 left-1/2 -translate-x-1/2 text-green-700 rounded-[0.475rem] text-md font-light leading-[19.5px] text-[13px]`}
|
||||
>
|
||||
{requestStatus.message}
|
||||
</div>
|
||||
)
|
||||
))}
|
||||
{/* End of error or success display */}
|
||||
)
|
||||
))}
|
||||
{/* End of error or success display */}
|
||||
|
||||
<div className="pt-2 w-full border-t border-light-purple dark:border-[#5356fb29] flex justify-end items-center">
|
||||
<div className="w-full flex justify-between gap-2 items-center">
|
||||
<div className="pt-2 w-full border-t border-light-purple dark:border-[#5356fb29] flex justify-end items-center">
|
||||
<div className="w-full flex justify-between gap-2 items-center">
|
||||
<button
|
||||
type="button"
|
||||
onClick={action}
|
||||
@@ -328,31 +273,29 @@ function FamilyAddFundPopout({ action, situation, wallet, familyData }) {
|
||||
Cancel
|
||||
</button>
|
||||
<>
|
||||
{requestStatus.loading ? (
|
||||
<LoadingSpinner size="6" color="sky-blue" />
|
||||
) : (
|
||||
<button
|
||||
type="submit"
|
||||
className={`w-[150px] h-[48px] rounded-full text-base text-white bg-sky-500 hover:bg-sky-400 ${
|
||||
requestStatus.status ? "opacity-50" : ""
|
||||
}`}
|
||||
disabled={requestStatus.status}
|
||||
>
|
||||
Send
|
||||
</button>
|
||||
)}
|
||||
{requestStatus.loading ?
|
||||
<LoadingSpinner size='6' color='sky-blue' />
|
||||
:
|
||||
<button
|
||||
type="submit"
|
||||
className={`w-[150px] h-[48px] rounded-full text-base text-white bg-sky-500 hover:bg-sky-400 ${requestStatus.status ? 'opacity-50' : ''}`}
|
||||
disabled={requestStatus.status}
|
||||
>
|
||||
Send
|
||||
</button>
|
||||
}
|
||||
</>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
)}
|
||||
</div>
|
||||
</Form>
|
||||
)}
|
||||
</Formik>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</ModalCom>
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
export default FamilyAddFundPopout;
|
||||
export default FamilyAddFundPopout
|
||||
@@ -102,7 +102,13 @@ export default function FamilyAcc() {
|
||||
const memberList = useCallback(async () => {
|
||||
setLoader(true);
|
||||
try {
|
||||
const res = await apiCall.familyListings();
|
||||
const reqData = {
|
||||
limit: 20,
|
||||
offset: 0,
|
||||
action: 22010,
|
||||
};
|
||||
|
||||
const res = await apiCall.familyListings(reqData);
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0 && data?.status === "OK") {
|
||||
const { result_list, session_image_server } = data;
|
||||
|
||||
@@ -560,6 +560,24 @@ export default function Icons({ name }) {
|
||||
src={localImgLoad("images/icons/family-pin.svg")}
|
||||
alt="family-pin"
|
||||
/>
|
||||
) : name === "pending-job" ? (
|
||||
<img
|
||||
className="w-[19px] h-[19px]"
|
||||
src={localImgLoad("images/icons/job_pending.svg")}
|
||||
alt="Pending Job"
|
||||
/>
|
||||
) : name === "active-job" ? (
|
||||
<img
|
||||
className="w-[17px] h-[17px]"
|
||||
src={localImgLoad("images/icons/job_active.svg")}
|
||||
alt="Active Job"
|
||||
/>
|
||||
) : name === "job-list" ? (
|
||||
<img
|
||||
className="w-[17px] h-[17px]"
|
||||
src={localImgLoad("images/icons/job_list.svg")}
|
||||
alt="Job List"
|
||||
/>
|
||||
) : (
|
||||
""
|
||||
)}
|
||||
|
||||
@@ -1,93 +1,69 @@
|
||||
import React, { useState } from "react";
|
||||
import React, { useState } from 'react'
|
||||
|
||||
import ModalCom from "../Helpers/ModalCom";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import InputCom from "../Helpers/Inputs/InputCom/index";
|
||||
import ModalCom from '../Helpers/ModalCom'
|
||||
import LoadingSpinner from '../Spinners/LoadingSpinner'
|
||||
import InputCom from '../Helpers/Inputs/InputCom/index'
|
||||
|
||||
import usersService from "../../services/UsersService";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
import usersService from '../../services/UsersService'
|
||||
|
||||
export default function AddGroup({ action, situation, setUpdateList }) {
|
||||
const api = new usersService();
|
||||
export default function AddGroup({action, situation , setUpdateList}) {
|
||||
|
||||
const [name, setName] = useState("");
|
||||
const api = new usersService()
|
||||
|
||||
const handleChange = ({ target: { name, value } }) => {
|
||||
setName(value);
|
||||
};
|
||||
const [name, setName] = useState('')
|
||||
|
||||
let [requestStatus, setRequestStatus] = useState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
}); // STATE FOR KNOWING WHEN A REQUEST IS MADE TO THE SERVER
|
||||
const handleChange = ({target:{name, value}}) =>{
|
||||
setName(value)
|
||||
}
|
||||
|
||||
const addGroup = () => {
|
||||
setRequestStatus({ loading: true, status: false, message: "" });
|
||||
if (name == "") {
|
||||
setRequestStatus({
|
||||
let [requestStatus, setRequestStatus] = useState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Please enter a group name",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
}
|
||||
if (name.length < 6) {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Group name must be up to six characters",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
}
|
||||
api
|
||||
.jobGroupAdd({
|
||||
group_name: name,
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_SYSTEM,
|
||||
})
|
||||
.then((response) => {
|
||||
let { status, data } = response;
|
||||
if (status != 200 || data.internal_return < 0) {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to add Group",
|
||||
});
|
||||
return;
|
||||
message: "",
|
||||
}); // STATE FOR KNOWING WHEN A REQUEST IS MADE TO THE SERVER
|
||||
|
||||
const addGroup = () => {
|
||||
setRequestStatus({loading:true, status:false, message:''})
|
||||
if(name == ''){
|
||||
setRequestStatus({loading:false, status:false, message:'Please enter a group name'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
},3000)
|
||||
}
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: "Group Added",
|
||||
});
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
// close modal
|
||||
action();
|
||||
// reload group page
|
||||
setUpdateList((prev) => !prev);
|
||||
}, 3000);
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to add Group, try again later",
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
});
|
||||
};
|
||||
if(name.length < 6){
|
||||
setRequestStatus({loading:false, status:false, message:'Group name must be up to six characters'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
},3000)
|
||||
}
|
||||
api.jobGroupAdd({group_name:name, action:13025}).then(response => {
|
||||
let {status, data} = response
|
||||
if(status != 200 || data.internal_return < 0){
|
||||
setRequestStatus({loading:false, status:false, message:'Unable to add Group'})
|
||||
return
|
||||
}
|
||||
setRequestStatus({loading:false, status:true, message:'Group Added'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
// close modal
|
||||
action()
|
||||
// reload group page
|
||||
setUpdateList(prev => !prev)
|
||||
},3000)
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading:false, status:false, message:'Unable to add Group, try again later'})
|
||||
}).finally(()=>{
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message:''})
|
||||
},3000)
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<ModalCom action={action} situation={situation}>
|
||||
<ModalCom
|
||||
action={action}
|
||||
situation={situation}
|
||||
>
|
||||
<div className="logout-modal-wrapper lg:w-[500px] h-full lg:h-auto bg-white dark:bg-dark-white lg:rounded-2xl">
|
||||
<div className="logout-modal-header w-full flex items-center justify-between lg:px-10 lg:py-8 px-[30px] py-[23px] border-b border-light-purple dark:border-[#5356fb29] ">
|
||||
<h1 className="text-26 font-bold text-dark-gray dark:text-white tracking-wide">
|
||||
@@ -122,7 +98,7 @@ export default function AddGroup({ action, situation, setUpdateList }) {
|
||||
<div className="logout-modal-body w-full flex flex-col items-center px-10 py-8">
|
||||
<div className="mb-6 w-full">
|
||||
<div className="input-item">
|
||||
<InputCom
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={name}
|
||||
@@ -132,7 +108,7 @@ export default function AddGroup({ action, situation, setUpdateList }) {
|
||||
type="text"
|
||||
inputHandler={handleChange}
|
||||
// iconName="message"
|
||||
/>
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="w-full flex justify-between items-center gap-4">
|
||||
@@ -141,9 +117,7 @@ export default function AddGroup({ action, situation, setUpdateList }) {
|
||||
type="button"
|
||||
className="text-base text-light-red tracking-wide "
|
||||
>
|
||||
<span className="border-b dark:border-[#5356fb29] border-light-red">
|
||||
Cancel
|
||||
</span>
|
||||
<span className="border-b dark:border-[#5356fb29] border-light-red">Cancel</span>
|
||||
</button>
|
||||
{requestStatus.loading ? (
|
||||
<LoadingSpinner size="8" color="sky-blue" />
|
||||
@@ -179,5 +153,5 @@ export default function AddGroup({ action, situation, setUpdateList }) {
|
||||
</div>
|
||||
</div>
|
||||
</ModalCom>
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1,295 +1,262 @@
|
||||
import React, { useState } from "react";
|
||||
import React, { useState } from 'react'
|
||||
|
||||
import InputCom from "../../components/Helpers/Inputs/InputCom/index";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import GroupMemberTable from "./GroupMemberTable";
|
||||
import InputCom from '../../components/Helpers/Inputs/InputCom/index'
|
||||
import LoadingSpinner from '../Spinners/LoadingSpinner'
|
||||
import GroupMemberTable from './GroupMemberTable'
|
||||
|
||||
import EmailValidator from "../../lib/EmailValidator";
|
||||
import EmailValidator from '../../lib/EmailValidator'
|
||||
|
||||
import usersService from "../../services/UsersService";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
import usersService from '../../services/UsersService'
|
||||
|
||||
export default function MemberList({
|
||||
groupList,
|
||||
selectedGroup,
|
||||
setUpdateList,
|
||||
}) {
|
||||
const api = new usersService();
|
||||
export default function MemberList({groupList, selectedGroup, setUpdateList}) {
|
||||
|
||||
const [fields, setFields] = useState({
|
||||
firstname: "",
|
||||
lastname: "",
|
||||
email: "",
|
||||
});
|
||||
const api = new usersService()
|
||||
|
||||
const handleFieldsChange = ({ target: { name, value } }) => {
|
||||
setFields((prev) => ({ ...prev, [name]: value }));
|
||||
// let error = requestState?.errors?.indexOf(name) //// checks if the input field was in error array and removes it when the input changes
|
||||
// if(error >= 0){
|
||||
// let oldErrorArr = requestState.errors
|
||||
// let newErrorArr = oldErrorArr.splice(error, 1)
|
||||
// setRequestState(prev => ({...prev, errors:oldErrorArr}))
|
||||
// }
|
||||
const [fields, setFields] = useState({
|
||||
firstname: '',
|
||||
lastname: '',
|
||||
email: ''
|
||||
})
|
||||
|
||||
if (value == "") {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: [name],
|
||||
});
|
||||
} else {
|
||||
let error = requestState?.errors?.indexOf(name); //// checks if the input field was in error array and removes it when the input changes
|
||||
if (error >= 0) {
|
||||
let oldErrorArr = requestState.errors;
|
||||
let newErrorArr = oldErrorArr.splice(error, 1);
|
||||
setRequestState((prev) => ({ ...prev, errors: oldErrorArr }));
|
||||
}
|
||||
}
|
||||
const handleFieldsChange = ({target:{name, value}}) => {
|
||||
setFields(prev => ({...prev, [name]:value}))
|
||||
// let error = requestState?.errors?.indexOf(name) //// checks if the input field was in error array and removes it when the input changes
|
||||
// if(error >= 0){
|
||||
// let oldErrorArr = requestState.errors
|
||||
// let newErrorArr = oldErrorArr.splice(error, 1)
|
||||
// setRequestState(prev => ({...prev, errors:oldErrorArr}))
|
||||
// }
|
||||
|
||||
if (name == "email") {
|
||||
//checks if email is a valid email address
|
||||
let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/;
|
||||
if (!EmailValidator(value)) {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: ["email"],
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const [requestState, setRequestState] = useState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: ["email", "firstname", "lastname"],
|
||||
});
|
||||
|
||||
const addMember = () => {
|
||||
// let errors = Object.keys(fields).filter((item) => { // CHECKS FOR EMPTY STRINGS
|
||||
// if(typeof item == 'string' && fields[item] === ''){
|
||||
// return item
|
||||
// }
|
||||
// })
|
||||
|
||||
// if(errors.length){
|
||||
// setRequestState({
|
||||
// loading: false,
|
||||
// status: false,
|
||||
// message: '',
|
||||
// data: [],
|
||||
// errors: [...errors]
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
|
||||
//checks if email is a valid email address
|
||||
let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/;
|
||||
if (!EmailValidator(fields.email)) {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Email is invalid",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
setRequestState({
|
||||
loading: true,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
const requestData = {
|
||||
firstname: fields.firstname,
|
||||
lastname: fields.lastname,
|
||||
email: fields.email,
|
||||
group_id: selectedGroup?.id,
|
||||
action: apiConst.WRENCHBOARD_JOB_GROUP_MEMBER,
|
||||
};
|
||||
|
||||
api
|
||||
.groupMemberAdd(requestData)
|
||||
.then((response) => {
|
||||
let { status, data } = response;
|
||||
if (status != 200 || data?.internal_return < 0) {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to add member",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
return;
|
||||
if(value == ''){
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: [name]
|
||||
})
|
||||
}else{
|
||||
let error = requestState?.errors?.indexOf(name) //// checks if the input field was in error array and removes it when the input changes
|
||||
if(error >= 0){
|
||||
let oldErrorArr = requestState.errors
|
||||
let newErrorArr = oldErrorArr.splice(error, 1)
|
||||
setRequestState(prev => ({...prev, errors:oldErrorArr}))
|
||||
}
|
||||
}
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: "Member added",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
// trigger group page reload
|
||||
setUpdateList((prev) => !prev);
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
}, 3000);
|
||||
if(name == 'email'){
|
||||
//checks if email is a valid email address
|
||||
let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/;
|
||||
if (!EmailValidator(value)) {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: ['email']
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const [requestState, setRequestState] = useState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: ['email', 'firstname', 'lastname']
|
||||
})
|
||||
.catch((error) => {
|
||||
|
||||
const addMember = () => {
|
||||
// let errors = Object.keys(fields).filter((item) => { // CHECKS FOR EMPTY STRINGS
|
||||
// if(typeof item == 'string' && fields[item] === ''){
|
||||
// return item
|
||||
// }
|
||||
// })
|
||||
|
||||
// if(errors.length){
|
||||
// setRequestState({
|
||||
// loading: false,
|
||||
// status: false,
|
||||
// message: '',
|
||||
// data: [],
|
||||
// errors: [...errors]
|
||||
// })
|
||||
// return
|
||||
// }
|
||||
|
||||
//checks if email is a valid email address
|
||||
let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/;
|
||||
if (!EmailValidator(fields.email)) {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: 'Email is invalid',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
return setTimeout(()=>{
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
},3000)
|
||||
}
|
||||
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Something went wrong, try again",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
setTimeout(() => {
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "",
|
||||
data: [],
|
||||
errors: [],
|
||||
});
|
||||
setFields({
|
||||
firstname: "",
|
||||
lastname: "",
|
||||
email: "",
|
||||
});
|
||||
}, 3000);
|
||||
});
|
||||
};
|
||||
loading: true,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
const requestData = {
|
||||
firstname:fields.firstname,lastname:fields.lastname, email:fields.email, group_id: selectedGroup?.id, action:13015
|
||||
}
|
||||
|
||||
api.groupMemberAdd(requestData).then(response => {
|
||||
let {status, data} = response
|
||||
if(status != 200 || data?.internal_return < 0){
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: 'Unable to add member',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
return
|
||||
}
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: 'Member added',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
|
||||
setTimeout(()=>{
|
||||
// trigger group page reload
|
||||
setUpdateList(prev => !prev)
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
}, 3000)
|
||||
|
||||
}).catch(error=>{
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: 'Something went wrong, try again',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
}).finally(()=>{
|
||||
setTimeout(()=>{
|
||||
setRequestState({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: '',
|
||||
data: [],
|
||||
errors: []
|
||||
})
|
||||
setFields({
|
||||
firstname: '',
|
||||
lastname: '',
|
||||
email: ''
|
||||
})
|
||||
}, 3000)
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="p-5 w-full min-h-[600px] overflow-y-auto">
|
||||
{groupList && groupList.length < 1 ? (
|
||||
<>
|
||||
<h1 className="my-5 text-lg lg:text-xl tracking-wide text-slate-900 dark:text-slate-100">
|
||||
You Currently Do not have any Group, Please Add Group
|
||||
</h1>
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<h1 className="mb-5 text-lg lg:text-2xl tracking-wide font-bold text-slate-900 dark:text-slate-100">
|
||||
{selectedGroup?.name}
|
||||
</h1>
|
||||
<div className="w-full flex flex-col-reverse lg:flex-col">
|
||||
<div className="py-3 w-full">
|
||||
<div className="relative grid grid-cols-1 sm:grid-cols-2 gap-2 place-content-center">
|
||||
<div className="input-item">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.firstname}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="First Name"
|
||||
// label="Firstname"
|
||||
name="firstname"
|
||||
type="text"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className="input-item">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.lastname}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="Last Name"
|
||||
// label="Lastname"
|
||||
name="lastname"
|
||||
type="text"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className="input-item w-full sm:w-[150%]">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.email}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="Email"
|
||||
// label="Email"
|
||||
name="email"
|
||||
type="email"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex justify-end items-end">
|
||||
{requestState.loading ? (
|
||||
<LoadingSpinner size="8" color="sky-blue" />
|
||||
) : (
|
||||
<button
|
||||
onClick={addMember}
|
||||
disabled={
|
||||
requestState.loading ||
|
||||
requestState.status ||
|
||||
requestState.errors.length
|
||||
}
|
||||
className={`py-2 px-4 h-[42px] flex justify-center items-center text-base rounded-full text-white font-bold transition-all duration-500 ${
|
||||
requestState.loading ||
|
||||
requestState.status ||
|
||||
requestState.errors.length
|
||||
? "bg-sky-blue/50"
|
||||
: "bg-sky-blue hover:bg-sky-600"
|
||||
} `}
|
||||
>
|
||||
Add Member
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
<div className='p-5 w-full min-h-[600px] overflow-y-auto'>
|
||||
{groupList && groupList.length < 1 ?
|
||||
<>
|
||||
<h1 className='my-5 text-lg lg:text-xl tracking-wide text-slate-900 dark:text-slate-100'>You Currently Do not have any Group, Please Add Group</h1>
|
||||
</>
|
||||
:
|
||||
<>
|
||||
<h1 className='mb-5 text-lg lg:text-2xl tracking-wide font-bold text-slate-900 dark:text-slate-100'>{selectedGroup?.name}</h1>
|
||||
<div className='w-full flex flex-col-reverse lg:flex-col'>
|
||||
<div className='py-3 w-full'>
|
||||
<div className='relative grid grid-cols-1 sm:grid-cols-2 gap-2 place-content-center'>
|
||||
<div className="input-item">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.firstname}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="First Name"
|
||||
// label="Firstname"
|
||||
name="firstname"
|
||||
type="text"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className="input-item">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.lastname}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="Last Name"
|
||||
// label="Lastname"
|
||||
name="lastname"
|
||||
type="text"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className="input-item w-full sm:w-[150%]">
|
||||
<InputCom
|
||||
labelClass="tracking-wider"
|
||||
fieldClass="sm:px-6 px-2"
|
||||
value={fields.email}
|
||||
inputHandler={handleFieldsChange}
|
||||
placeholder="Email"
|
||||
// label="Email"
|
||||
name="email"
|
||||
type="email"
|
||||
// iconName="message"
|
||||
/>
|
||||
</div>
|
||||
<div className='flex justify-end items-end'>
|
||||
{requestState.loading ?
|
||||
<LoadingSpinner size='8' color='sky-blue' />
|
||||
:
|
||||
<button
|
||||
onClick={addMember}
|
||||
disabled={requestState.loading || requestState.status || requestState.errors.length}
|
||||
className={`py-2 px-4 h-[42px] flex justify-center items-center text-base rounded-full text-white font-bold transition-all duration-500 ${requestState.loading || requestState.status || requestState.errors.length ? 'bg-sky-blue/50' : 'bg-sky-blue hover:bg-sky-600'} `}
|
||||
>
|
||||
Add Member
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
{!requestState.loading && requestState.message && (
|
||||
<p
|
||||
className={`text-lg absolute -bottom-7 left-0 ${
|
||||
requestState.status ? "text-green-500" : "text-red-500"
|
||||
}`}
|
||||
>
|
||||
{requestState.message}
|
||||
</p>
|
||||
)}
|
||||
{!requestState.loading && requestState.message &&
|
||||
<p className={`text-lg absolute -bottom-7 left-0 ${requestState.status ? 'text-green-500' : 'text-red-500'}`}>{requestState.message}</p>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div className='my-2 flex flex-col min-h-[300px]'>
|
||||
{selectedGroup?.data?.length < 1 ?
|
||||
<h1 className='my-5 text-lg lg:text-xl tracking-wide text-slate-900 dark:text-slate-100'>No Member Found, Please Add</h1>
|
||||
:
|
||||
<GroupMemberTable selectedList={selectedGroup?.data} />
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div className="my-2 flex flex-col min-h-[300px]">
|
||||
{selectedGroup?.data?.length < 1 ? (
|
||||
<h1 className="my-5 text-lg lg:text-xl tracking-wide text-slate-900 dark:text-slate-100">
|
||||
No Member Found, Please Add
|
||||
</h1>
|
||||
) : (
|
||||
<GroupMemberTable selectedList={selectedGroup?.data} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useNavigate } from "react-router-dom";
|
||||
import usersService from "../../services/UsersService";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
|
||||
|
||||
function DeleteTaskModal({ details, onClose, situation, setReloadList }) {
|
||||
let dispatch = useDispatch();
|
||||
@@ -19,50 +19,34 @@ function DeleteTaskModal({ details, onClose, situation, setReloadList }) {
|
||||
|
||||
// FUNCTION TO DELETE TASK
|
||||
const deleteTask = () => {
|
||||
setRequestStatus({ loading: true, status: false, message: "" });
|
||||
setRequestStatus({loading:true, status:false, message: ''})
|
||||
|
||||
let reqData = {
|
||||
// REQUEST PAYLOAD
|
||||
let reqData = { // REQUEST PAYLOAD
|
||||
suggest_uid: details.uid,
|
||||
suggest_action: apiConst.WRENCHBOARD_COMPLETE_SENDMONEY_INTERSW,
|
||||
offset: 0,
|
||||
};
|
||||
ApiCall.suggestStatus(reqData)
|
||||
.then((response) => {
|
||||
// API CALL TO DELETE SUGGESTED TASK
|
||||
let { data } = response;
|
||||
if (data.internal_return < 0) {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to delete, Try again",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
}
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: "Family Suggest Deleted",
|
||||
});
|
||||
setReloadList((prev) => !prev); // RELOADS THE FAMILY SUGGEST LIST TABLE
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
onClose();
|
||||
}, 3000);
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to delete, Try again",
|
||||
});
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
});
|
||||
};
|
||||
suggest_action: 555,
|
||||
offset: 0
|
||||
}
|
||||
ApiCall.suggestStatus(reqData).then((response)=>{ // API CALL TO DELETE SUGGESTED TASK
|
||||
let {data} = response
|
||||
if(data.internal_return < 0){
|
||||
setRequestStatus({loading:false, status:false, message: 'Unable to delete, Try again'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
},3000)
|
||||
}
|
||||
setRequestStatus({loading:false, status:true, message: 'Family Suggest Deleted'})
|
||||
setReloadList(prev => !prev) // RELOADS THE FAMILY SUGGEST LIST TABLE
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
onClose()
|
||||
},3000)
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading:false, status:false, message: 'Unable to delete, Try again'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
},3000)
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<ModalCom action={onClose} situation={situation}>
|
||||
|
||||
@@ -4,7 +4,7 @@ import { useNavigate } from "react-router-dom";
|
||||
import usersService from "../../services/UsersService";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
|
||||
|
||||
function SendReminderModal({ details, onClose, situation, setReloadList }) {
|
||||
let dispatch = useDispatch();
|
||||
@@ -19,50 +19,34 @@ function SendReminderModal({ details, onClose, situation, setReloadList }) {
|
||||
|
||||
// FUNCTION TO SEND REMINDER
|
||||
const sendReminder = () => {
|
||||
setRequestStatus({ loading: true, status: false, message: "" });
|
||||
setRequestStatus({loading:true, status:false, message: ''})
|
||||
|
||||
let reqData = {
|
||||
// REQUEST PAYLOAD
|
||||
let reqData = { // REQUEST PAYLOAD
|
||||
suggest_uid: details.uid,
|
||||
suggest_action: apiConst.OFFER_CANCEL,
|
||||
offset: 0,
|
||||
};
|
||||
ApiCall.suggestStatus(reqData)
|
||||
.then((response) => {
|
||||
// API CALL TO DELETE SUGGESTED TASK
|
||||
let { data } = response;
|
||||
if (data.internal_return < 0) {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to send reminder, Try again1111",
|
||||
});
|
||||
return setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
}
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: true,
|
||||
message: "Reminder Sent",
|
||||
});
|
||||
setReloadList((prev) => !prev); // RELOADS THE FAMILY SUGGEST LIST TABLE
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
onClose();
|
||||
}, 3000);
|
||||
})
|
||||
.catch((error) => {
|
||||
setRequestStatus({
|
||||
loading: false,
|
||||
status: false,
|
||||
message: "Unable to send reminder, Try againNETWORK",
|
||||
});
|
||||
setTimeout(() => {
|
||||
setRequestStatus({ loading: false, status: false, message: "" });
|
||||
}, 3000);
|
||||
});
|
||||
};
|
||||
suggest_action: 222,
|
||||
offset: 0
|
||||
}
|
||||
ApiCall.suggestStatus(reqData).then((response)=>{ // API CALL TO DELETE SUGGESTED TASK
|
||||
let {data} = response
|
||||
if(data.internal_return < 0){
|
||||
setRequestStatus({loading:false, status:false, message: 'Unable to send reminder, Try again1111'})
|
||||
return setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
},3000)
|
||||
}
|
||||
setRequestStatus({loading:false, status:true, message: 'Reminder Sent'})
|
||||
setReloadList(prev => !prev) // RELOADS THE FAMILY SUGGEST LIST TABLE
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
onClose()
|
||||
},3000)
|
||||
}).catch(error => {
|
||||
setRequestStatus({loading:false, status:false, message: 'Unable to send reminder, Try againNETWORK'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, message: ''})
|
||||
},3000)
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<ModalCom action={onClose} situation={situation}>
|
||||
@@ -98,32 +82,27 @@ function SendReminderModal({ details, onClose, situation, setReloadList }) {
|
||||
</button>
|
||||
</div>
|
||||
<div className="logout-modal-body w-full flex flex-col items-center p-8">
|
||||
<div className="mb-6 w-full flex gap-4 items-center">
|
||||
|
||||
<div className="mb-6 w-full flex gap-4 items-center">
|
||||
<div className="icon max-w-[150px] min-w-[150px] max-h-[150px] min-h-[150px] flex justify-center items-center">
|
||||
<img
|
||||
src={require(`../../assets/images/family/${
|
||||
details.banner || "default.jpg"
|
||||
}`)}
|
||||
alt=""
|
||||
className="w-full h-full"
|
||||
/>
|
||||
<img src={require(`../../assets/images/family/${details.banner || "default.jpg"}`)} alt="" className="w-full h-full" />
|
||||
</div>
|
||||
<div className="w-full">
|
||||
<p className="text-xl font-bold text-dark-gray dark:text-white mb-2 capitalize line-clamp-1">
|
||||
{details.title}
|
||||
</p>
|
||||
|
||||
<p className="text-sm mb-2 text-thin-light-gray font-medium">
|
||||
{details.description}
|
||||
</p>
|
||||
{details.remind && (
|
||||
<p className="text-xl font-bold text-dark-gray dark:text-white mb-2 capitalize line-clamp-1">
|
||||
Last Remind:{" "}
|
||||
{new Date(details.remind).toLocaleString().split(",")[0]}
|
||||
{details.title}
|
||||
</p>
|
||||
)}
|
||||
|
||||
<p className="text-sm mb-2 text-thin-light-gray font-medium">
|
||||
{details.description}
|
||||
</p>
|
||||
{
|
||||
details.remind &&
|
||||
<p className="text-xl font-bold text-dark-gray dark:text-white mb-2 capitalize line-clamp-1">
|
||||
Last Remind: {new Date(details.remind).toLocaleString().split(',')[0]}
|
||||
</p>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full flex justify-end">
|
||||
{/* <button
|
||||
|
||||
@@ -190,16 +190,16 @@ export default function MobileSidebar({
|
||||
<div className="items">
|
||||
<ul className="flex flex-col space-y-6">
|
||||
{[
|
||||
{ name: "List", path: "/myjobs", iconName: "people-two" },
|
||||
{ name: "List", path: "/myjobs", iconName: "job-list" },
|
||||
{
|
||||
name: "Pending",
|
||||
path: "/my-pending-jobs",
|
||||
iconName: "people-two",
|
||||
iconName: "pending-job",
|
||||
},
|
||||
{
|
||||
name: "Active",
|
||||
path: "/my-active-jobs",
|
||||
iconName: "people-two",
|
||||
iconName: "active-job",
|
||||
},
|
||||
].map(({ name, path, iconName }, idx) => (
|
||||
<ListItem
|
||||
|
||||
@@ -2,6 +2,7 @@ import React, { useState } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { NavLink } from "react-router-dom";
|
||||
//import SideStatistics from "./SideStatistics";
|
||||
import { localImgLoad } from "../../lib";
|
||||
|
||||
export default function RightSideBar({myJobList}) {
|
||||
const filterDatas = ["Last 15 days", "Last Month", "Last 6 month"];
|
||||
@@ -169,24 +170,8 @@ export default function RightSideBar({myJobList}) {
|
||||
<div className="platform-list">
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 rounded-full">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
id="history"
|
||||
>
|
||||
<g data-name="14">
|
||||
<circle cx="9" cy="14" r="7" fill="#ffd54f"></circle>
|
||||
<path
|
||||
fill="#ef6c00"
|
||||
d="M21 9H17a1 1 0 0 1 0-2h4a1 1 0 0 1 0 2zM21 5H3A1 1 0 0 1 3 3H21a1 1 0 0 1 0 2zM21 13H19a1 1 0 0 1 0-2h2a1 1 0 0 1 0 2zM21 17H19a1 1 0 0 1 0-2h2a1 1 0 0 1 0 2zM21 21H17a1 1 0 0 1 0-2h4a1 1 0 0 1 0 2z"
|
||||
></path>
|
||||
<path
|
||||
fill="#ff8f00"
|
||||
d="M10,10a1,1,0,0,0-2,0v3.59L6.29,15.29a1,1,0,1,0,1.41,1.41l2-2A1,1,0,0,0,10,14Z"
|
||||
></path>
|
||||
</g>
|
||||
</svg>
|
||||
<div className="w-8 h-8 p-[4px] rounded-full">
|
||||
<img src={localImgLoad('images/icons/job_active.svg')} className="w-full h-full" alt='Active Task' />
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
@@ -196,123 +181,48 @@ export default function RightSideBar({myJobList}) {
|
||||
</div>
|
||||
{/* action */}
|
||||
</div>
|
||||
{/* {userDetails && userDetails?.account_type !== "FAMILY" && (
|
||||
<>
|
||||
</>
|
||||
)} */}
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 rounded-full">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
id="add-user"
|
||||
>
|
||||
<path
|
||||
fill="#9bcb5b"
|
||||
d="M12 13.4c-2 0-3.7-1.6-3.7-3.6s1.6-3.7 3.6-3.7 3.7 1.6 3.7 3.6-1.6 3.6-3.6 3.7zm0-6.2c-1.4 0-2.6 1.1-2.6 2.6 0 1.4 1.1 2.6 2.6 2.6s2.6-1.1 2.6-2.6c-.1-1.5-1.2-2.6-2.6-2.6z"
|
||||
></path>
|
||||
<path
|
||||
fill="#9bcb5b"
|
||||
d="M16.6 17.9c-.3 0-.5-.2-.6-.5 0-2.2-1.8-4-4-4s-4 1.8-4 4c0 .3-.3.5-.6.5-.2 0-.4-.2-.5-.5 0-2.8 2.3-5.1 5.1-5.1s5.1 2.3 5.1 5.1c0 .3-.2.5-.5.5z"
|
||||
></path>
|
||||
<path
|
||||
fill="#0376bc"
|
||||
d="M12 23.7C5.5 23.7.3 18.4.3 12 .3 5.5 5.6.3 12 .3c2.6 0 5.1.9 7.2 2.5.2.2.2.6 0 .8-.2.2-.4.2-.7.1-1.9-1.4-4.1-2.2-6.5-2.2C6.2 1.4 1.4 6.2 1.4 12S6.2 22.6 12 22.6 22.6 17.8 22.6 12c0-2.4-.8-4.6-2.2-6.5-.2-.3-.1-.6.2-.8.2-.1.5-.1.7.1 1.6 2 2.5 4.6 2.4 7.2 0 6.4-5.3 11.7-11.7 11.7z"
|
||||
></path>
|
||||
<circle cx="20.2" cy="20.3" r="2.4" fill="#fff"></circle>
|
||||
<path
|
||||
fill="#9bcb5b"
|
||||
d="M18 18.1c.6-.6 1.4-.9 2.2-.9.8 0 1.6.3 2.2.9s1 1.4.9 2.2c0 .8-.3 1.6-.9 2.2s-1.4 1-2.2.9c-.8 0-1.6-.3-2.2-.9s-1-1.4-.9-2.2c-.1-.8.3-1.7.9-2.2zm3.8 2.5V20h-1.3v-1.3h-.6V20h-1.3v.6h1.3v1.3h.6v-1.3h1.3z"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/my-review-jobs">Review Pending</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 rounded-full">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 48 48"
|
||||
id="InternationalUser"
|
||||
>
|
||||
<path
|
||||
fill="#e6e7f9"
|
||||
d="M38.5 31.1c2.1-1.1 3.9-2.5 5.4-4.4h-3.2c-.6 1.6-1.3 3.1-2.2 4.4zm-5.8 1.4c2-.7 3.7-2.8 4.9-5.8h-4.9v5.8zm8.8-8.6h4.2c.9-1.8 1.5-3.7 1.7-5.8h-5.1c-.1 2-.4 4-.8 5.8zm2.4-17.3c-1.5-1.8-3.3-3.3-5.4-4.4.8 1.2 1.6 2.7 2.2 4.4h3.2zm-5.3 2.9h-5.9v5.8h6.7c-.1-2.1-.4-4.1-.8-5.8zm3.7 5.8h5.1c-.2-2.1-.8-4-1.7-5.8h-4.2c.4 1.8.7 3.7.8 5.8zM32.7.8v5.8h4.9c-1.2-2.9-2.9-5.1-4.9-5.8zm6.7 17.3h-6.7v5.8h5.9c.4-1.8.7-3.8.8-5.8zM25 6.6h4.9V.8c-2 .7-3.7 2.9-4.9 5.8zm-1.8 8.7h6.7V9.5H24c-.4 1.7-.7 3.7-.8 5.8zm6.7 17.2v-5.8H25c1.2 3 2.9 5.1 4.9 5.8zM24.1 2.3c-2.1 1.1-3.9 2.5-5.4 4.4H22c.5-1.7 1.3-3.2 2.1-4.4zM24 23.9h5.9v-5.8h-6.7c.1 2 .4 4 .8 5.8z"
|
||||
className="colorc1e5ff svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#ff6699"
|
||||
d="M3.7 44.7c0 1.6 1.2 2.8 2.8 2.8 1.3 0 2.4-.9 2.7-2.2.3 1.3 1.4 2.2 2.7 2.2 1.5 0 2.8-1.3 2.8-2.8V30.1h3.1V18.8c0-4.2-3.3-7.5-7.4-7.5H8c-4.1 0-7.4 3.4-7.4 7.5v11.3h3.1v14.6z"
|
||||
className="colorff99b0 svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#998da0"
|
||||
d="M9.2 10.3c2.4 0 4.4-2.2 4.4-4.9S11.6.5 9.2.5C6.8.5 4.8 2.7 4.8 5.4s2 4.9 4.4 4.9z"
|
||||
className="colorffd499 svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#e6e7f9"
|
||||
d="M16.9 9.5c-.3.6-.5 1.2-.8 1.8 1.3 1 2.3 2.4 2.9 4h1.3c.1-2 .3-4 .8-5.8h-4.2zm2.9 9.3v5.1h1.4c-.4-1.8-.7-3.8-.8-5.8h-.6c-.1.2 0 .4 0 .7zm2.2 7.9h-2.2v1.2c1.3 1.3 2.7 2.4 4.4 3.2-.9-1.3-1.7-2.8-2.2-4.4z"
|
||||
className="colorc1e5ff svgShape"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/my-pastdue-jobs">Past Due</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 p-[4px] rounded-full">
|
||||
<img src={localImgLoad('images/icons/job_pending.svg')} className="w-full h-full" alt='Review Task' />
|
||||
</div>
|
||||
|
||||
{/* Line */}
|
||||
<div className="my-4 mx-auto w-10/12 h-[2px] bg-slate-500 dark:bg-white rounded-full"></div>
|
||||
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 rounded-full">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 48 48"
|
||||
id="InternationalUser"
|
||||
>
|
||||
<path
|
||||
fill="#e6e7f9"
|
||||
d="M38.5 31.1c2.1-1.1 3.9-2.5 5.4-4.4h-3.2c-.6 1.6-1.3 3.1-2.2 4.4zm-5.8 1.4c2-.7 3.7-2.8 4.9-5.8h-4.9v5.8zm8.8-8.6h4.2c.9-1.8 1.5-3.7 1.7-5.8h-5.1c-.1 2-.4 4-.8 5.8zm2.4-17.3c-1.5-1.8-3.3-3.3-5.4-4.4.8 1.2 1.6 2.7 2.2 4.4h3.2zm-5.3 2.9h-5.9v5.8h6.7c-.1-2.1-.4-4.1-.8-5.8zm3.7 5.8h5.1c-.2-2.1-.8-4-1.7-5.8h-4.2c.4 1.8.7 3.7.8 5.8zM32.7.8v5.8h4.9c-1.2-2.9-2.9-5.1-4.9-5.8zm6.7 17.3h-6.7v5.8h5.9c.4-1.8.7-3.8.8-5.8zM25 6.6h4.9V.8c-2 .7-3.7 2.9-4.9 5.8zm-1.8 8.7h6.7V9.5H24c-.4 1.7-.7 3.7-.8 5.8zm6.7 17.2v-5.8H25c1.2 3 2.9 5.1 4.9 5.8zM24.1 2.3c-2.1 1.1-3.9 2.5-5.4 4.4H22c.5-1.7 1.3-3.2 2.1-4.4zM24 23.9h5.9v-5.8h-6.7c.1 2 .4 4 .8 5.8z"
|
||||
className="colorc1e5ff svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#ff6699"
|
||||
d="M3.7 44.7c0 1.6 1.2 2.8 2.8 2.8 1.3 0 2.4-.9 2.7-2.2.3 1.3 1.4 2.2 2.7 2.2 1.5 0 2.8-1.3 2.8-2.8V30.1h3.1V18.8c0-4.2-3.3-7.5-7.4-7.5H8c-4.1 0-7.4 3.4-7.4 7.5v11.3h3.1v14.6z"
|
||||
className="colorff99b0 svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#998da0"
|
||||
d="M9.2 10.3c2.4 0 4.4-2.2 4.4-4.9S11.6.5 9.2.5C6.8.5 4.8 2.7 4.8 5.4s2 4.9 4.4 4.9z"
|
||||
className="colorffd499 svgShape"
|
||||
></path>
|
||||
<path
|
||||
fill="#e6e7f9"
|
||||
d="M16.9 9.5c-.3.6-.5 1.2-.8 1.8 1.3 1 2.3 2.4 2.9 4h1.3c.1-2 .3-4 .8-5.8h-4.2zm2.9 9.3v5.1h1.4c-.4-1.8-.7-3.8-.8-5.8h-.6c-.1.2 0 .4 0 .7zm2.2 7.9h-2.2v1.2c1.3 1.3 2.7 2.4 4.4 3.2-.9-1.3-1.7-2.8-2.2-4.4z"
|
||||
className="colorc1e5ff svgShape"
|
||||
></path>
|
||||
</svg>
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/job-groups">Job Groups</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/my-review-jobs">Review Pending</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 p-[4px] rounded-full">
|
||||
<img src={localImgLoad('images/icons/job_past_due.svg')} className="w-full h-full" alt='Past Due Task' />
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/my-pastdue-jobs">Past Due</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Line */}
|
||||
<div className="my-4 mx-auto w-10/12 h-[2px] bg-slate-500 dark:bg-white rounded-full"></div>
|
||||
|
||||
<div className="px-8 item flex space-x-3 items-center mb-4">
|
||||
{/* image */}
|
||||
<div className="w-8 h-8 p-[4px] rounded-full">
|
||||
<img src={localImgLoad('images/icons/job_group.svg')} className="w-full h-full" alt='Job Groups' />
|
||||
</div>
|
||||
{/* name */}
|
||||
<div>
|
||||
<p className="text-thin-light-gray text-base font-medium">
|
||||
<NavLink to="/job-groups">Job Groups</NavLink>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -215,17 +215,17 @@ export default function Sidebar({
|
||||
{
|
||||
name: "List",
|
||||
path: "/myjobs",
|
||||
iconName: "people-two",
|
||||
iconName: "job-list",
|
||||
},
|
||||
{
|
||||
name: "Pending",
|
||||
path: "/my-pending-jobs",
|
||||
iconName: "people-two",
|
||||
iconName: "pending-job",
|
||||
},
|
||||
{
|
||||
name: "Active",
|
||||
path: "/my-active-jobs",
|
||||
iconName: "people-two",
|
||||
iconName: "active-job",
|
||||
},
|
||||
].map(({ name, path, iconName }, idx) => (
|
||||
<ListItem
|
||||
|
||||
@@ -11,7 +11,6 @@ import profileImage from "../../../assets/images/profile.jpg";
|
||||
|
||||
import { Form, Formik } from "formik";
|
||||
import * as Yup from "yup";
|
||||
import { apiConst } from "../../../lib/apiConst";
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
email: Yup.string()
|
||||
@@ -148,7 +147,7 @@ export default function PersonalInfoTab({
|
||||
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
|
||||
file_data: base64Img,
|
||||
msg_type: "FILE",
|
||||
action: apiConst.WRENCHBOARD_PICTURE_PROFILE,
|
||||
action: 11300,
|
||||
};
|
||||
|
||||
setUploadStatus({
|
||||
|
||||
@@ -8,7 +8,6 @@ import ProductUploadField from "./ProductUploadField";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import usersService from "../../services/UsersService";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
|
||||
export default function UploadProduct({uploadTypes}) {
|
||||
const apiCall = new usersService()
|
||||
@@ -153,7 +152,7 @@ export default function UploadProduct({uploadTypes}) {
|
||||
title: itemName,
|
||||
description: description,
|
||||
msg_type: 'FILE',
|
||||
action: apiConst.WRENCHBOARD_RESOURCE_MYFILES
|
||||
action: 11307
|
||||
}
|
||||
|
||||
if(!isValidFile(imgDetails, uploadTypes?.data)){ // FUNCTION TO CHECK IF FILE TYPE IS VALID
|
||||
|
||||
@@ -8,7 +8,6 @@ import { tableReload } from "../../store/TableReloads";
|
||||
import InputCom from "../Helpers/Inputs/InputCom";
|
||||
import ModalCom from "../Helpers/ModalCom";
|
||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||
import { apiConst } from "../../lib/apiConst";
|
||||
|
||||
const validationSchema = Yup.object().shape({
|
||||
country: Yup.string()
|
||||
@@ -163,7 +162,7 @@ const EditJobPopOut = ({
|
||||
file_type: uploadedFile?.type?.split("/")[0]?.toLowerCase(),
|
||||
file_data: base64Img,
|
||||
msg_type: "FILE",
|
||||
action: apiConst.WRENCHBOARD_PICTURE_JOB,
|
||||
action: 11303,
|
||||
};
|
||||
setUploadStatus({
|
||||
loading: true,
|
||||
|
||||
@@ -48,7 +48,13 @@ const [requestStatus, setRequestStatus] = useState({message:'', status:false})
|
||||
const memberList = useCallback(async () => {
|
||||
setLoader({ member: true, jobFields: false });
|
||||
try {
|
||||
let res = await apiCall.familyListings();
|
||||
let reqData = {
|
||||
limit: 20,
|
||||
offset: 0,
|
||||
action: 22010,
|
||||
};
|
||||
|
||||
let res = await apiCall.familyListings(reqData);
|
||||
const { data } = res;
|
||||
if (data?.internal_return >= 0 && data?.status == "OK") {
|
||||
let { result_list } = data;
|
||||
@@ -124,6 +130,7 @@ const [requestStatus, setRequestStatus] = useState({message:'', status:false})
|
||||
reqData = {
|
||||
...jobReq,
|
||||
family_uid: values?.family,
|
||||
action: 13025,
|
||||
assign_mode: 110011,
|
||||
};
|
||||
setLoader({ jobFields: { family: true } });
|
||||
@@ -132,6 +139,7 @@ const [requestStatus, setRequestStatus] = useState({message:'', status:false})
|
||||
reqData = {
|
||||
...jobReq,
|
||||
duration: Number(values?.public),
|
||||
action: 13025,
|
||||
assign_mode: 110022,
|
||||
};
|
||||
setLoader({ jobFields: { public: true } });
|
||||
@@ -140,6 +148,7 @@ const [requestStatus, setRequestStatus] = useState({message:'', status:false})
|
||||
reqData = {
|
||||
...jobReq,
|
||||
email: values?.individual,
|
||||
action: 13025,
|
||||
assign_mode: 110033,
|
||||
};
|
||||
setLoader({ jobFields: { individual: true } });
|
||||
@@ -149,6 +158,7 @@ const [requestStatus, setRequestStatus] = useState({message:'', status:false})
|
||||
...jobReq,
|
||||
email: '',
|
||||
group_id: values?.group,
|
||||
action: 13025,
|
||||
assign_mode: 110044,
|
||||
duration: details?.timeline_days,
|
||||
// duration: 0,
|
||||
|
||||
+2
-2
@@ -122,8 +122,8 @@ export const apiConst = {
|
||||
|
||||
WRENCHBOARD_ACCOUNT_PRICE_COMBO: 11171,
|
||||
WRENCHBOARD_ACCOUNT_JOBPOST_DURATION: 11173,
|
||||
WRENCHBOARD_ACCOUNT_USER_RECIPIENT: 11175,
|
||||
WRENCHBOARD_ACCOUNT_ADD_RECIPIENT: 11176,
|
||||
WRENCHBOARD_ACCOUNT_USER_RECIPEINT: 11175,
|
||||
WRENCHBOARD_ACCOUNT_ADD_RECIPEINT: 11176,
|
||||
WRENCHBOARD_ACCOUNT_ACCOUNT_TYPES: 11177,
|
||||
WRENCHBOARD_ACCOUNT_COUNTRY_COMBO: 11179,
|
||||
WRENCHBOARD_ACCOUNT_JOB_COUNTRY: 11181,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import Axios from "axios";
|
||||
import { apiConst } from "../lib/apiConst";
|
||||
|
||||
class SiteService {
|
||||
constructor() {
|
||||
@@ -33,7 +32,7 @@ class SiteService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_FAMILY_ADD,
|
||||
action: 22015,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/familyadd", postData);
|
||||
|
||||
+97
-122
@@ -1,5 +1,4 @@
|
||||
import Axios from "axios";
|
||||
import { apiConst } from "../lib/apiConst";
|
||||
|
||||
class usersService {
|
||||
constructor() {
|
||||
@@ -11,7 +10,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
...reqData,
|
||||
...reqData
|
||||
};
|
||||
return this.postAuxEnd("/mypageintro", postData);
|
||||
}
|
||||
@@ -21,7 +20,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_MYPAGE,
|
||||
action: 11070
|
||||
};
|
||||
return this.postAuxEnd("/mypageload", postData);
|
||||
}
|
||||
@@ -35,15 +34,8 @@ class usersService {
|
||||
localStorage.setItem("session_token", ``);
|
||||
return this.postAuxEnd("/authlogin", reqData);
|
||||
}
|
||||
CompleteSignUp(postData) {
|
||||
CompleteSignUp(reqData) {
|
||||
localStorage.setItem("session_token", ``);
|
||||
|
||||
var reqData = {
|
||||
login_mode: 100,
|
||||
sessionid: "STARTER-NOTREAL",
|
||||
action: apiConst.WRENCHBOARD_COMPLETE_MOBILEUSER,
|
||||
...postData,
|
||||
};
|
||||
return this.postAuxEnd("/completesignuplink", reqData);
|
||||
}
|
||||
|
||||
@@ -52,7 +44,6 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_SYSTEM,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/assigntask", postData);
|
||||
@@ -74,18 +65,13 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_RECENTS,
|
||||
action: 11202,
|
||||
};
|
||||
return this.postAuxEnd("/recentactivities", postData);
|
||||
}
|
||||
|
||||
logInUser(postData) {
|
||||
logInUser(reqData) {
|
||||
localStorage.setItem("session_token", ``);
|
||||
|
||||
var reqData = {
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_LOGIN,
|
||||
...postData,
|
||||
};
|
||||
return this.postAuxEnd("/userlogin", reqData);
|
||||
}
|
||||
|
||||
@@ -147,7 +133,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_MYFILES_LIST,
|
||||
action: 11309,
|
||||
};
|
||||
return this.postAuxEnd("/myfiles", postData);
|
||||
}
|
||||
@@ -264,7 +250,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_USER_RECIPIENT,
|
||||
action: 11175,
|
||||
};
|
||||
return this.postAuxEnd("/recipients", postData);
|
||||
}
|
||||
@@ -287,7 +273,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
amount,
|
||||
action: apiConst.WRENCHBOARD_SMONEY_PROCFEE,
|
||||
action: 33025,
|
||||
};
|
||||
return this.postAuxEnd("/sendmoneyfee", postData);
|
||||
}
|
||||
@@ -298,7 +284,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_STARTCREDIT,
|
||||
action: 11053,
|
||||
...value,
|
||||
};
|
||||
return this.postAuxEnd("/startcredit", postData);
|
||||
@@ -310,7 +296,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_USESAVEDCC,
|
||||
action: 11056,
|
||||
...value,
|
||||
};
|
||||
return this.postAuxEnd("/payprevcard", postData);
|
||||
@@ -322,7 +308,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_ADNEWCC,
|
||||
action: 11054,
|
||||
...value,
|
||||
};
|
||||
return this.postAuxEnd("/paynewcard", postData);
|
||||
@@ -335,7 +321,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_SAMPLETASKS,
|
||||
action: 22027,
|
||||
};
|
||||
return this.postAuxEnd("/familysampletasks", postData);
|
||||
}
|
||||
@@ -345,7 +331,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_CREATEJOB,
|
||||
action: 13010,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/familysuggesttasks", postData);
|
||||
@@ -357,7 +343,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_FAMILY_MANAGE,
|
||||
action: 22025,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/familymanage", postData);
|
||||
@@ -372,7 +358,7 @@ class usersService {
|
||||
job_mode: "ACTIVE",
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_JOB_ACTIVE,
|
||||
action: 13008,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobmanageractive", postData);
|
||||
@@ -384,7 +370,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_CREATEJOB,
|
||||
action: 13010,
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
};
|
||||
@@ -485,7 +471,7 @@ class usersService {
|
||||
uuid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_FAMILY_LIST,
|
||||
action: 22010,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/askresources", postData);
|
||||
@@ -523,7 +509,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_COUPON_MEMLIST,
|
||||
action: 85025,
|
||||
};
|
||||
return this.postAuxEnd("/couponhx", postData);
|
||||
}
|
||||
@@ -535,7 +521,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_MOBILE_PURCHASEHX,
|
||||
action: 15049,
|
||||
};
|
||||
return this.postAuxEnd("/purchasehx", postData);
|
||||
}
|
||||
@@ -548,7 +534,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
offset: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_TRANSFERHX,
|
||||
action: 22011,
|
||||
};
|
||||
return this.postAuxEnd("/familyrewardhx", postData);
|
||||
}
|
||||
@@ -561,7 +547,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 1,
|
||||
limit: 20,
|
||||
action: apiConst.WRENCHBOARD_MOBILE_PAYMENTHX,
|
||||
action: 15046,
|
||||
};
|
||||
return this.postAuxEnd("/paymenthx", postData);
|
||||
}
|
||||
@@ -572,7 +558,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_SMONEY_MEMBER,
|
||||
action: 33020,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/sendmoney", postData);
|
||||
@@ -586,7 +572,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
offset: 1,
|
||||
limit: 100,
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_REFFERHX,
|
||||
action: 11064,
|
||||
};
|
||||
return this.postAuxEnd("/refferhx", postData);
|
||||
}
|
||||
@@ -597,7 +583,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_MOBILE_UPDATEPROFILE,
|
||||
action: 5031,
|
||||
...post,
|
||||
};
|
||||
return this.postAuxEnd("/updateprofile", postData);
|
||||
@@ -642,7 +628,6 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
page: 0,
|
||||
limit: 100,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_UPDATE,
|
||||
...reqdata,
|
||||
};
|
||||
return this.postAuxEnd("/familyupdate", postData);
|
||||
@@ -678,10 +663,10 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: Number(localStorage.getItem("member_id")),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_TOPUP_RESULT,
|
||||
action: 11061,
|
||||
...post,
|
||||
};
|
||||
// console.log("topupresult", postData);
|
||||
console.log("topupresult", postData);
|
||||
return this.postAuxEnd("/topupresult", postData);
|
||||
}
|
||||
|
||||
@@ -691,26 +676,17 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_SENDREFER,
|
||||
action: 11032,
|
||||
...postData,
|
||||
};
|
||||
return this.postAuxEnd("/sendreferral", reqData);
|
||||
}
|
||||
|
||||
StartResetPassword(postData) {
|
||||
var reqData = {
|
||||
action: apiConst.WRENCHBOARD_RESET_PASSWORD,
|
||||
...postData,
|
||||
};
|
||||
StartResetPassword(reqData) {
|
||||
return this.postAuxEnd("/startresetpasword", reqData);
|
||||
}
|
||||
|
||||
CompleteResetPassword(postData) {
|
||||
var reqData = {
|
||||
sessionid: "DUMMY-CANNOT_BE_EMPTY",
|
||||
action: apiConst.WRENCHBOARD_COMPLETE_PASSWORDRESET,
|
||||
...postData,
|
||||
};
|
||||
CompleteResetPassword(reqData) {
|
||||
return this.postAuxEnd("/stepresetpass", reqData);
|
||||
}
|
||||
|
||||
@@ -719,7 +695,7 @@ class usersService {
|
||||
uuid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_COUPON_REDEEM,
|
||||
action: 85020,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/couponredeem", postData);
|
||||
@@ -736,7 +712,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_COUNTRY_BANKS,
|
||||
action: 11183,
|
||||
...value,
|
||||
};
|
||||
return this.postAuxEnd("/countrybanks", postData);
|
||||
@@ -748,7 +724,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_ACCOUNT_TYPES,
|
||||
action: 11177,
|
||||
};
|
||||
return this.postAuxEnd("/accounttypes", postData);
|
||||
}
|
||||
@@ -760,7 +736,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
msg_type: "JOB",
|
||||
action: apiConst.WRENCHBOARD_JOB_SEND_INTEREST,
|
||||
action: 13033,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/marketinterest", postData);
|
||||
@@ -772,7 +748,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
msg_type: "JOB",
|
||||
action: apiConst.WRENCHBOARD_JOB_SEND_QUESTION,
|
||||
action: 13036,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/marketmessage", postData);
|
||||
@@ -784,7 +760,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_POSTAGREE,
|
||||
action: 13002,
|
||||
};
|
||||
return this.postAuxEnd("/jobmanageragree", postData);
|
||||
}
|
||||
@@ -795,7 +771,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_CREATEJOB,
|
||||
action: 13010,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobmanagercreatejob", postData);
|
||||
@@ -806,7 +782,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_CREATEJOB,
|
||||
action: 13010,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobmanagerupdatejob", postData);
|
||||
@@ -818,7 +794,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
extend_days: 7,
|
||||
action: apiConst.WRENCHBOARD_JOB_EXTEND_EXPIRE,
|
||||
action: 13041,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/pendingjobextend", postData);
|
||||
@@ -830,7 +806,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
mode: 200,
|
||||
action: apiConst.WRENCHBOARD_JOB_RESEND_MESSAGE,
|
||||
action: 13042,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/pendingjobsendtome", postData);
|
||||
@@ -841,7 +817,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_CANCEL_OFFER,
|
||||
action: 13043,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/pendingjobcancel", postData);
|
||||
@@ -854,7 +830,7 @@ class usersService {
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 30,
|
||||
action: apiConst.WRENCHBOARD_CONTRACT_MSGLIST,
|
||||
action: 14011,
|
||||
offset: 0,
|
||||
...reqData,
|
||||
};
|
||||
@@ -867,7 +843,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_CONTRACT_MESSAGE,
|
||||
action: 14010,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/sendtaskmessage", postData);
|
||||
@@ -879,10 +855,10 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_CONTRACT_MESSAGE,
|
||||
action: 14010,
|
||||
...reqData,
|
||||
};
|
||||
|
||||
|
||||
const formData = new FormData();
|
||||
for (let data in postData) {
|
||||
formData.append(data, postData[data]);
|
||||
@@ -897,7 +873,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_DELETEJOB,
|
||||
action: 13011,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobmanagerdeletejob", postData);
|
||||
@@ -906,7 +882,7 @@ class usersService {
|
||||
verifyEmail(code) {
|
||||
const reqData = {
|
||||
verify_link: code,
|
||||
action: apiConst.WRENCHBOARD_VERIFY_PENDING_LINK,
|
||||
action: 11015,
|
||||
};
|
||||
return this.postAuxEnd("/verifysignuplink", reqData);
|
||||
}
|
||||
@@ -917,7 +893,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_MOBILE_OFFERSRESP,
|
||||
action: 15012,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/offersresponse", postData);
|
||||
@@ -929,7 +905,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_INTLIST,
|
||||
action: 13024,
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
};
|
||||
@@ -942,7 +918,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_INTLIST,
|
||||
action: 13034,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/offersinterestproc", postData);
|
||||
@@ -954,7 +930,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_CONTRACT_STATUS,
|
||||
action: 14015,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/activetaskstatus", postData);
|
||||
@@ -966,7 +942,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_CONTRACT_STATUS,
|
||||
action: 14015,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/activejobstatus", postData);
|
||||
@@ -987,7 +963,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_NOTIFICATIONS,
|
||||
action: 11205,
|
||||
};
|
||||
return this.postAuxEnd("/mynotifications", postData);
|
||||
}
|
||||
@@ -998,7 +974,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_CARDLIST,
|
||||
action: 11055,
|
||||
};
|
||||
return this.postAuxEnd("/paylistcard", postData);
|
||||
}
|
||||
@@ -1009,7 +985,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_MRKTINT_QUEST,
|
||||
action: 13037,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/offerinterestmsg", postData);
|
||||
@@ -1021,7 +997,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_MRKTINT_QUEST,
|
||||
action: 13037,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/offerinterestlistmsg", postData);
|
||||
@@ -1043,9 +1019,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 20,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_FAMILY_LIST,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/familylist", postData);
|
||||
}
|
||||
@@ -1056,7 +1030,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_SYSTEM,
|
||||
action: 13025,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/assigntask", postData);
|
||||
@@ -1070,7 +1044,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_JOB_OFFER_SYSTEM,
|
||||
action: 13010,
|
||||
};
|
||||
return this.postAuxEnd("/familysuggestlist", postData);
|
||||
}
|
||||
@@ -1081,7 +1055,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_PROFILE_RESETPASS,
|
||||
action: 11005,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/profilepasschange", postData);
|
||||
@@ -1093,7 +1067,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_GETUSER_SETTINGS,
|
||||
action: 11059,
|
||||
};
|
||||
return this.postAuxEnd("/getaccsettings", postData);
|
||||
}
|
||||
@@ -1104,7 +1078,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_SETTINGS,
|
||||
action: 11058,
|
||||
...reqdata,
|
||||
};
|
||||
return this.postAuxEnd("/setaccsettings", postData);
|
||||
@@ -1116,7 +1090,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_USER_CARDREMV,
|
||||
action: 11057,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/payremcard", postData);
|
||||
@@ -1129,7 +1103,7 @@ class usersService {
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
limit: 30,
|
||||
offset: 0,
|
||||
action: apiConst.WRENCHBOARD_ACCOUNT_RECENTS,
|
||||
action: 11202,
|
||||
};
|
||||
return this.postAuxEnd("/recentactivities", postData);
|
||||
}
|
||||
@@ -1151,7 +1125,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_FAMILY_SGGESTSTATUS,
|
||||
action: 22026,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/suggeststatus", postData);
|
||||
@@ -1163,7 +1137,7 @@ class usersService {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_FAMILY_WALLET,
|
||||
action: 22012,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/familywallet", postData);
|
||||
@@ -1191,39 +1165,40 @@ class usersService {
|
||||
return this.postAuxEnd("/familytransfer", postData);
|
||||
}
|
||||
|
||||
// FUNCTION GET JOB GROUP LIST
|
||||
jobGroupList(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: apiConst.WRENCHBOARD_JOB_JOBGROUPS,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobgrouplist", postData);
|
||||
}
|
||||
|
||||
// FUNCTION TO ADD JOB GROUP
|
||||
jobGroupAdd(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobgroupadd", postData);
|
||||
}
|
||||
// FUNCTION GET JOB GROUP LIST
|
||||
jobGroupList(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
action: 13045,
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobgrouplist", postData);
|
||||
}
|
||||
|
||||
// FUNCTION TO ADD JOB GROUP MEMBER
|
||||
groupMemberAdd(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/groupmemberadd", postData);
|
||||
}
|
||||
// FUNCTION TO ADD JOB GROUP
|
||||
jobGroupAdd(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/jobgroupadd", postData);
|
||||
}
|
||||
|
||||
// FUNCTION TO ADD JOB GROUP MEMBER
|
||||
groupMemberAdd(reqData) {
|
||||
var postData = {
|
||||
uid: localStorage.getItem("uid"),
|
||||
member_id: localStorage.getItem("member_id"),
|
||||
sessionid: localStorage.getItem("session_token"),
|
||||
...reqData,
|
||||
};
|
||||
return this.postAuxEnd("/groupmemberadd", postData);
|
||||
}
|
||||
|
||||
/*
|
||||
- 20:27:30.118 FLOG_MAX [757411]: REQ_STRING(username)
|
||||
|
||||
Reference in New Issue
Block a user