register form

master
HOANGLAOTA 1 year ago
parent 569ac7ccad
commit c2ea1e84a0
  1. 4
      src/_base/FunctionBase.js
  2. 75
      src/_components/AdvisementForm/AdvisementForm.jsx
  3. 68
      src/_components/AdvisementForm/AdvisementForm.logic.js
  4. 2
      src/_components/Alert/error.js
  5. 20
      src/_components/FooterNews/FooterNews.jsx
  6. 8
      src/_components/Header/HeaderNews/HeaderNews.jsx
  7. 4
      src/_components/Modal/ModalSuccessMsg/ModalSuccessMsg.jsx
  8. 8
      src/_components/ScrollFixed/ScrollFixed.jsx
  9. 106
      src/_screens/BenefitTeacherPage/BenefitTeacher.jsx
  10. 4
      src/_screens/DownloadPage/DownloadPage.jsx
  11. 6
      src/_services/user.js

@ -3,6 +3,8 @@ import { LinkApp } from "../_constants/linkDownloadApp";
import { history } from "../_helpers"; import { history } from "../_helpers";
export const handleNavigateCurriculumDownload = (type) => { export const handleNavigateCurriculumDownload = (type) => {
const urlParams = new URLSearchParams(window.location.search);
const mds = urlParams.get('mds');
const osMobile = getMobileOperatingSystem(); const osMobile = getMobileOperatingSystem();
if (osMobile == "Android") { if (osMobile == "Android") {
window.open(LinkApp[`${type}`].GG_PLAY, "_blank"); window.open(LinkApp[`${type}`].GG_PLAY, "_blank");
@ -21,6 +23,6 @@ export const handleNavigateCurriculumDownload = (type) => {
// // history.push(`/login`); // // history.push(`/login`);
// } // }
history.push(`/download_page/${type}`); history.push(`/download_page/${type}?mds=${mds}`);
} }
}; };

@ -6,6 +6,8 @@ import InputSelectNews from "../Input/InputSelect";
import { userConstants } from "../../_constants"; import { userConstants } from "../../_constants";
import ModalSuccessMsg from "../Modal/ModalSuccessMsg/ModalSuccessMsg"; import ModalSuccessMsg from "../Modal/ModalSuccessMsg/ModalSuccessMsg";
import LazyLoad from "react-lazyload"; import LazyLoad from "react-lazyload";
import { useSelector } from "react-redux";
import { Alert } from "../Alert";
const AdvisementForm = (props) => { const AdvisementForm = (props) => {
let { let {
@ -37,12 +39,22 @@ const AdvisementForm = (props) => {
setGradeError, setGradeError,
isSuccessRegist, isSuccessRegist,
handleCloseModal, handleCloseModal,
email,
emailError,
changeEmail,
setEmailError,
message,
changeMessage
} = advisementLogic(props); } = advisementLogic(props);
const alert = useSelector((state) => state.alert);
return ( return (
<div className=" advisement_form pos_rel flex-center-column"> <div className=" advisement_form pos_rel flex-center-column">
{/* Img Banner */} {/* Img Banner */}
{alert?.message &&
alert?.screen === 'form_register' && (
<Alert alert={alert} />
)}
<div className="content_advisement_container pos_rel"> <div className="content_advisement_container pos_rel">
<div <div
className="content_advisement flex-align-start-column" className="content_advisement flex-align-start-column"
@ -58,6 +70,7 @@ const AdvisementForm = (props) => {
src="/assets/images/homeNews/content/teacher/title_advisement_teacher.png" src="/assets/images/homeNews/content/teacher/title_advisement_teacher.png"
alt="Titlte Advisement" alt="Titlte Advisement"
className="contain_image title_header_teacher" className="contain_image title_header_teacher"
style={{width: '90%'}}
/> />
) : ( ) : (
<> <>
@ -132,24 +145,40 @@ const AdvisementForm = (props) => {
}} }}
errorAbsolute={true} errorAbsolute={true}
/> />
<InputText
value={email}
setValue={changeEmail}
type="text"
name="email"
placeholder="Email"
required={true}
// renderLabelIcon={() => renderAuthIcon("phone")}
errorText={emailError}
setErrorText={setEmailError}
onBlur={() => {
onBlurField("email");
}}
errorAbsolute={true}
/>
{props.type == userConstants.ROLE_TEACHER ? ( {props.type == userConstants.ROLE_TEACHER ? (
<InputText // <InputText
value={addressTeach} // value={addressTeach}
setValue={changeAddressTeach} // setValue={changeAddressTeach}
type="text" // type="text"
name="address" // name="address"
placeholder="Nơi công tác" // placeholder="Nơi công tác"
required={true} // required={true}
// renderLabelIcon={() => renderAuthIcon("phone")} // // renderLabelIcon={() => renderAuthIcon("phone")}
errorText={addressTeachError} // errorText={addressTeachError}
setErrorText={setAddressTeachError} // setErrorText={setAddressTeachError}
onFocus={() => setAddressTeach(addressTeach?.trim())} // onFocus={() => setAddressTeach(addressTeach?.trim())}
onBlur={() => { // onBlur={() => {
onBlurField("address"); // onBlurField("address");
}} // }}
errorAbsolute={true} // errorAbsolute={true}
/> // />
null
) : ( ) : (
<InputSelectNews <InputSelectNews
value={gradeSelected} value={gradeSelected}
@ -170,7 +199,15 @@ const AdvisementForm = (props) => {
/> />
)} )}
<InputSelectNews <InputText
value={message}
setValue={changeMessage}
type="text"
name="message"
placeholder="Lời nhắn"
/>
{/* <InputSelectNews
value={timeAdvisement} value={timeAdvisement}
setValue={changeTimeAdvisement} setValue={changeTimeAdvisement}
type="text" type="text"
@ -186,7 +223,7 @@ const AdvisementForm = (props) => {
}; };
})} })}
errorAbsolute={true} errorAbsolute={true}
/> /> */}
<div className="flex-center btn_container"> <div className="flex-center btn_container">
<ButtonNews <ButtonNews
width="18rem" width="18rem"

@ -5,8 +5,13 @@ import { validateNumber, validateEmail } from "../../_base/Validate";
import { userConstants } from "../../_constants"; import { userConstants } from "../../_constants";
import { sendMsgContact } from "../../_services/user"; import { sendMsgContact } from "../../_services/user";
import moment from "moment"; import moment from "moment";
import { alertActions } from "../../_actions";
import { useDispatch } from "react-redux";
export const advisementLogic = (props) => { export const advisementLogic = (props) => {
const urlParams = new URLSearchParams(window.location.search);
const mds = urlParams.get('mds');
const dispatch = useDispatch()
// Time Advisement // Time Advisement
const [timeAdvisement, setTimeAdvisement] = useState({}); const [timeAdvisement, setTimeAdvisement] = useState({});
const [timeAdvisementError, setTimeAdvisementError] = useState(); const [timeAdvisementError, setTimeAdvisementError] = useState();
@ -130,6 +135,14 @@ export const advisementLogic = (props) => {
const [errorAdviseTrial, setErrorAdviseTrial] = useState(""); const [errorAdviseTrial, setErrorAdviseTrial] = useState("");
// message
const [message, setMessage] = useState("");
// Handle Change Address Teach for Teacher
const changeMessage = (newValue) => {
setMessage(newValue);
};
// Variable compulsory advise trial // Variable compulsory advise trial
const [compulError, setCompulError] = useState(false); const [compulError, setCompulError] = useState(false);
@ -198,39 +211,36 @@ export const advisementLogic = (props) => {
phone && phone &&
!nameUserError && !nameUserError &&
!phoneWarning && !phoneWarning &&
timeAdvisement?.value && !!email?.trim() &&
!timeAdvisementError !emailError
// timeAdvisement?.value &&
// !timeAdvisementError
) { ) {
if (
(!addressTeach && props.type == userConstants.ROLE_TEACHER) ||
(!gradeSelected?.value && props.type != userConstants.ROLE_TEACHER)
) {
setAddressTeachError("Vui lòng nhập thông tin.");
setGradeError("Vui lòng nhập thông tin.");
} else {
try { try {
let [from_time, end_time] = timeAdvisement?.value.split("-"); // let [from_time, end_time] = timeAdvisement?.value.split("-");
const data = { const data = {
user_name: nameUser, agents_code: mds,
guest_name: nameUser,
phone, phone,
from_time, grade: gradeSelected?.title,
end_time, email,
grade_id: gradeSelected?.value, message
school: addressTeach, // from_time,
source: "advise", // end_time,
role: props.type, // school: addressTeach,
// source: "advise",
// role: props.type,
}; };
const result = await sendMsgContact(data); const result = await sendMsgContact(data);
if (result.status) { if (result.status) {
// setIsSuccess(true);
setIsSuccessRegist(true); setIsSuccessRegist(true);
} else {
dispatch(alertActions.error({ 'message': typeof result?.msg === 'string' ? result?.msg : Object.values(result?.msg)?.join('\n'), 'screen': 'form_register', isShowPopup: true }));
} }
} catch (e) { } catch (e) {
// console.log(e); dispatch(alertActions.error({ 'message': e, 'screen': 'form_register', isShowPopup: true }));
} }
}
} else { } else {
if (!nameUser) { if (!nameUser) {
setNameUserError("Vui lòng nhập thông tin."); setNameUserError("Vui lòng nhập thông tin.");
@ -238,17 +248,8 @@ export const advisementLogic = (props) => {
if (!phone) { if (!phone) {
setPhoneWarning("Vui lòng nhập thông tin."); setPhoneWarning("Vui lòng nhập thông tin.");
} else { } else {
if ( if(!email) {
(!addressTeach && props.type == userConstants.ROLE_TEACHER) || setEmailError("Vui lòng nhập thông tin.")
(!gradeSelected?.value && props.type != userConstants.ROLE_TEACHER)
) {
setAddressTeachError("Vui lòng nhập thông tin.");
setGradeError("Vui lòng nhập thông tin.");
} else if (
(!addressTeachError || !gradeError) &&
!timeAdvisement?.value
) {
setTimeAdvisementError("Vui lòng nhập thông tin.");
} }
} }
} }
@ -454,5 +455,8 @@ export const advisementLogic = (props) => {
setCompulError, setCompulError,
setIsVisibleTime, setIsVisibleTime,
setIsAgreePolicy, setIsAgreePolicy,
message,
setMessage,
changeMessage
}; };
}; };

@ -27,7 +27,7 @@ function AlertError(props) {
return ( return (
<div id="modal-center" className="uk-flex-top uk-modal uk-flex uk-open" uk-modal=""> <div id="modal-center" className="uk-flex-top uk-modal uk-flex uk-open" uk-modal="">
<div className="uk-modal-dialog uk-modal-body uk-margin-auto-vertical"> <div className="uk-modal-dialog uk-modal-body uk-margin-auto-vertical">
<p className="text-center">{props.message}</p> <p className="text-center" style={{whiteSpace: 'pre-line'}}>{props.message}</p>
<div className="form-sunE-button"> <div className="form-sunE-button">
{hasBtnClosePopup && <button className="btn-default mr-20" style={{width: 'unset', padding: '0 24px'}} onClick={handleClosePopup}>{textClose || 'Đóng'}</button>} {hasBtnClosePopup && <button className="btn-default mr-20" style={{width: 'unset', padding: '0 24px'}} onClick={handleClosePopup}>{textClose || 'Đóng'}</button>}
<button className="btn-line-blue" onClick={complete}>{textComplete || 'Đóng'}</button> <button className="btn-line-blue" onClick={complete}>{textComplete || 'Đóng'}</button>

@ -265,11 +265,11 @@ const FooterNews = (props) => {
</HashLink> </HashLink>
</div> </div>
</div> */} </div> */}
<div className="font_news_bold font_news_mobile mg-bottom-0-9 mg-bottom-1-mobile color-light-black fz-1-mobile text_title_contact"> {/* <div className="font_news_bold font_news_mobile mg-bottom-0-9 mg-bottom-1-mobile color-light-black fz-1-mobile text_title_contact">
Liên hệ Liên hệ
</div> </div> */}
<div className="flex-align mg-bottom-1 mg-bottom-0-5-mobile"> <div className="flex-align mg-bottom-1 mg-bottom-0-5-mobile">
<div className="flex-align footer_contact_box"> {/* <div className="flex-align footer_contact_box">
<img <img
src="/assets/images/homeNews/icon/ico_phone.png" src="/assets/images/homeNews/icon/ico_phone.png"
alt="Icon Phone" alt="Icon Phone"
@ -277,9 +277,6 @@ const FooterNews = (props) => {
/> />
<div className="flex-column "> <div className="flex-column ">
{/* <div className="color-light-black fz-09 fz-08-mobile">
Hotline
</div> */}
<a <a
href="tel:02462813888" href="tel:02462813888"
className="fz-15-mobile text_phone_number one-line font_news_semi_bold color-red" className="fz-15-mobile text_phone_number one-line font_news_semi_bold color-red"
@ -287,10 +284,10 @@ const FooterNews = (props) => {
0762 007 298 0762 007 298
</a> </a>
</div> </div>
</div> </div> */}
</div> </div>
<div className="flex-align footer_email_social flex-jus-between mg-bottom-15 col-100"> <div className="flex-align footer_email_social flex-jus-between mg-bottom-15 col-100">
<div className="flex-align mg-bottom-0-7-mobile footer_email_contact footer_contact_box"> {/* <div className="flex-align mg-bottom-0-7-mobile footer_email_contact footer_contact_box">
<img <img
src="/assets/images/homeNews/icon/ico_mail.png" src="/assets/images/homeNews/icon/ico_mail.png"
alt="Icon Mail" alt="Icon Mail"
@ -298,9 +295,6 @@ const FooterNews = (props) => {
/> />
<div className="flex-column one-line"> <div className="flex-column one-line">
{/* <div className="color-light-black fz-09 fz-08-mobile">
Email
</div> */}
<a <a
href="mailto:support@sundayenglish.com" href="mailto:support@sundayenglish.com"
className="text_underline color-light-black one-line font_news_semi_bold fz-08-mobile text_email" className="text_underline color-light-black one-line font_news_semi_bold fz-08-mobile text_email"
@ -308,7 +302,7 @@ const FooterNews = (props) => {
support@sundayenglish.com support@sundayenglish.com
</a> </a>
</div> </div>
</div> </div> */}
<div className="flex-align icon_social_container hide display_flex_mobile"> <div className="flex-align icon_social_container hide display_flex_mobile">
<a href="#"> <a href="#">
<img <img
@ -427,7 +421,7 @@ const FooterNews = (props) => {
fontSize: "0.92rem", fontSize: "0.92rem",
}} }}
> >
Copyright @ 2007-2023 GK Corp. All Rights Reserved {`Copyright @ 2007-${new Date().getFullYear()} GK Corp. All Rights Reserved`}
{/* <div className="version-app">{Mydata.version}</div> */} {/* <div className="version-app">{Mydata.version}</div> */}
</div> </div>
</div> </div>

@ -29,8 +29,8 @@ const HeaderNews = (props) => {
handleNavigateCurriculum, handleNavigateCurriculum,
} = headerNewsLogic(props); } = headerNewsLogic(props);
let { type } = props; let { type } = props;
const authentication = useSelector((state) => state.authentication); const urlParams = new URLSearchParams(window.location.search);
const dataProfile = useSelector((state) => state.profile.user_info.data); const mds = urlParams.get('mds');
const renderFooterItem = (item) => { const renderFooterItem = (item) => {
return ( return (
@ -77,7 +77,7 @@ const HeaderNews = (props) => {
) ? ( ) ? (
<HashLink <HashLink
scroll={(ele) => ele.scrollIntoView({ behavior: "instant" })} scroll={(ele) => ele.scrollIntoView({ behavior: "instant" })}
to={`/${item?.type}`} to={`/${item?.type}?mds=${mds}`}
className="link_header_mobile link_header_item pos_rel" className="link_header_mobile link_header_item pos_rel"
ref={(e) => ref={(e) =>
[TypeHeaderNewsItem.FEE, TypeHeaderNewsItem.TARIFF]?.includes( [TypeHeaderNewsItem.FEE, TypeHeaderNewsItem.TARIFF]?.includes(
@ -273,7 +273,7 @@ const HeaderNews = (props) => {
<HashLink <HashLink
scroll={(ele) => ele.scrollIntoView({ behavior: "instant" })} scroll={(ele) => ele.scrollIntoView({ behavior: "instant" })}
className="flex-center logo_header" className="flex-center logo_header"
to="/" to={`/?mds=${mds}`}
> >
<img <img
alt="Logo" alt="Logo"

@ -38,7 +38,7 @@ const ModalSuccessMsg = (props) => {
cảm ơn!`} cảm ơn!`}
</div> </div>
<div className="color-red fz-1-mobile fz-12-5 text-align-center"> {/* <div className="color-red fz-1-mobile fz-12-5 text-align-center">
Hotline hỗ trợ:{" "} Hotline hỗ trợ:{" "}
<a <a
href="tel: 02462813888" href="tel: 02462813888"
@ -46,7 +46,7 @@ const ModalSuccessMsg = (props) => {
> >
024 6281 3888 024 6281 3888
</a> </a>
</div> </div> */}
</div> </div>
</div> </div>
); );

@ -4,11 +4,13 @@ import { TypeHeaderNewsItem } from "../../_constants/headerNews";
const ScrollFixed = () => { const ScrollFixed = () => {
let { handleScrollTop, handleNavigate } = scrollFixedLogic(); let { handleScrollTop, handleNavigate } = scrollFixedLogic();
const urlParams = new URLSearchParams(window.location.search);
const mds = urlParams.get('mds');
return ( return (
<> <>
<div className="box-right_fixed"> <div className="box-right_fixed">
<div className="enable-mobile" onClick={() => handleNavigate('/'+TypeHeaderNewsItem.HOME)}> <div className="enable-mobile" onClick={() => handleNavigate('/'+TypeHeaderNewsItem.HOME+'?mds='+mds)}>
<img <img
src="/assets/images/homeNews/icon/icon_text_hs.png" src="/assets/images/homeNews/icon/icon_text_hs.png"
alt="Icon phu huynh" alt="Icon phu huynh"
@ -25,14 +27,14 @@ const ScrollFixed = () => {
</div> </div>
<div className="enable-mobile"> <div className="enable-mobile">
<div className="box-left_fixed"> <div className="box-left_fixed">
<div onClick={() => handleNavigate('/'+TypeHeaderNewsItem.PARENT)}> <div onClick={() => handleNavigate('/'+TypeHeaderNewsItem.PARENT+'?mds='+mds)}>
<img <img
src="/assets/images/homeNews/icon/icon_text_ph.png" src="/assets/images/homeNews/icon/icon_text_ph.png"
alt="Icon phu huynh" alt="Icon phu huynh"
className="icon_scale mg-bottom-0-5 icon_scroll_fixed" className="icon_scale mg-bottom-0-5 icon_scroll_fixed"
/> />
</div> </div>
<div onClick={() => handleNavigate('/'+TypeHeaderNewsItem.TEACHER)}> <div onClick={() => handleNavigate('/'+TypeHeaderNewsItem.TEACHER+'?mds='+mds)}>
<img <img
src="/assets/images/homeNews/icon/icon_text_gv.png" src="/assets/images/homeNews/icon/icon_text_gv.png"
alt="Icon giao vien" alt="Icon giao vien"

@ -66,8 +66,110 @@ const BenefitTeacher = (props) => {
<div className="pos_rel homepage bg-white commondPage"> <div className="pos_rel homepage bg-white commondPage">
<HeaderNews type={TypeHeaderNewsItem.TEACHER} /> <HeaderNews type={TypeHeaderNewsItem.TEACHER} />
<div className="slider slider_teacher">
<LazyLoad
className="slider_bg_teacher flex-jus-between display_none_mobile pos_rel"
style={{
background: `url(
/assets/images/homeNews/slider/slider_bg_teacher.png
) no-repeat top center /cover`,
backgroundAttachment: "scroll",
}}
>
<LazyLoad className="slider_3_container">
<div className="title_container_teacher flex-center-column">
<div className="title_detail_1_teacher font_news_bold">
GIẢI PHÁP ƯU VIỆT
</div>
<div className="text-align-center title_detail_2_teacher font_news_bold fz-24">
giúp thầy giảng dạy Tiếng Anh
</div>
<span className="color-primary-green title_detail_3_teacher font_news_bold fz-24">
HIỆU QUẢ
</span>
</div>
<div className="slider_3 ">
<img
src="/assets/images/homeNews/slider/slider_3.png"
alt="Slider 3"
className="slider_3_img contain_image"
/>
</div>
</LazyLoad>
<LazyLoad className="video_slider_container pos_rel">
<img
src="/assets/images/homeNews/slider/circle_bg_phone.png"
alt="Img Bg Circle"
className="bg_circle_img pos_abs contain_image"
/>
<video
autoPlay
muted
controls={false}
playsInline
loop
poster="/assets/images/homeNews/slider/teacher_poster.jpg"
src="/assets/videos/teacher_video.mp4"
// alt="Video Slider Teacher"
className=" video_slider box-shadow"
/>
</LazyLoad>
</LazyLoad>
{/* MOBILE */}
<LazyLoad className="slider_bg_teacher pos_rel flex-jus-between hide display_flex_mobile">
<img
src="/assets/images/homeNews/slider/slider_bg_teacher_mobile.png"
alt="Img Slider Mobile"
className="contain_image pos_abs col-100 img_slider_mobile"
/>
<div className="slider_3_container">
<div className="title_container_teacher flex-center-column">
<div className="title_detail_1_teacher font_news_extra_bold">
GIẢI PHÁP ƯU VIỆT
</div>
<div className="text-align-center title_detail_2_teacher font_news_bold fz-24">
giúp thầy giảng dạy Tiếng Anh
</div>
<span className="color-primary-green title_detail_3_teacher font_news_bold font_news_extra_bold_mobile fz-24">
HIỆU QUẢ
</span>
</div>
<LazyLoad className="slider_3">
<img
src="/assets/images/homeNews/slider/slider_3_mobile.png"
alt="Slider 3"
className="slider_3_img"
/>
</LazyLoad>
</div>
<LazyLoad className="video_slider_container ">
{/* <img
src="/assets/images/homeNews/slider/video_slider_teacher.png"
alt="Video Slider Teacher"
className="contain_image video_slider"
/> */}
<video
autoPlay
muted
controls={false}
playsInline
loop
src="/assets/videos/teacher_video.mp4"
poster="/assets/images/homeNews/slider/teacher_poster.jpg"
// alt="Video Slider Teacher"
className=" video_slider box-shadow"
/>
</LazyLoad>
</LazyLoad>
</div>
<div className="content flex-center-column" style={{backgroundColor: 'rgba(238, 249, 254, 1)'}}> <div className="content flex-center-column" style={{backgroundColor: 'rgba(238, 249, 254, 1)'}}>
<Slogan type="teacher" /> {/* <Slogan type="teacher" /> */}
<div className="pos_rel content_bg_benefit content_bg_benefit_teacher flex-center-column"> <div className="pos_rel content_bg_benefit content_bg_benefit_teacher flex-center-column">
<div className="flex-center-column img_benefits_teacher"> <div className="flex-center-column img_benefits_teacher">
<img <img
@ -224,7 +326,7 @@ const BenefitTeacher = (props) => {
</div> </div>
</div> */} </div> */}
<AdvisementFormTeacher <AdvisementForm
placeholder="Họ và tên thầy cô" placeholder="Họ và tên thầy cô"
type={userConstants.ROLE_TEACHER} type={userConstants.ROLE_TEACHER}
/> />

@ -9,6 +9,8 @@ import { history } from "../../_helpers";
const DownloadPage = () => { const DownloadPage = () => {
const { type } = useParams(); const { type } = useParams();
const urlParams = new URLSearchParams(window.location.search);
const mds = urlParams.get('mds');
let { dataTeacher, dataStudent, dataParent, handleLinkApp } = downloadLogic(); let { dataTeacher, dataStudent, dataParent, handleLinkApp } = downloadLogic();
@ -59,7 +61,7 @@ const DownloadPage = () => {
src="/assets/images/logo_home.png" src="/assets/images/logo_home.png"
alt="Img Logo" alt="Img Logo"
className="contain_image" className="contain_image"
onClick={() => {history.push('/')}} onClick={() => {history.push((type === 'student' ? '/' : `/${type}`) +'?mds='+mds)}}
/> />
</LazyLoad> </LazyLoad>
<div className="title_download"> <div className="title_download">

@ -1,3 +1,4 @@
import { configConstants } from "../_constants";
import { apiCaller, apiRequest } from "../_helpers"; import { apiCaller, apiRequest } from "../_helpers";
export async function logoutAuth(deviceId) { export async function logoutAuth(deviceId) {
@ -42,10 +43,13 @@ export async function deleteAccount() {
// Send Msg // Send Msg
export function sendMsgContact(data) { export function sendMsgContact(data) {
return apiCaller( return apiCaller(
`/web_advertise/api_contact/send_contact`, `/agent/add_customer`,
"POST", "POST",
data, data,
null, null,
true,
configConstants.API_URL_AGENT,
true,
true true
); );
} }

Loading…
Cancel
Save