'use client' import { useState } from 'react' import { useParseVacancyFile } from '@/hooks/useVacancy' import { Upload, X, FileText } from 'lucide-react' export default function VacancyUploadForm() { const [selectedFile, setSelectedFile] = useState(null) const [dragActive, setDragActive] = useState(false) const parseVacancyFile = useParseVacancyFile() const handleFileSelect = (file: File) => { // Проверка типа файла const allowedTypes = [ 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/rtf', 'text/plain' ] if (!allowedTypes.includes(file.type)) { alert('Поддерживаются только файлы: PDF, DOC, DOCX, RTF, TXT') return } // Проверка размера файла (10MB) if (file.size > 10 * 1024 * 1024) { alert('Размер файла не должен превышать 10 МБ') return } setSelectedFile(file) } const handleDrag = (e: React.DragEvent) => { e.preventDefault() e.stopPropagation() if (e.type === 'dragenter' || e.type === 'dragover') { setDragActive(true) } else if (e.type === 'dragleave') { setDragActive(false) } } const handleDrop = (e: React.DragEvent) => { e.preventDefault() e.stopPropagation() setDragActive(false) if (e.dataTransfer.files && e.dataTransfer.files[0]) { handleFileSelect(e.dataTransfer.files[0]) } } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!selectedFile) { alert('Пожалуйста, выберите файл') return } try { await parseVacancyFile.mutateAsync({ file: selectedFile, createVacancy: true }) // Очистить форму после успешной отправки setSelectedFile(null) } catch (error) { console.error('Ошибка при загрузке файла:', error) alert('Произошла ошибка при загрузке файла') } } return (

Создать вакансию из файла

{/* File Upload Area */}
{selectedFile ? (

{selectedFile.name}

{(selectedFile.size / 1024 / 1024).toFixed(2)} МБ

) : (

Перетащите файл сюда или{' '}

PDF, DOC, DOCX, RTF, TXT до 10 МБ

)}
{/* Submit Button */}

После загрузки файл будет обработан и вакансия появится в списке

) }