179 lines
8.5 KiB
JavaScript
Raw Normal View History

2023-04-18 13:58:36 +03:00
import React, {useEffect, useState} from 'react';
2023-02-27 16:50:32 +03:00
import {Link, Navigate} from "react-router-dom";
2023-04-18 13:58:36 +03:00
import {useSelector, useDispatch} from 'react-redux'
import {getPartnerRequestId, getPartnerRequests, setPartnerRequestId} from '../../redux/outstaffingSlice'
2023-02-23 14:57:26 +03:00
import {ProfileHeader} from "../../components/ProfileHeader/ProfileHeader";
2023-02-27 16:50:32 +03:00
import {ProfileBreadcrumbs} from "../../components/ProfileBreadcrumbs/ProfileBreadcrumbs"
2023-02-23 14:57:26 +03:00
import {Footer} from "../../components/Footer/Footer";
2023-04-18 13:58:36 +03:00
import {Loader} from "../../components/Loader/Loader"
import {apiRequest} from "../../api/request";
import {getCorrectDate} from "../../components/Calendar/calendarHelper";
2023-02-23 14:57:26 +03:00
import arrowSwitchDate from "../../images/arrowViewReport.png";
import backEndImg from "../../images/QualificationInfo.png";
import middle from "../../images/QualificationInfoMiddle.png";
import personImg from "../../images/mokPerson.png"
2023-03-16 15:10:53 +03:00
import deleteBtn from "../../images/deleteBtn.png"
2023-02-23 14:57:26 +03:00
import './partnerBid.scss'
2023-04-19 20:22:06 +03:00
import { Navigation } from '../../components/Navigation/Navigation';
2023-02-23 14:57:26 +03:00
export const PartnerBid = () => {
2023-02-27 16:50:32 +03:00
if(localStorage.getItem('role_status') !== '18') {
return <Navigate to="/profile" replace/>
}
2023-04-18 13:58:36 +03:00
const dispatch = useDispatch();
const requestId = useSelector(getPartnerRequestId);
const partnerRequests = useSelector(getPartnerRequests);
if (!requestId) {
return <Navigate to="/profile/requests" replace/>
}
useEffect(() => {
setLoader(true)
apiRequest(`/request/get-request?request_id=${requestId}`).then((el) => {
setRequestInfo(el)
setLoader(false)
})
}, [requestId]);
const [requestInfo, setRequestInfo] = useState({})
const [loader, setLoader] = useState(false)
2023-02-23 14:57:26 +03:00
const [mokPersons] = useState([
{
name: 'Дмитрий, PHP Back end - разработчик, Middle',
2023-04-18 13:58:36 +03:00
link: '/candidate/110',
2023-02-23 14:57:26 +03:00
img: personImg
},
{
name: 'Дмитрий, PHP Back end - разработчик, Middle',
2023-04-18 13:58:36 +03:00
link: '/candidate/111',
2023-02-23 14:57:26 +03:00
img: personImg
},
{
name: 'Дмитрий, PHP Back end - разработчик, Middle',
2023-04-18 13:58:36 +03:00
link: '/candidate/112',
2023-02-23 14:57:26 +03:00
img: personImg
}
])
return (
<div className='partnerBid'>
<ProfileHeader />
2023-04-19 20:22:06 +03:00
<Navigation />
2023-02-23 14:57:26 +03:00
<div className='container'>
2023-02-27 16:50:32 +03:00
<ProfileBreadcrumbs links={[
{name: 'Главная', link: '/profile'},
{name: 'Запросы и открытые позиции', link: '/profile/requests'},
{name: 'Просмотр заявки - PHP разработчик', link: '/profile/bid'}
]}
/>
2023-02-23 14:57:26 +03:00
<h2 className='partnerBid__title'>Страница заявки </h2>
2023-04-18 13:58:36 +03:00
{loader && <Loader />}
{!loader &&
<>
<div className='partnerBid__qualification'>
<h3>{requestInfo.title}</h3>
<div className='partnerBid__qualification__buttons'>
<button>Редактировать</button>
<img src={deleteBtn} alt='delete'/>
</div>
</div>
<div className='partnerBid__switcher'>
<div className={partnerRequests[partnerRequests.findIndex(el => el.id === requestId) - 1]?.id ? 'partnerBid__switcher__prev switchDate' : 'partnerBid__switcher__prev switchDate disable'}
onClick={() => {
dispatch(setPartnerRequestId(partnerRequests[partnerRequests.findIndex(el => el.id === requestId) - 1].id))
}}
>
<img src={arrowSwitchDate} alt='arrow'/>
</div>
<p>Дата заявки : {getCorrectDate(requestInfo.created_at)} </p>
<div className={partnerRequests[partnerRequests.findIndex(el => el.id === requestId) + 1]?.id ? 'partnerBid__switcher__next switchDate' : 'partnerBid__switcher__next switchDate disable'}
onClick={() => {
dispatch(setPartnerRequestId(partnerRequests[partnerRequests.findIndex(el => el.id === requestId) + 1].id))
}}
>
<img src={arrowSwitchDate} alt='arrow'/>
</div>
</div>
</>
}
{Boolean(Object.keys(requestInfo).length) && !loader &&
<div className='table__wrapper'>
<table>
<thead>
<tr>
<th><p>Требования к стеку разработчика</p></th>
<th><p>Квалификация</p></th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>
{requestInfo.position.name}. &nbsp;
{requestInfo.skills.map((skill, index) => {
return <span key={skill.id}>{skill.name}
{requestInfo.skills.length > index + 1 ? ',' : '.'}
&nbsp;
</span>
})}
</p>
</td>
<td>
<div className='qualification__info'>
<div className='img__wrapper'>
<img src={backEndImg} alt='backEndImg' />
</div>
<p>{requestInfo.position.name}</p>
2023-02-23 14:57:26 +03:00
</div>
2023-04-18 13:58:36 +03:00
</td>
</tr>
<tr>
<td>
<p>
{requestInfo.descr}
</p>
</td>
<td>
<div className='qualification__info'>
<div className='img__wrapper'>
<img src={middle} alt='middleImg' />
</div>
<p className='middle'>{requestInfo.level}</p>
2023-02-23 14:57:26 +03:00
</div>
2023-04-18 13:58:36 +03:00
</td>
</tr>
</tbody>
</table>
</div>
}
2023-02-23 14:57:26 +03:00
<div className='partnerBid__suitable'>
<div className='partnerBid__suitable__title'>
<p>Подходящие сотрудники по запросу</p>
</div>
<div className='partnerBid__suitable__persons'>
2023-02-27 16:50:32 +03:00
{mokPersons.map((person, index) => {
2023-04-18 13:58:36 +03:00
return <div key={index} className='partnerBid__suitable__person'>
2023-02-23 14:57:26 +03:00
<img src={person.img} alt='avatar' />
<p>{person.name}</p>
2023-04-18 13:58:36 +03:00
<Link className='partnerBid__suitable__person__more' to={person.link}>
2023-02-23 14:57:26 +03:00
Подробнее
</Link>
<div className='partnerBid__suitable__person__info'>
</div>
2023-04-18 13:58:36 +03:00
</div>
2023-02-23 14:57:26 +03:00
})
}
</div>
</div>
</div>
<Footer/>
</div>
)
};