Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
8468 stevensc 1
import axios from 'axios'
2
import React, { useEffect, useState } from 'react'
3
import { Modal, Button } from 'react-bootstrap'
4
import { useForm } from 'react-hook-form'
5
import { getData } from '../../../helpers/fetchHelpers'
6
 
7
const IndustryModal = ({
11152 stevensc 8
	isOpen,
9
	closeModal,
10
	editUrl,
11
	action
8468 stevensc 12
}) => {
13
 
14524 stevensc 14
	const { handleSubmit, register, setValue } = useForm()
11152 stevensc 15
	const [error, setError] = useState(null)
16
	const [industries, setIndustries] = useState([])
8468 stevensc 17
 
11152 stevensc 18
	const onSubmit = ({ industry }) => {
8520 stevensc 19
 
11152 stevensc 20
		const data = new FormData()
21
		data.append('industry_id', industry)
8479 stevensc 22
 
11152 stevensc 23
		axios.post(editUrl, data)
24
			.then(({ data }) => {
25
				if (!data.success) {
26
					return setError('Error en la respuesta')
27
				}
28
				action(data.data)
29
			})
30
			.then(() => {
31
				setError(null)
32
				closeModal()
33
			})
34
			.catch((err) => console.log(err))
35
	}
8468 stevensc 36
 
11152 stevensc 37
	useEffect(() => {
38
		getData(editUrl)
39
			.then(({ industries, industry_id }) => {
40
				Object.entries(industries).map(([key, value]) => {
41
					setIndustries(prev => [...prev, { value: key, name: value }])
42
				})
8473 stevensc 43
 
14524 stevensc 44
				setValue('industry', industry_id)
11152 stevensc 45
			})
46
	}, [isOpen])
8468 stevensc 47
 
11152 stevensc 48
	return (
49
		<Modal
50
			size="md"
51
			show={isOpen}
52
			onHide={closeModal}
53
			autoFocus={false}
54
		>
55
			<Modal.Header closeButton>
56
				<Modal.Title>Cambiar</Modal.Title>
57
			</Modal.Header>
58
			<form onSubmit={handleSubmit(onSubmit)}>
59
				<Modal.Body>
60
					<div className="mb-3">
61
						<label className="form-label">Industria</label>
62
						<select
63
							className='form-control'
64
							name="industry"
65
							ref={register}
66
						>
67
							{
68
								industries.map(({ value, name }) => (
69
									<option key={value} value={value}>{name}</option>
70
								))
71
							}
72
						</select>
73
					</div>
74
					{error && <p>{error}</p>}
75
				</Modal.Body>
76
				<Modal.Footer>
77
					<Button
78
						variant="primary"
79
						type="submit"
80
					>
14524 stevensc 81
						Enviar
11152 stevensc 82
					</Button>
83
					<Button
84
						className='btn-tertiary'
85
						onClick={closeModal}
86
					>
14524 stevensc 87
						Cancelar
11152 stevensc 88
					</Button>
89
				</Modal.Footer>
90
			</form>
91
		</Modal >
92
	)
8468 stevensc 93
}
94
 
95
export default IndustryModal