Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 11142 | Rev 14167 | 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
 
11142 stevensc 20
		const formData = new FormData()
7118 stevensc 21
 
11254 stevensc 22
		if (Array.isArray(submitData)) {
23
			submitData.forEach(data => {
24
				Object.entries(data).forEach((entries) => {
25
					formData.append(entries[0], entries[1])
26
				})
27
			})
28
		} else {
29
			Object.entries(submitData).forEach((entries) => {
30
				formData.append(entries[0], entries[1])
31
			})
32
		}
33
 
11142 stevensc 34
		axios.post(postLink, formData)
35
			.then(({ data }) => {
36
				if (!data.success) {
37
					dispatch(addNotification({
38
						style: 'error',
39
						msg: typeof data.data === 'string'
40
							? data.data
41
							: Object.values(data.data)[0]
42
					}))
43
					return
44
				}
7116 stevensc 45
 
7777 stevensc 46
 
11142 stevensc 47
				dispatch(addNotification({
48
					style: 'success',
49
					msg: 'Envio completado'
50
				}))
51
				setError(null)
52
				closeModal()
53
			})
54
			.catch((err) => setError(err))
55
	}
7107 stevensc 56
 
11142 stevensc 57
	return (
58
		<Modal size="lg" show onHide={closeModal}>
59
			<Modal.Header closeButton>
60
				<Modal.Title>{title}</Modal.Title>
61
			</Modal.Header>
62
			<Modal.Body>
63
				<div className='form-group'>
64
					{children}
65
				</div>
66
				{error && <p>{error}</p>}
67
			</Modal.Body>
68
			<Modal.Footer>
69
				<Button
70
					variant="primary"
71
					onClick={onSubmit}
72
				>
11254 stevensc 73
					Enviar
11142 stevensc 74
				</Button>
75
				<Button variant="danger" onClick={closeModal}>
11254 stevensc 76
					Cancelar
11142 stevensc 77
				</Button>
78
			</Modal.Footer>
79
		</Modal >
80
	)
7107 stevensc 81
}
82
 
83
export default SubmitModal