134 lines
5.1 KiB
JavaScript
134 lines
5.1 KiB
JavaScript
import React, { useEffect, useState } from "react";
|
||
import { useDispatch } from "react-redux";
|
||
import { Link, Navigate } from "react-router-dom";
|
||
|
||
import {
|
||
setPartnerRequestId,
|
||
setPartnerRequests,
|
||
} from "@redux/outstaffingSlice";
|
||
|
||
import { apiRequest } from "@api/request";
|
||
|
||
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
||
import { Footer } from "@components/Common/Footer/Footer";
|
||
import { Loader } from "@components/Common/Loader/Loader";
|
||
import { Navigation } from "@components/Navigation/Navigation";
|
||
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
||
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
||
import { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
|
||
|
||
import cursorImg from "assets/icons/cursorImg.svg";
|
||
|
||
import "./partnerRequests.scss";
|
||
|
||
export const PartnerRequests = () => {
|
||
if (localStorage.getItem("role_status") !== "18") {
|
||
return <Navigate to="/profile" replace />;
|
||
}
|
||
|
||
const dispatch = useDispatch();
|
||
const [requests, setRequests] = useState([]);
|
||
const [loader, setLoader] = useState(true);
|
||
|
||
useEffect(() => {
|
||
apiRequest(
|
||
`/request/get-request-list?user_id=${localStorage.getItem(
|
||
"id"
|
||
)}&search_depth=3`
|
||
).then((el) => {
|
||
setRequests(el);
|
||
setLoader(false);
|
||
});
|
||
}, []);
|
||
return (
|
||
<div className="partnerRequests">
|
||
<ProfileHeader />
|
||
<Navigation />
|
||
<div className="container">
|
||
<ProfileBreadcrumbs
|
||
links={[
|
||
{ name: "Главная", link: "/profile" },
|
||
{ name: "Запросы и открытые позиции", link: "/profile/requests" },
|
||
]}
|
||
/>
|
||
<h2 className="partnerRequests__title">Запросы</h2>
|
||
{loader && <Loader />}
|
||
{Boolean(requests.length) && !loader && (
|
||
<div className="partnerRequests__section">
|
||
<div className="partnerRequests__section__items">
|
||
{requests.map((item, index) => {
|
||
return (
|
||
<Link
|
||
key={index}
|
||
to={"/profile/bid"}
|
||
className="partnerRequests__section__item"
|
||
onClick={() => {
|
||
dispatch(setPartnerRequestId(item.id));
|
||
dispatch(setPartnerRequests(requests));
|
||
}}
|
||
>
|
||
<p className="partnerRequests__section__item__name">
|
||
{item.position.name}
|
||
</p>
|
||
<p className="partnerRequests__section__item__count">
|
||
Подходящие кандидаты
|
||
<span>{item.result_count}</span>
|
||
</p>
|
||
</Link>
|
||
);
|
||
})}
|
||
</div>
|
||
<div className="partnerRequests__section__info">
|
||
<h3>Инструкция: подачи заявки</h3>
|
||
<p>
|
||
Оператор компании заводит заявку и указывает необходимые
|
||
параметры — количество сотрудников, стек, уровень специалиста
|
||
</p>
|
||
<BaseButton>
|
||
<Link to={"/profile/add-request"}>
|
||
<span>+</span>
|
||
Создать запрос
|
||
</Link>
|
||
</BaseButton>
|
||
</div>
|
||
</div>
|
||
)}
|
||
{!Boolean(requests.length) && !loader && (
|
||
<div className="partnerRequests__noItems">
|
||
<div className="partnerRequests__noItems__create">
|
||
<div className="partnerRequests__noItems__create__link">
|
||
<img src={cursorImg} alt="cursor" />
|
||
<p>У вас ещё нет запросов на сотрудников</p>
|
||
<BaseButton>
|
||
<Link to={"/profile/add-request"}>
|
||
<span>+</span>
|
||
Создать запрос
|
||
</Link>
|
||
</BaseButton>
|
||
</div>
|
||
<div className="partnerRequests__noItems__create__instruction">
|
||
<h3>Инструкция: подачи заявки</h3>
|
||
<p>
|
||
Оператор компании заводит заявку и указывает необходимые
|
||
параметры — количество сотрудников, стек, уровень специалиста
|
||
</p>
|
||
</div>
|
||
</div>
|
||
<div className="partnerRequests__noItems__freeEmployees">
|
||
<SliderWorkers
|
||
title={"Свободные разработчики"}
|
||
titleInfo={"в нашей базе"}
|
||
/>
|
||
<p className="catalogLink">
|
||
Перейти в полный <Link to={"/profile/catalog"}>КАТАЛОГ</Link>{" "}
|
||
сотрудников
|
||
</p>
|
||
</div>
|
||
</div>
|
||
)}
|
||
</div>
|
||
<Footer />
|
||
</div>
|
||
);
|
||
};
|