188 lines
8.8 KiB
JavaScript
Raw Normal View History

2023-04-18 13:58:36 +03:00
import React, {useEffect, useState} from 'react';
import {Link, Navigate, useNavigate} 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";
import { Navigation } from '../../components/Navigation/Navigation';
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 {urlForLocal} from '../../helper'
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";
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'
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);
const navigate= useNavigate();
2023-04-18 13:58:36 +03:00
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 deleteRequest = () => {
apiRequest('/request/update-request', {
method: 'PUT',
data: {
user_id: localStorage.getItem('id'),
request_id: requestId,
status: 0,
// title: 'bro',
// position_id: 1,
// knowledge_level_id: 2,
// specialist_count: 2,
// descr: 'broooooo',
// skill_ids: [1, 2, 3]
}
}).then((res) => {
navigate('/profile/requests');
})
};
2023-04-18 13:58:36 +03:00
const [requestInfo, setRequestInfo] = useState({})
const [loader, setLoader] = useState(false)
const [levels] = useState({
1: "Junior",
2: "Middle",
3: "Middle+",
4: "Senior",
})
2023-02-23 14:57:26 +03:00
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' onClick={() => deleteRequest()}/>
2023-04-18 13:58:36 +03:00
</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 &&
<>
2023-04-18 13:58:36 +03:00
<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>
<div className='partnerBid__suitable'>
<div className='partnerBid__suitable__title'>
<p>Подходящие сотрудники по запросу</p>
</div>
<div className='partnerBid__suitable__persons'>
{requestInfo.result_profiles.length && requestInfo.result_profiles.map((person, index) => {
return <div key={index} className='partnerBid__suitable__person'>
<img src={urlForLocal(person.photo)} alt='avatar' />
<p>{person.fio} - {person.position_title}, {levels[person.level]}</p>
<Link className='partnerBid__suitable__person__more' to={`/candidate/${person.id}`}>
Подробнее
</Link>
2023-02-23 14:57:26 +03:00
</div>
})
}
</div>
2023-02-23 14:57:26 +03:00
</div>
</>
}
2023-02-23 14:57:26 +03:00
</div>
<Footer/>
</div>
)
};