Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
11142 stevensc 1
import React, { useState } from 'react'
2
import { Modal, Button } from 'react-bootstrap'
3
import axios from 'axios'
4
import { addNotification } from '../../../redux/notification/notification.actions'
5
import { useDispatch } from 'react-redux'
7107 stevensc 6
 
7
const SubmitModal = ({
11142 stevensc 8
	children,
9
	closeModal = function () { },
10
	postLink = '',
11
	submitData = '',
12
	title = ''
7107 stevensc 13
}) => {
14
 
11142 stevensc 15
	const [error, setError] = useState('')
16
	const dispatch = useDispatch()
7107 stevensc 17
 
11142 stevensc 18
	const onSubmit = () => {
7107 stevensc 19
 
14168 stevensc 20
		const values = Object.values(submitData)
21
		console.log(values)
22
 
14169 stevensc 23
		if (!values.length || !values[0]) {
14168 stevensc 24
			return dispatch(addNotification({
25
				style: 'danger',
26
				msg: 'El campo no puede estar vacio.'
27
			}))
28
		}
29
 
11142 stevensc 30
		const formData = new FormData()
7118 stevensc 31
 
11254 stevensc 32
		if (Array.isArray(submitData)) {
33
			submitData.forEach(data => {
34
				Object.entries(data).forEach((entries) => {
35
					formData.append(entries[0], entries[1])
36
				})
37
			})
38
		} else {
39
			Object.entries(submitData).forEach((entries) => {
40
				formData.append(entries[0], entries[1])
41
			})
42
		}
43
 
11142 stevensc 44
		axios.post(postLink, formData)
45
			.then(({ data }) => {
46
				if (!data.success) {
14167 stevensc 47
					return dispatch(addNotification({
48
						style: 'danger',
11142 stevensc 49
						msg: typeof data.data === 'string'
50
							? data.data
51
							: Object.values(data.data)[0]
52
					}))
53
				}
7116 stevensc 54
 
7777 stevensc 55
 
11142 stevensc 56
				dispatch(addNotification({
57
					style: 'success',
58
					msg: 'Envio completado'
59
				}))
60
				setError(null)
61
				closeModal()
62
			})
63
			.catch((err) => setError(err))
64
	}
7107 stevensc 65
 
11142 stevensc 66
	return (
67
		<Modal size="lg" show onHide={closeModal}>
68
			<Modal.Header closeButton>
69
				<Modal.Title>{title}</Modal.Title>
70
			</Modal.Header>
71
			<Modal.Body>
72
				<div className='form-group'>
73
					{children}
74
				</div>
75
				{error && <p>{error}</p>}
76
			</Modal.Body>
77
			<Modal.Footer>
78
				<Button
79
					variant="primary"
80
					onClick={onSubmit}
81
				>
11254 stevensc 82
					Enviar
11142 stevensc 83
				</Button>
84
				<Button variant="danger" onClick={closeModal}>
11254 stevensc 85
					Cancelar
11142 stevensc 86
				</Button>
87
			</Modal.Footer>
88
		</Modal >
89
	)
7107 stevensc 90
}
91
 
92
export default SubmitModal