Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 10519 | Rev 10522 | 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
	])
25
	const [currentStatus, setCurrentStatus] = useState(statusOptions[0])
26
	const [currentPoints, setCurrentPoints] = useState(pointsOptions[0])
10516 stevensc 27
 
28
	// Hooks
10518 stevensc 29
	const { setValue } = useForm()
10447 stevensc 30
	const history = useHistory()
10513 stevensc 31
	const dispatch = useDispatch()
10450 stevensc 32
	const { action } = useParams()
10439 stevensc 33
 
10450 stevensc 34
	useEffect(() => {
10513 stevensc 35
 
10516 stevensc 36
		// Get current item data
37
		if (action === 'edit') {
38
			axios.get(actionLink)
39
				.then(({ data }) => {
40
					const resData = data.data
10513 stevensc 41
 
10516 stevensc 42
					if (!data.success) {
43
						dispatch(addNotification({
44
							style: 'error',
45
							msg: 'Ha ocurrido un error'
46
						}))
47
					}
10513 stevensc 48
 
10516 stevensc 49
					setValue('comment', resData.interview.comment)
10518 stevensc 50
					setCurrentStatus(statusOptions.find((status) => status.value === resData.interview.status))
51
					setCurrentPoints(pointsOptions.find((point) => point.value === resData.interview.points))
10516 stevensc 52
				})
53
		}
54
	}, [action])
55
 
10513 stevensc 56
	const dataExaple = {
57
		'candidate': {
58
			'uuid': 'afc67cd3-60cd-4b14-81d8-6d8a014bbdd6',
59
			'first_name': 'Eleazar',
60
			'last_name': 'Oroño',
61
			'email': 'eorono@gmail.com'
62
		},
63
		'job_description': {
64
			'uuid': '8ff86a9a-651c-4dd0-86c1-b9c0716d09e0',
65
			'name': 'Programador Junior',
66
			'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>',
67
			'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>',
68
			'competencies': [
69
				{
70
					'competency_uuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b',
71
					'competency_name': 'Flexibilidad',
72
					'competency_type_uuid': 'ae45b2e5-73a9-4a0b-ad04-29a07524ccd6',
73
					'competency_type_name': 'Competencias Horizontales',
74
					'behaviors': [
75
						{
76
							'uuid': '4cee9594-051d-4a52-82f0-58d4accc5583',
77
							'description': 'Enfocar sus acciones al logro de los resultados planteados.',
78
							'points': 0,
79
							'comment': '',
80
							'competency_uuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b'
81
						}
82
					]
83
				}
84
			]
85
		},
86
		'interview': {
87
			'id': 'd1cb9f3d-a6d0-43c1-a698-645b0156d99d',
88
			'status': 'a',
89
			'content': [
90
				{
91
					'competencyUuid': '79b6ae02-f8e9-4f57-976d-d28b31fc824b',
92
					'behaviorUuid': '4cee9594-051d-4a52-82f0-58d4accc5583',
93
					'comment': '',
94
					'evaluation': '0'
95
				}
96
			],
97
			'type': 'b',
98
			'points': '3',
99
			'comment': null
100
		},
101
		'vacancy': {
102
			'id': '26',
103
			'uuid': '7693a385-cde2-4e35-adef-1adc1ca63eac',
104
			'company_id': '1',
105
			'name': 'Programador PHP',
106
			'job_description_id': '3',
107
			'job_category_id': '11',
108
			'description': '<p>Test</p>',
109
			'location_id': '136',
110
			'industry_id': '12',
111
			'last_date': '0000-00-00',
112
			'status': 'a',
113
			'added_on': '2022-08-10 18:24:56',
114
			'updated_on': '2022-08-17 20:47:29'
115
		}
116
	}
117
 
118
	useEffect(() => {
10450 stevensc 119
		console.log(action)
120
	}, [])
121
 
10447 stevensc 122
	return (
123
		<section className="content">
124
			<div className="container-fluid">
125
				<div className="row">
126
					<div className="col-12">
127
						<div className='card'>
128
							<div className="card-header">
129
								<ul className="nav nav-tabs" id="myTab" role="tablist">
130
									<li className="nav-item" role="presentation">
131
										<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>
132
									</li>
133
									<li className="nav-item" role="presentation">
134
										<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>
135
									</li>
136
									<li className="nav-item" role="presentation">
137
										<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>
138
									</li>
139
								</ul>
140
							</div>
141
							<div className="card-body">
142
								<div className="tab-content" id="myTabContent">
143
									<div className="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab"></div>
144
									<div className="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"></div>
145
									<div className="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
146
										<div className="form-group">
10513 stevensc 147
											<label>Comentario</label>
148
											<input type="text" name="comment" className="form-control" />
10447 stevensc 149
										</div>
10513 stevensc 150
										<div className="form-group">
151
											<label>Evaluación</label>
10520 stevensc 152
											<select
153
												className='form-control'
154
												name='points'
155
												onChange={(e) => setCurrentPoints({ ...currentPoints, value: e.target.value })}
156
												value={currentPoints}
157
											>
10513 stevensc 158
												{
10519 stevensc 159
													pointsOptions.map(({ label, value }) => (
10513 stevensc 160
														<option key={value} value={value}>{label}</option>
10519 stevensc 161
													))
10513 stevensc 162
												}
163
											</select>
164
										</div>
165
										<div className="form-group">
166
											<label>Estatus</label>
10520 stevensc 167
											<select
168
												className='form-control'
169
												name='status'
170
												onChange={(e) => setCurrentStatus({ value: e.target.value, label: setStatusOptions.map(status => status.value === e.target.value && status.label) })}
171
												value={currentStatus}
172
											>
10513 stevensc 173
												{
10519 stevensc 174
													statusOptions.map(({ label, value }) => (
10513 stevensc 175
														<option key={value} value={value}>{label}</option>
10519 stevensc 176
													))
10513 stevensc 177
												}
178
											</select>
179
										</div>
10447 stevensc 180
									</div>
181
								</div>
182
								<div className="form-group">
10513 stevensc 183
									<button type="submit" className="btn btn-primary btn-form-save-close mr-2">
10439 stevensc 184
                                        Guardar
10447 stevensc 185
									</button>
186
									<button
187
										type="button"
188
										className="btn btn-secondary btn-edit-cancel"
189
										onClick={() => history.goBack()}
190
									>
10439 stevensc 191
                                        Cancelar
10447 stevensc 192
									</button>
193
								</div>
194
							</div>
195
						</div>
196
					</div>
197
				</div>
198
			</div>
199
		</section>
200
	)
10436 stevensc 201
}
202
export default FormView