import React, { useEffect, useState } from "react"; import { useParams, Link, useNavigate, Navigate } from "react-router-dom"; import { useSelector, useDispatch } from "react-redux"; import SkillSection from "../SkillSection/SkillSection"; import Sidebar from "../CandidateSidebar/CandidateSidebar"; import { ProfileHeader } from "../ProfileHeader/ProfileHeader"; import { ProfileBreadcrumbs } from "../ProfileBreadcrumbs/ProfileBreadcrumbs"; import { Footer } from "../Footer/Footer"; import { Navigation } from "../Navigation/Navigation"; import { currentCandidate, selectCurrentCandidate, } from "../../redux/outstaffingSlice"; import { apiRequest } from "../../api/request"; import { createMarkup } from "../../helper"; import gitImgItem from "../../images/gitItemImg.svg"; import rectangle from "../../images/rectangle_secondPage.png"; import front from "../../images/front-end.webp"; import back from "../../images/back-end.webp"; import design from "../../images/design.webp"; import rightArrow from "../../images/arrowRight.svg"; import { LEVELS, SKILLS } from "../../constants/constants"; import "./candidate.scss"; const Candidate = () => { if (localStorage.getItem("role_status") !== "18") { return ; } const { id: candidateId } = useParams(); const navigate = useNavigate(); const dispatch = useDispatch(); const currentCandidateObj = useSelector(selectCurrentCandidate); const [activeSnippet, setActiveSnippet] = useState(true); useEffect(() => { window.scrollTo(0, 0); }, []); useEffect(() => { apiRequest(`/profile/${candidateId}`, { params: Number(candidateId), }).then((el) => dispatch(currentCandidate(el))); }, [dispatch, candidateId]); const { position_id, skillValues, vc_text: text } = currentCandidateObj; const setStyles = () => { const styles = { classes: "", header: "", img: "", }; switch (Number(position_id)) { case 1: { styles.classes = "back"; styles.header = "Backend"; styles.img = back; break; } case 2: { styles.classes = "des"; styles.header = "Frontend"; styles.img = front; break; } case 3: { styles.classes = "front"; styles.header = "Design"; styles.img = design; break; } default: break; } return styles; }; const { header, img, classes } = setStyles(); return (

{currentCandidateObj.specification}  {" "} {SKILLS[currentCandidateObj.position_id]}  {" "} {LEVELS[currentCandidateObj.level]}

navigate("/profile/catalog")} >
Вернуться к списку

{header}

{activeSnippet ? (

# Описание опыта

{text ? (
) : (

{currentCandidateObj.vc_text ? currentCandidateObj.vc_text : "Описание отсутствует..."}

)}
) : (

Страница портфолио кода разработчика

img
cybershop-api

Реактивная социальная сеть

arrow
JavaScript
img
cybershop-api

Реактивная социальная сеть

arrow
JavaScript
img
cybershop-api

Реактивная социальная сеть

arrow
JavaScript
)}
); }; export default Candidate;