Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
14197 stevensc 1
/* eslint-disable no-mixed-spaces-and-tabs */
2
import axios from 'axios'
3
import React, { useEffect, useState } from 'react'
4
import { useForm } from 'react-hook-form'
5
import { useDispatch } from 'react-redux'
6
import { useHistory, useParams } from 'react-router-dom'
7
import { addNotification } from '../../redux/notification/notification.actions'
8
 
9
const pointsOptions = [
10
	{ label: 'Sugerir otro cargo', value: 0 },
11
	{ label: '25%', value: 1 },
12
	{ label: '50%', value: 2 },
13
	{ label: '75%', value: 3 },
14
	{ label: '100%', value: 4 }
15
]
16
 
17
const FormView = ({
18
	actionLink = '',
19
	setActionLink = function () { }
20
}) => {
21
 
22
	// Hooks
23
	const dispatch = useDispatch()
24
	const history = useHistory()
25
	const { action } = useParams()
26
	const { setValue, register, watch, handleSubmit } = useForm()
27
 
28
	//States
14205 stevensc 29
	const [data, setData] = useState({})
30
	const [supervisers, setSupervisers] = useState([])
14197 stevensc 31
 
32
	const onSubmit = () => {
33
 
14205 stevensc 34
		const submitData = new FormData()
35
		/* 		const content = []
14197 stevensc 36
		jobDescription.competencies.forEach(competency => competency.behaviors.forEach(behavior => {
37
			content.push({
38
				competencyUuid: behavior.competency_uuid,
39
				behaviorUuid: behavior.uuid,
40
				comment: watch(`${behavior.competency_uuid}-${behavior.uuid}-comment`),
41
				evaluation: watch(`select-${behavior.competency_uuid}-${behavior.uuid}`)
42
			})
43
		}))
44
 
45
		submitData.append('content', JSON.stringify(content))
14205 stevensc 46
		submitData.append('points', watch('points')) */
47
		//.append('comment', watch('comment'))
14197 stevensc 48
 
49
		axios.post(actionLink, submitData)
50
			.then(({ data }) => {
51
				if (!data.success) {
52
					return dispatch(addNotification({
53
						style: 'danger',
54
						msg: typeof data.data === 'string'
55
							? data.data
56
							: 'Ha ocurrido un error'
57
					}))
58
				}
59
 
60
				history.goBack()
61
				setActionLink('')
62
				dispatch(addNotification({
63
					style: 'success',
64
					msg: `Registro ${action === 'edit' ? 'actualizado' : 'añadido'}`
65
				}))
66
			})
67
	}
68
 
69
	useEffect(() => {
70
		axios.get(actionLink)
71
			.then(({ data }) => {
72
				if (!data.success) {
73
					return dispatch(addNotification({
74
						style: 'danger',
75
						msg: 'Ha ocurrido un error'
76
					}))
77
				}
78
 
14205 stevensc 79
				setSupervisers(data.data['supervisers'].map(option => ({ [option.uuid]: option.name })))
80
				setValue('name', data.data['name'])
81
				setValue('job_description_id_boss', data.data['job_description_id_boss'])
14197 stevensc 82
 
83
			})
84
	}, [action])
85
 
86
	return (
87
		<section className="content">
88
			<div className="container-fluid">
89
				<div className="row">
90
					<div className="col-12">
91
						<form onSubmit={handleSubmit(onSubmit)}>
92
							<div className='card'>
93
								<div className="card-header">
94
									<ul className="nav nav-tabs" id="myTab" role="tablist">
95
										<li className="nav-item" role="presentation">
96
											<button className="nav-link active" id="home-tab" data-toggle="tab" data-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">General</button>
97
										</li>
98
										<li className="nav-item" role="presentation">
99
											<button className="nav-link" id="profile-tab" data-toggle="tab" data-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Competencias</button>
100
										</li>
101
										<li className="nav-item" role="presentation">
102
											<button className="nav-link" id="contact-tab" data-toggle="tab" data-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Conclusiones</button>
103
										</li>
104
									</ul>
105
								</div>
106
								<div className="card-body">
107
									<div className="tab-content" id="myTabContent">
108
										<div className="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
109
											<div className="card">
14205 stevensc 110
												<div className="row">
111
													<div className="col-4">
112
														<div className="form-group">
113
															<label>Nombre</label>
114
															<input type="text" name='name' ref={register} />
14197 stevensc 115
														</div>
14205 stevensc 116
													</div>
117
													<div className="col-4">
118
														<div className="form-group">
119
															<label>Nombre</label>
120
															<select name="job_description_id_boss" ref={register}>
121
																<option value="">No aplica</option>
14197 stevensc 122
																{
14205 stevensc 123
																	supervisers.map(({ key, value }) =>
124
																		<option key={value} value={value}>{key}</option>
125
																	)
14197 stevensc 126
																}
14205 stevensc 127
															</select>
14197 stevensc 128
														</div>
129
													</div>
14205 stevensc 130
												</div>
131
											</div>
14197 stevensc 132
										</div>
14205 stevensc 133
										<div className="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
134
 
135
										</div>
14197 stevensc 136
										<div className="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
14205 stevensc 137
 
14197 stevensc 138
										</div>
139
									</div>
140
									<div className="form-group">
141
										<button type="submit" className="btn btn-primary btn-form-save-close mr-2">
142
											Guardar & Cerrar
143
										</button>
144
										<button
145
											type="button"
146
											className="btn btn-secondary btn-edit-cancel"
147
											onClick={() => history.goBack()}
148
										>
149
											Cancelar
150
										</button>
151
									</div>
152
								</div>
153
							</div>
154
						</form>
155
					</div>
156
				</div>
157
			</div>
158
		</section >
159
	)
160
}
161
 
162
export default FormView