2023-05-31 08:36:15 +03:00
|
|
|
import React, { useEffect, useState } from "react";
|
|
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
|
|
import { NavLink } from "react-router-dom";
|
|
|
|
|
|
|
|
import { getProfileInfo, setProfileInfo } from "@redux/outstaffingSlice";
|
|
|
|
|
|
|
|
import { urlForLocal } from "@utils/helper";
|
|
|
|
|
|
|
|
import { apiRequest } from "@api/request";
|
|
|
|
|
|
|
|
import avatarMok from "assets/images/avatarMok.png";
|
|
|
|
|
|
|
|
export const Navigation = () => {
|
|
|
|
const dispatch = useDispatch();
|
|
|
|
|
|
|
|
const profileInfo = useSelector(getProfileInfo);
|
|
|
|
const [user] = useState(
|
2023-12-04 18:01:04 +03:00
|
|
|
localStorage.getItem("role_status") === "18" ? "partner" : "developer",
|
2023-05-31 08:36:15 +03:00
|
|
|
);
|
2023-08-31 01:58:35 +03:00
|
|
|
|
2023-05-31 08:36:15 +03:00
|
|
|
const [navInfo] = useState({
|
|
|
|
developer: [
|
|
|
|
{
|
|
|
|
path: "/summary",
|
|
|
|
name: "Резюме",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/calendar",
|
|
|
|
name: "Отчетность",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/tracker",
|
|
|
|
name: "Трекер",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/payouts",
|
|
|
|
name: "Выплаты",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/settings",
|
|
|
|
name: "Настройки",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
partner: [
|
|
|
|
{
|
|
|
|
path: "/catalog",
|
|
|
|
name: "Каталог",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/requests",
|
|
|
|
name: "Запросы",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/categories",
|
|
|
|
name: "Персонал",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/tracker",
|
|
|
|
name: "Трекер",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/treaties",
|
|
|
|
name: "Договора",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
path: "/settings",
|
|
|
|
name: "Настройки",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
});
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (localStorage.getItem("role_status") === "18") {
|
|
|
|
return;
|
|
|
|
}
|
2023-11-05 20:41:40 +03:00
|
|
|
if (Object.keys(profileInfo).length) {
|
|
|
|
return;
|
|
|
|
}
|
2023-10-27 18:32:37 +03:00
|
|
|
apiRequest(`/user/me`).then((profileInfo) =>
|
2023-11-05 20:42:03 +03:00
|
|
|
dispatch(
|
|
|
|
setProfileInfo(
|
2023-12-04 18:01:04 +03:00
|
|
|
profileInfo.userCard ? profileInfo.userCard : profileInfo,
|
|
|
|
),
|
|
|
|
),
|
2023-05-31 08:36:15 +03:00
|
|
|
);
|
|
|
|
}, [dispatch]);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div className="profileHeader__info">
|
|
|
|
<div className="profileHeader__container">
|
|
|
|
<nav className="profileHeader__nav">
|
|
|
|
{navInfo[user].map((link, index) => {
|
|
|
|
return (
|
|
|
|
<NavLink key={index} end to={`/profile${link.path}`}>
|
|
|
|
{link.name}
|
|
|
|
</NavLink>
|
|
|
|
);
|
|
|
|
})}
|
|
|
|
</nav>
|
|
|
|
|
|
|
|
<div className="profileHeader__personalInfo">
|
|
|
|
<h3 className="profileHeader__personalInfoName">
|
2023-11-05 20:41:40 +03:00
|
|
|
{profileInfo?.fio ? profileInfo?.fio : profileInfo?.username}
|
2023-05-31 08:36:15 +03:00
|
|
|
</h3>
|
|
|
|
<NavLink end to={"/profile"}>
|
|
|
|
<img
|
|
|
|
src={
|
2023-11-05 20:41:40 +03:00
|
|
|
profileInfo?.photo ? urlForLocal(profileInfo.photo) : avatarMok
|
2023-05-31 08:36:15 +03:00
|
|
|
}
|
|
|
|
className="profileHeader__personalInfoAvatar"
|
|
|
|
alt="avatar"
|
|
|
|
/>
|
|
|
|
</NavLink>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|