Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 14217 | Rev 14561 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
11139 stevensc 1
import React, { useState } from 'react'
11131 stevensc 2
import Datetime from 'react-datetime'
3
import { useForm } from 'react-hook-form'
14216 stevensc 4
import { useDispatch } from 'react-redux'
5
import { addNotification } from '../../../redux/notification/notification.actions'
11131 stevensc 6
import SearchLocationInput from '../../../shared/SearchLocationInput'
7
import SubmitModal from './SubmitModal'
8
 
9
const jobTypeOptions = [
10
	{ label: 'Tiempo completo', value: 'f' },
11
	{ label: 'Tiempo parcial', value: 'p' },
12
	{ label: 'Contratado', value: 'c' },
13
	{ label: 'Temporal', value: 't' },
14
]
15
 
11139 stevensc 16
const AddModal = ({ closeModal, dataLink, googleApiKey, jobCategoryOptions }) => {
11131 stevensc 17
 
14216 stevensc 18
	const dispatch = useDispatch()
11131 stevensc 19
	const { register, watch } = useForm()
14217 stevensc 20
	const [year, setYear] = useState(Date.now())
11131 stevensc 21
	const [value, setValue] = useState('')
22
	const [data, setData] = useState({})
23
 
24
	return (
25
		<SubmitModal
26
			closeModal={closeModal}
27
			postLink={dataLink}
28
			submitData={{
29
				...data,
30
				title: watch('title'),
31
				employment_type: watch('employment_type'),
32
				last_date_of_application: year,
33
				job_category_id: watch('job_category-id'),
34
				add_location_search: value
35
			}}
36
			title="Nuevo empleo"
37
		>
38
			<div className="form-group">
39
				<label>Título</label>
11143 stevensc 40
				<input className='form-control' type='text' name='title' ref={register({ required: true })} />
11131 stevensc 41
			</div>
42
			<div className="form-group">
43
				<label>Tipo de empleo</label>
44
				<select
45
					className='form-control'
46
					name="employment_type"
47
					ref={register({ required: true })}
48
				>
49
					{
11141 stevensc 50
						jobTypeOptions.map(({ value, label }) => (
11131 stevensc 51
							<option key={value} value={value}>{label}</option>
52
						))
53
					}
54
				</select>
55
			</div>
56
			<div className="form-group">
11909 stevensc 57
				<label>Último día de aplicación</label>
11131 stevensc 58
				<Datetime
59
					dateFormat="DD-MM-YYYY"
60
					timeFormat={false}
14216 stevensc 61
					onChange={(e) => {
62
						if (Date.now() > new Date(e.toDate()).getTime()) {
63
							return dispatch(addNotification({
64
								style: 'danger',
65
								msg: 'La fecha no puede ser igual o anterior a la actual'
66
							}))
67
						}
11131 stevensc 68
						setYear(new Intl.DateTimeFormat({ year: 'numeric', month: 'numeric', day: 'numeric' }).format(e.toDate()))
14216 stevensc 69
					}}
14218 stevensc 70
					initialValue={new Date(new Intl.DateTimeFormat('en-EN', year).format())}
11131 stevensc 71
					inputProps={{ className: 'form-control' }}
72
					closeOnSelect
73
				/>
74
			</div>
75
			<div className="form-group">
76
				<label>Categoría de Empleo</label>
77
				<select
78
					className='form-control'
79
					name="job_category-id"
80
					ref={register({ required: true })}
81
				>
82
					{
11141 stevensc 83
						Object.entries(jobCategoryOptions).map(([value, name]) => (
11131 stevensc 84
							<option key={value} value={value}>{name}</option>
85
						))
86
					}
87
				</select>
88
			</div>
11144 stevensc 89
			<div className="form-group">
90
				<label>Ubicación</label>
91
				<SearchLocationInput
92
					value={value}
93
					setValue={setValue}
94
					googleApiKey={googleApiKey}
95
					updateData={setData}
96
				/>
97
			</div>
11131 stevensc 98
		</SubmitModal >
99
	)
100
}
101
 
102
export default AddModal