Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15266 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
6478 stevensc 1
import axios from 'axios'
2
import React, { useEffect, useState } from 'react'
15279 stevensc 3
import { Modal } from 'react-bootstrap'
8516 stevensc 4
import { useForm } from 'react-hook-form'
14843 stevensc 5
import { useDispatch } from 'react-redux'
6478 stevensc 6
import { getData } from '../../../helpers/fetchHelpers'
14843 stevensc 7
import { addNotification } from '../../../redux/notification/notification.actions'
6478 stevensc 8
 
8520 stevensc 9
const CompanySizeModal = ({
11152 stevensc 10
	isOpen,
11
	closeModal,
12
	companySizeUrl,
15227 stevensc 13
	action,
15063 stevensc 14
	title
6478 stevensc 15
}) => {
16
 
14524 stevensc 17
	const { handleSubmit, register, setValue } = useForm()
11152 stevensc 18
	const [companySizes, setCompanySizes] = useState([])
14843 stevensc 19
	const dispatch = useDispatch()
6478 stevensc 20
 
11152 stevensc 21
	const onSubmit = ({ company_size }) => {
8516 stevensc 22
 
11152 stevensc 23
		const data = new FormData()
24
		data.append('company_size_id', company_size)
6478 stevensc 25
 
11152 stevensc 26
		axios.post(companySizeUrl, data)
27
			.then(({ data }) => {
28
				if (!data.success) {
14843 stevensc 29
					typeof data.data === 'string'
30
						?
31
						dispatch(addNotification({
32
							style: 'danger',
33
							msg: data.data
34
						}))
35
						: Object.entries(data.data).map(([key, value]) =>
36
							value.map(err =>
37
								dispatch(addNotification({
38
									style: 'danger',
39
									msg: `${key}: ${err}`
40
								}))
41
							)
42
						)
43
					return
11152 stevensc 44
				}
45
				action(data.data)
46
				closeModal()
47
			})
48
			.catch((err) => console.log(err))
49
	}
6478 stevensc 50
 
11152 stevensc 51
	useEffect(() => {
52
		getData(companySizeUrl)
53
			.then(({ company_sizes, company_size_id }) => {
54
				Object.entries(company_sizes).map(([key, value]) => {
55
					setCompanySizes(prev => [...prev, { value: key, name: value }])
56
				})
8516 stevensc 57
 
11152 stevensc 58
				setValue('company_size', company_size_id)
59
			})
60
	}, [isOpen])
6478 stevensc 61
 
11152 stevensc 62
	return (
63
		<Modal
64
			size="md"
65
			show={isOpen}
66
			onHide={closeModal}
67
			autoFocus={false}
68
		>
69
			<Modal.Header closeButton>
15227 stevensc 70
				<Modal.Title>{title}</Modal.Title>
11152 stevensc 71
			</Modal.Header>
72
			<form onSubmit={handleSubmit(onSubmit)}>
73
				<Modal.Body>
15266 stevensc 74
					<div className="form-group">
11152 stevensc 75
						<select
76
							className='form-control'
77
							name="company_size"
78
							ref={register}
79
						>
15266 stevensc 80
							{companySizes.map(({ value, name }) =>
81
								<option key={value} value={value}>{name}</option>
82
							)}
11152 stevensc 83
						</select>
84
					</div>
85
				</Modal.Body>
86
				<Modal.Footer>
15279 stevensc 87
					<button
88
						className="btn btn-primary"
11152 stevensc 89
						type="submit"
90
					>
14524 stevensc 91
						Enviar
15279 stevensc 92
					</button>
93
					<button
94
						className='btn btn-tertiary'
11152 stevensc 95
						onClick={closeModal}
96
					>
14524 stevensc 97
						Cancelar
15279 stevensc 98
					</button>
11152 stevensc 99
				</Modal.Footer>
100
			</form>
101
		</Modal >
102
	)
6478 stevensc 103
}
104
 
8520 stevensc 105
export default CompanySizeModal