Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
10513 stevensc 1
import axios from 'axios'
10518 stevensc 2
import React, { useState, useEffect } from 'react'
10513 stevensc 3
import { useForm } from 'react-hook-form'
4
import { useDispatch } from 'react-redux'
10450 stevensc 5
import { useHistory, useParams } from 'react-router-dom'
10513 stevensc 6
import { addNotification } from '../../../redux/notification/notification.actions'
10436 stevensc 7
 
10439 stevensc 8
 
10513 stevensc 9
const FormView = ({ actionLink }) => {
10
 
10516 stevensc 11
	// States
10518 stevensc 12
	const [pointsOptions, setPointsOptions] = useState([
10516 stevensc 13
		{ label: 'Evaluación', value: 0 },
14
		{ label: 'Sugerir otro cargo', value: 0 },
15
		{ label: '25%', value: 1 },
16
		{ label: '50%', value: 2 },
17
		{ label: '75%', value: 3 },
18
		{ label: '100%', value: 4 }
10518 stevensc 19
	])
20
	const [statusOptions, setStatusOptions] = useState([
10516 stevensc 21
		{ label: 'Estatus', value: '' },
22
		{ label: 'Aceptado', value: 'a' },
23
		{ label: 'Rechazado', value: 'r' }
10518 stevensc 24
	])
10516 stevensc 25
 
26
	// Hooks
10522 stevensc 27
	const { setValue, register, watch } = useForm()
10447 stevensc 28
	const history = useHistory()
10513 stevensc 29
	const dispatch = useDispatch()
10450 stevensc 30
	const { action } = useParams()
10439 stevensc 31
 
10450 stevensc 32
	useEffect(() => {
10513 stevensc 33
 
10516 stevensc 34
		// Get current item data
35
		if (action === 'edit') {
36
			axios.get(actionLink)
37
				.then(({ data }) => {
38
					const resData = data.data
10513 stevensc 39
 
10516 stevensc 40
					if (!data.success) {
41
						dispatch(addNotification({
42
							style: 'error',
43
							msg: 'Ha ocurrido un error'
44
						}))
45
					}
10513 stevensc 46
 
10516 stevensc 47
					setValue('comment', resData.interview.comment)
10522 stevensc 48
					setValue('points', resData.interview.points)
49
					setValue('status', resData.interview.status)
10523 stevensc 50
					setValue('vacancy', resData.vacancy.name)
51
					setValue('candidate', `${resData.candidate.first_name} ${resData.candidate.last_name}`)
52
					setValue('vacancy-description', resData.vacancy.description)
10516 stevensc 53
				})
54
		}
55
	}, [action])
56
 
10513 stevensc 57
	const dataExaple = {
58
		'candidate': {
59
			'uuid': 'afc67cd3-60cd-4b14-81d8-6d8a014bbdd6',
60
			'first_name': 'Eleazar',
61
			'last_name': 'Oroño',
62
			'email': 'eorono@gmail.com'
63
		},
64
		'job_description': {
65
			'uuid': '8ff86a9a-651c-4dd0-86c1-b9c0716d09e0',
66
			'name': 'Programador Junior',
67
			'functions': '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tempus urna et pharetra pharetra massa massa ultricies mi. Eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum. Tortor posuere ac ut consequat semper viverra nam. Ultricies leo integer malesuada nunc.</p>',
68
			'objectives': '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Tempus urna et pharetra pharetra massa massa ultricies mi. Eleifend donec pretium vulputate sapien nec sagittis aliquam malesuada bibendum. Tortor posuere ac ut consequat semper viverra nam. Ultricies leo integer malesuada nunc.</p>',
69
			'competencies': [
70
				{
71
					'competency_uuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b',
72
					'competency_name': 'Flexibilidad',
73
					'competency_type_uuid': 'ae45b2e5-73a9-4a0b-ad04-29a07524ccd6',
74
					'competency_type_name': 'Competencias Horizontales',
75
					'behaviors': [
76
						{
77
							'uuid': '4cee9594-051d-4a52-82f0-58d4accc5583',
78
							'description': 'Enfocar sus acciones al logro de los resultados planteados.',
79
							'points': 0,
80
							'comment': '',
81
							'competency_uuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b'
82
						}
83
					]
84
				}
85
			]
86
		},
87
		'interview': {
88
			'id': 'd1cb9f3d-a6d0-43c1-a698-645b0156d99d',
89
			'status': 'a',
90
			'content': [
91
				{
92
					'competencyUuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b',
93
					'behaviorUuid': '4cee9594-051d-4a52-82f0-58d4accc5583',
94
					'comment': '',
95
					'evaluation': '0'
96
				}
97
			],
98
			'type': 'b',
99
			'points': '3',
100
			'comment': null
101
		},
102
		'vacancy': {
103
			'id': '26',
104
			'uuid': '7693a385-cde2-4e35-adef-1adc1ca63eac',
105
			'company_id': '1',
106
			'name': 'Programador PHP',
107
			'job_description_id': '3',
108
			'job_category_id': '11',
109
			'description': '<p>Test</p>',
110
			'location_id': '136',
111
			'industry_id': '12',
112
			'last_date': '0000-00-00',
113
			'status': 'a',
114
			'added_on': '2022-08-10 18:24:56',
115
			'updated_on': '2022-08-17 20:47:29'
116
		}
117
	}
118
 
119
	useEffect(() => {
10450 stevensc 120
		console.log(action)
121
	}, [])
122
 
10447 stevensc 123
	return (
124
		<section className="content">
125
			<div className="container-fluid">
126
				<div className="row">
127
					<div className="col-12">
128
						<div className='card'>
129
							<div className="card-header">
130
								<ul className="nav nav-tabs" id="myTab" role="tablist">
131
									<li className="nav-item" role="presentation">
132
										<button className="nav-link active" id="home-tab" data-toggle="tab" data-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
133
									</li>
134
									<li className="nav-item" role="presentation">
135
										<button className="nav-link" id="profile-tab" data-toggle="tab" data-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
136
									</li>
137
									<li className="nav-item" role="presentation">
138
										<button className="nav-link" id="contact-tab" data-toggle="tab" data-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Contact</button>
139
									</li>
140
								</ul>
141
							</div>
142
							<div className="card-body">
143
								<div className="tab-content" id="myTabContent">
10523 stevensc 144
									<div className="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
145
										<div className="row p-3 justify-content-between">
146
											<div className="form-group">
147
												<label>Vacantes</label>
148
												<select
149
													className='form-control'
150
													name='vacancy'
151
													ref={register}
152
													disabled
153
												>
154
													<option value={watch('vacancy')}>{watch('vacancy')}</option>
155
												</select>
156
											</div>
157
											<div className="form-group">
158
												<label>Candidatos</label>
159
												<select
160
													className='form-control'
161
													name='candidate'
162
													ref={register}
163
													disabled
164
												>
165
													<option value={watch('candidate')}>{watch('candidate')}</option>
166
												</select>
167
											</div>
168
										</div>
169
										<div className="card">
170
											<div className="card-body">
171
												<h5 className="card-title">{watch('vacancy')}</h5>
172
												<p>{watch('vacancy-description')}</p>
173
											</div>
174
										</div>
175
									</div>
10447 stevensc 176
									<div className="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"></div>
177
									<div className="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
178
										<div className="form-group">
10513 stevensc 179
											<label>Comentario</label>
10522 stevensc 180
											<input type="text" name="comment" className="form-control" ref={register} />
10447 stevensc 181
										</div>
10513 stevensc 182
										<div className="form-group">
183
											<label>Evaluación</label>
10520 stevensc 184
											<select
185
												className='form-control'
186
												name='points'
10522 stevensc 187
												ref={register}
10520 stevensc 188
											>
10513 stevensc 189
												{
10519 stevensc 190
													pointsOptions.map(({ label, value }) => (
10522 stevensc 191
														<option selected={watch('points') === value} key={value} value={value}>{label}</option>
10519 stevensc 192
													))
10513 stevensc 193
												}
194
											</select>
195
										</div>
196
										<div className="form-group">
197
											<label>Estatus</label>
10520 stevensc 198
											<select
199
												className='form-control'
200
												name='status'
10522 stevensc 201
												ref={register}
10520 stevensc 202
											>
10513 stevensc 203
												{
10519 stevensc 204
													statusOptions.map(({ label, value }) => (
10522 stevensc 205
														<option selected={watch('status') === value} key={value} value={value}>{label}</option>
10519 stevensc 206
													))
10513 stevensc 207
												}
208
											</select>
209
										</div>
10447 stevensc 210
									</div>
211
								</div>
212
								<div className="form-group">
10513 stevensc 213
									<button type="submit" className="btn btn-primary btn-form-save-close mr-2">
10439 stevensc 214
                                        Guardar
10447 stevensc 215
									</button>
216
									<button
217
										type="button"
218
										className="btn btn-secondary btn-edit-cancel"
219
										onClick={() => history.goBack()}
220
									>
10439 stevensc 221
                                        Cancelar
10447 stevensc 222
									</button>
223
								</div>
224
							</div>
225
						</div>
226
					</div>
227
				</div>
228
			</div>
10522 stevensc 229
		</section >
10447 stevensc 230
	)
10436 stevensc 231
}
232
export default FormView