55 * about costs and number of matching candidates.
66 */
77import React , { useState , useEffect } from "react" ;
8+ import PT from "prop-types" ;
89import cn from "classnames" ;
10+ import _ from "lodash" ;
11+ import {
12+ formatMoney ,
13+ } from "utils/format" ;
914import { getAuthUserProfile } from "@topcoder/micro-frontends-navbar-app" ;
15+ import config from '../../../../../config' ;
1016import "./styles.module.scss" ;
1117import IconEarthCheck from "../../../../assets/images/icon-earth-check.svg" ;
1218import IconMultipleUsers from "../../../../assets/images/icon-multiple-users.svg" ;
@@ -16,9 +22,15 @@ import Curve from "../../../../assets/images/curve.svg";
1622import CircularProgressBar from "../CircularProgressBar" ;
1723import Button from "components/Button" ;
1824
19- function ResultCard ( ) {
25+ function ResultCard ( {
26+ numberOfMembersAvailable,
27+ numberOfMembers,
28+ timeToCandidate,
29+ timeToInterview,
30+ isExternalMember,
31+ rates
32+ } ) {
2033 const [ userHandle , setUserHandle ] = useState ( "handle" ) ;
21- const [ showSpecialRates , setShowSpecialRates ] = useState ( false ) ;
2234 const [ showRates , setShowRates ] = useState ( false ) ;
2335
2436 useEffect ( ( ) => {
@@ -29,16 +41,11 @@ function ResultCard() {
2941
3042 return (
3143 < div styleName = "result-card" >
32- < div
33- role = "button"
34- tabIndex = "0"
35- onClick = { ( ) => setShowSpecialRates ( ! showSpecialRates ) }
36- styleName = { cn ( "heading" , { [ "non-clickable" ] : ! showRates } ) }
37- >
44+ < div styleName = "heading" >
3845 < IconEarthCheck />
3946 < h3 > We have matching profiles</ h3 >
4047 < p >
41- We have qualified candidates who match 80 % or more of your job
48+ We have qualified candidates who match { config . MATCHING_RATE } % or more of your job
4249 requirements.
4350 </ p >
4451 < Curve styleName = "curve" />
@@ -60,7 +67,7 @@ function ResultCard() {
6067 Rate Details
6168 </ Button >
6269 </ div >
63- { showRates && showSpecialRates && (
70+ { showRates && ! isExternalMember && (
6471 < div styleName = "xeno-rates" >
6572 < p styleName = "greeting-txt" >
6673 Hi { userHandle } , we have special rates for you as a Xeno User!
@@ -72,23 +79,23 @@ function ResultCard() {
7279 < p > (40h / week)</ p >
7380 </ div >
7481 < div styleName = "senior" >
75- < h4 > Senior Member </ h4 >
82+ < h4 > Global Rate </ h4 >
7683 < div styleName = "cost" >
77- < h4 > $2,000 </ h4 >
84+ < h4 > { formatMoney ( rates [ 0 ] . global ) } </ h4 >
7885 < p > /Week</ p >
7986 </ div >
8087 </ div >
8188 < div styleName = "standard" >
82- < h4 > Standard Member </ h4 >
89+ < h4 > In-Conutry Rate </ h4 >
8390 < div styleName = "cost" >
84- < h4 > $1,500 </ h4 >
91+ < h4 > { formatMoney ( rates [ 0 ] . inCountry ) } </ h4 >
8592 < p > /Week</ p >
8693 </ div >
8794 </ div >
8895 < div styleName = "junior" >
89- < h4 > Junior Member </ h4 >
96+ < h4 > Offshore Rate </ h4 >
9097 < div styleName = "cost" >
91- < h4 > $1,000 </ h4 >
98+ < h4 > { formatMoney ( rates [ 0 ] . offShore ) } </ h4 >
9299 < p > /Week</ p >
93100 </ div >
94101 </ div >
@@ -99,23 +106,23 @@ function ResultCard() {
99106 < p > (30h / week)</ p >
100107 </ div >
101108 < div styleName = "senior" >
102- < h4 > Senior Member </ h4 >
109+ < h4 > Global Rate </ h4 >
103110 < div styleName = "cost" >
104- < h4 > $1,800 </ h4 >
111+ < h4 > { formatMoney ( rates [ 0 ] . rate30Global ) } </ h4 >
105112 < p > /Week</ p >
106113 </ div >
107114 </ div >
108115 < div styleName = "standard" >
109- < h4 > Standard Member </ h4 >
116+ < h4 > In-Conutry Rate </ h4 >
110117 < div styleName = "cost" >
111- < h4 > $1,300 </ h4 >
118+ < h4 > { formatMoney ( rates [ 0 ] . rate30InCountry ) } </ h4 >
112119 < p > /Week</ p >
113120 </ div >
114121 </ div >
115122 < div styleName = "junior" >
116- < h4 > Junior Member </ h4 >
123+ < h4 > Offshore Rate </ h4 >
117124 < div styleName = "cost" >
118- < h4 > $800 </ h4 >
125+ < h4 > { formatMoney ( rates [ 0 ] . rate30OffShore ) } </ h4 >
119126 < p > /Week</ p >
120127 </ div >
121128 </ div >
@@ -126,31 +133,31 @@ function ResultCard() {
126133 < p > (20h / week)</ p >
127134 </ div >
128135 < div styleName = "senior" >
129- < h4 > Senior Member </ h4 >
136+ < h4 > Global Rate </ h4 >
130137 < div styleName = "cost" >
131- < h4 > $1,600 </ h4 >
138+ < h4 > { formatMoney ( rates [ 0 ] . rate20Global ) } </ h4 >
132139 < p > /Week</ p >
133140 </ div >
134141 </ div >
135142 < div styleName = "standard" >
136- < h4 > Standard Member </ h4 >
143+ < h4 > In-Conutry Rate </ h4 >
137144 < div styleName = "cost" >
138- < h4 > $1,100 </ h4 >
145+ < h4 > { formatMoney ( rates [ 0 ] . rate20InCountry ) } </ h4 >
139146 < p > /Week</ p >
140147 </ div >
141148 </ div >
142149 < div styleName = "junior" >
143- < h4 > Junior Member </ h4 >
150+ < h4 > Offshore Rate </ h4 >
144151 < div styleName = "cost" >
145- < h4 > $600 </ h4 >
152+ < h4 > { formatMoney ( rates [ 0 ] . rate20OffShore ) } </ h4 >
146153 < p > /Week</ p >
147154 </ div >
148155 </ div >
149156 </ div >
150157 </ div >
151158 </ div >
152159 ) }
153- { showRates && ! showSpecialRates && (
160+ { showRates && isExternalMember && (
154161 < div styleName = "rate-content" >
155162 < div styleName = "rate-left-side" >
156163 < div styleName = "cost-info" >
@@ -159,7 +166,7 @@ function ResultCard() {
159166 < p > (40h / week)</ p >
160167 </ div >
161168 < div styleName = "weekly-rate" >
162- < h5 > $1,800 </ h5 >
169+ < h5 > { formatMoney ( rates [ 0 ] . global ) } </ h5 >
163170 < p > /Week</ p >
164171 </ div >
165172 </ div >
@@ -169,7 +176,7 @@ function ResultCard() {
169176 < p > (30h / week)</ p >
170177 </ div >
171178 < div styleName = "weekly-rate" >
172- < h5 > $1,250 </ h5 >
179+ < h5 > { formatMoney ( rates [ 0 ] . inCountry ) } </ h5 >
173180 < p > /Week</ p >
174181 </ div >
175182 </ div >
@@ -179,7 +186,7 @@ function ResultCard() {
179186 < p > (20h / week)</ p >
180187 </ div >
181188 < div styleName = "weekly-rate" >
182- < h5 > $800 </ h5 >
189+ < h5 > { formatMoney ( rates [ 0 ] . offShore ) } </ h5 >
183190 < p > /Week</ p >
184191 </ div >
185192 </ div >
@@ -190,14 +197,14 @@ function ResultCard() {
190197 < IconMultipleActionsCheck />
191198 < div >
192199 < p > Qualified candidates within</ p >
193- < h6 > 24h </ h6 >
200+ < h6 > { timeToCandidate } h </ h6 >
194201 </ div >
195202 </ div >
196203 < div styleName = "timeline-info" >
197204 < IconTeamMeetingChat />
198205 < div >
199206 < p > Interviews can start within</ p >
200- < h6 > 48h </ h6 >
207+ < h6 > { timeToInterview } h </ h6 >
201208 </ div >
202209 </ div >
203210 </ div >
@@ -209,11 +216,11 @@ function ResultCard() {
209216 < div >
210217 < CircularProgressBar
211218 size = "160"
212- progress = "80"
219+ progress = { config . MATCHING_RATE }
213220 strokeWidth = "6"
214221 children = {
215222 < div styleName = "progressbar-child" >
216- < h4 > 80 %</ h4 >
223+ < h4 > { config . MATCHING_RATE } %</ h4 >
217224 < p > Matching rate</ p >
218225 </ div >
219226 }
@@ -222,7 +229,7 @@ function ResultCard() {
222229 < div styleName = "vertical-line" />
223230 < div >
224231 < IconMultipleUsers styleName = "users" />
225- < h4 > 300 +</ h4 >
232+ < h4 > { numberOfMembersAvailable } +</ h4 >
226233 < p > Members matched</ p >
227234 </ div >
228235 </ div >
@@ -246,4 +253,12 @@ function ResultCard() {
246253 ) ;
247254}
248255
256+ ResultCard . propTypes = {
257+ numberOfMembersAvailable :PT . number ,
258+ numberOfMembers : PT . string ,
259+ timeToCandidate : PT . number ,
260+ timeToInterview : PT . number ,
261+ isExternalMember : PT . bool ,
262+ rates : PT . array ,
263+ } ;
249264export default ResultCard ;
0 commit comments