guild_front/src/pages/PartnerRequests/PartnerRequests.jsx

132 lines
5.1 KiB
React
Raw Normal View History

2023-04-26 21:29:50 +03:00
import React, { useEffect, useState } from "react";
import { Link, Navigate } from "react-router-dom";
import { useDispatch } from "react-redux";
import {
setPartnerRequestId,
setPartnerRequests,
2023-05-30 10:54:47 +03:00
} from "@redux/outstaffingSlice";
import { apiRequest } from "@api/request";
2023-05-30 10:54:47 +03:00
import { Navigation } from "@components/Navigation/Navigation";
import { ProfileHeader } from "@components/ProfileHeader/ProfileHeader";
import { ProfileBreadcrumbs } from "@components/ProfileBreadcrumbs/ProfileBreadcrumbs";
import { SliderWorkers } from "@components/SliderWorkers/SliderWorkers";
import { Loader } from "@components/Common/Loader/Loader";
import { Footer } from "@components/Common/Footer/Footer";
import BaseButton from "@components/Common/BaseButton/BaseButton";
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";
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>
);
})}
</div>
2023-04-26 21:29:50 +03:00
<div className="partnerRequests__section__info">
<h3>Инструкция: подачи заявки</h3>
<p>
Оператор компании заводит заявку и указывает необходимые
параметры количество сотрудников, стек, уровень специалиста
</p>
<BaseButton>
2023-05-26 19:59:42 +03:00
<Link to={"/profile/add-request"}>
<span>+</span>
Создать запрос
</Link>
</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>
<BaseButton>
2023-05-26 19:59:42 +03:00
<Link to={"/profile/add-request"}>
<span>+</span>
Создать запрос
</Link>
</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>
);
};