2023-04-26 21:29:50 +03:00
|
|
|
|
import React, { useEffect, useState } from "react";
|
|
|
|
|
import { useDispatch } from "react-redux";
|
2023-05-31 08:36:15 +03:00
|
|
|
|
import { Link, Navigate } from "react-router-dom";
|
|
|
|
|
|
2023-04-26 21:29:50 +03:00
|
|
|
|
import {
|
|
|
|
|
setPartnerRequestId,
|
|
|
|
|
setPartnerRequests,
|
2023-05-30 10:54:47 +03:00
|
|
|
|
} from "@redux/outstaffingSlice";
|
2023-05-31 08:36:15 +03:00
|
|
|
|
|
2023-05-30 10:54:47 +03:00
|
|
|
|
import { apiRequest } from "@api/request";
|
2023-02-21 19:05:04 +03:00
|
|
|
|
|
2023-05-31 08:36:15 +03:00
|
|
|
|
import BaseButton from "@components/Common/BaseButton/BaseButton";
|
|
|
|
|
import { Footer } from "@components/Common/Footer/Footer";
|
|
|
|
|
import { Loader } from "@components/Common/Loader/Loader";
|
2023-05-30 10:54:47 +03:00
|
|
|
|
import { Navigation } from "@components/Navigation/Navigation";
|
|
|
|
|
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
|
2023-05-31 08:36:15 +03:00
|
|
|
|
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
|
2023-05-30 10:54:47 +03:00
|
|
|
|
import { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
|
2023-04-18 13:58:36 +03:00
|
|
|
|
|
2023-05-30 10:54:47 +03:00
|
|
|
|
import cursorImg from "assets/icons/cursorImg.svg";
|
2023-03-27 16:03:24 +03:00
|
|
|
|
|
2023-04-26 21:29:50 +03:00
|
|
|
|
import "./partnerRequests.scss";
|
2023-02-21 19:05:04 +03:00
|
|
|
|
|
|
|
|
|
export const PartnerRequests = () => {
|
2023-04-26 21:29:50 +03:00
|
|
|
|
if (localStorage.getItem("role_status") !== "18") {
|
|
|
|
|
return <Navigate to="/profile" replace />;
|
|
|
|
|
}
|
2023-04-18 13:58:36 +03:00
|
|
|
|
|
2023-04-26 21:29:50 +03:00
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
const [requests, setRequests] = useState([]);
|
|
|
|
|
const [loader, setLoader] = useState(true);
|
2023-04-18 13:58:36 +03:00
|
|
|
|
|
2023-04-26 21:29:50 +03:00
|
|
|
|
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>
|
|
|
|
|
);
|
|
|
|
|
})}
|
2023-02-21 19:05:04 +03:00
|
|
|
|
</div>
|
2023-04-26 21:29:50 +03:00
|
|
|
|
<div className="partnerRequests__section__info">
|
|
|
|
|
<h3>Инструкция: подачи заявки</h3>
|
|
|
|
|
<p>
|
|
|
|
|
Оператор компании заводит заявку и указывает необходимые
|
|
|
|
|
параметры — количество сотрудников, стек, уровень специалиста
|
|
|
|
|
</p>
|
2023-05-29 15:01:38 +03:00
|
|
|
|
<BaseButton>
|
2023-05-26 19:59:42 +03:00
|
|
|
|
<Link to={"/profile/add-request"}>
|
|
|
|
|
<span>+</span>
|
|
|
|
|
Создать запрос
|
|
|
|
|
</Link>
|
2023-05-29 15:01:38 +03:00
|
|
|
|
</BaseButton>
|
2023-04-26 21:29:50 +03:00
|
|
|
|
</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>
|
2023-05-29 15:01:38 +03:00
|
|
|
|
<BaseButton>
|
2023-05-26 19:59:42 +03:00
|
|
|
|
<Link to={"/profile/add-request"}>
|
|
|
|
|
<span>+</span>
|
|
|
|
|
Создать запрос
|
|
|
|
|
</Link>
|
2023-05-29 15:01:38 +03:00
|
|
|
|
</BaseButton>
|
2023-04-26 21:29:50 +03:00
|
|
|
|
</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>
|
|
|
|
|
);
|
2023-02-21 19:05:04 +03:00
|
|
|
|
};
|