Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev Autor Línea Nro. Línea
6407 stevensc 1
import axios from 'axios'
2
import React, { useEffect, useState } from 'react'
3
import { Modal, Button } from 'react-bootstrap'
4
import { getData } from '../../../helpers/fetchHelpers'
5
import Datetime from 'react-datetime'
11152 stevensc 6
import 'react-datetime/css/react-datetime.css'
14843 stevensc 7
import { addNotification } from '../../../redux/notification/notification.actions'
8
import { useDispatch } from 'react-redux'
6407 stevensc 9
 
10
const FoundationsYearModal = ({
11152 stevensc 11
	isOpen,
12
	closeModal,
13
	foundationYearUrl,
15062 stevensc 14
	action,
15
	title
6407 stevensc 16
}) => {
17
 
11152 stevensc 18
	const [year, setYear] = useState(0)
19
	const [error, setError] = useState(null)
14843 stevensc 20
	const dispatch = useDispatch()
6407 stevensc 21
 
11152 stevensc 22
	const onSubmit = (e) => {
23
		e.preventDefault()
6407 stevensc 24
 
11152 stevensc 25
		const data = new FormData()
26
		data.append('foundation_year', year)
6407 stevensc 27
 
11152 stevensc 28
		axios.post(foundationYearUrl, data)
29
			.then(({ data }) => {
30
				if (!data.success) {
14843 stevensc 31
					typeof data.data === 'string'
32
						?
33
						dispatch(addNotification({
34
							style: 'danger',
35
							msg: data.data
36
						}))
37
						: Object.entries(data.data).map(([key, value]) =>
38
							value.map(err =>
39
								dispatch(addNotification({
40
									style: 'danger',
41
									msg: `${key}: ${err}`
42
								}))
43
							)
44
						)
45
					return
11152 stevensc 46
				}
47
				action(data.data)
48
			})
49
			.then(() => {
50
				setError(null)
51
				closeModal()
52
			})
53
			.catch((err) => console.log(err))
54
	}
6407 stevensc 55
 
11152 stevensc 56
	useEffect(() => {
57
		getData(foundationYearUrl)
58
			.then(({ foundation_year }) => setYear(parseInt(foundation_year)))
59
			.catch(err => console.log(err))
60
	}, [isOpen])
6407 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={(e) => onSubmit(e)}>
73
				<Modal.Body>
74
					<div className="mb-3">
15062 stevensc 75
						<label className="form-label">{title}</label>
11152 stevensc 76
						<Datetime
77
							dateFormat="YYYY"
78
							timeFormat={false}
79
							onChange={(e) => setYear(e.year())}
80
							initialValue={new Date(`${year + 1}`).getFullYear().toString()}
81
							inputProps={{ className: 'form-control' }}
82
							closeOnSelect
83
						/>
84
					</div>
85
					{error && <p>{error}</p>}
86
				</Modal.Body>
87
				<Modal.Footer>
88
					<Button
89
						variant="primary"
90
						type="submit"
91
					>
14843 stevensc 92
						Enviar
11152 stevensc 93
					</Button>
94
					<Button
95
						className='btn-tertiary'
96
						onClick={closeModal}
97
					>
14843 stevensc 98
						Cancelar
11152 stevensc 99
					</Button>
100
				</Modal.Footer>
101
			</form>
102
		</Modal >
103
	)
6407 stevensc 104
}
105
 
106
export default FoundationsYearModal