Rev 2089 | AutorÃa | Ultima modificación | Ver Log |
import React from 'react'
import { useDispatch } from 'react-redux'
import { useForm } from 'react-hook-form'
import { axios } from '../../utils'
import { addNotification } from '../../redux/notification/notification.actions'
import { useFetchHelper } from '@hooks'
import Modal from 'components/UI/modal/Modal'
import FormErrorFeedback from 'components/UI/form/FormErrorFeedback'
import Input from '../UI/inputs/Input'
const AddGroupModal = ({ show, onHide, fetchGroups }) => {
const { data: groupTypes } = useFetchHelper('group-types')
const { data: industries } = useFetchHelper('industries')
const dispatch = useDispatch()
const { register, handleSubmit, errors, setError } = useForm()
const onSubmit = handleSubmit((data) => {
const formData = new FormData()
Object.entries(data).forEach(([key, value]) => formData.append(key, value))
axios
.post(`/group/my-groups/add`, formData)
.then(({ data: responseData }) => {
const { data, success } = responseData
if (!success) {
const errorMessage = data
const isObject = typeof errorMessage === 'object'
if (isObject) {
Object.entries(errorMessage).map(([key, value]) =>
setError(key, {
type: 'manual',
message: Array.isArray(value) ? value[0] : value
})
)
return
}
throw new Error(errorMessage)
}
fetchGroups()
onHide()
})
.catch((err) => {
dispatch(addNotification({ style: 'danger', msg: err.message }))
})
})
return (
<Modal title='Nuevo Grupo' show={show} onClose={onHide} onAccept={onSubmit}>
<Input
name='name'
placeholder='Nombre del grupo'
inputRef={register({
required: 'Por favor ingrese el nombre del grupo'
})}
error={errors.name?.message}
/>
<div className='form-group'>
<select
name='type_id'
id='type_id'
defaultValue=''
ref={register({
required: 'Por favor eliga un tipo'
})}
>
<option value='' hidden>
Tipo
</option>
{groupTypes.map(({ name, value }) => (
<option value={value} key={name}>
{name}
</option>
))}
</select>
{errors.type_id && (
<FormErrorFeedback>{errors.type_id.message}</FormErrorFeedback>
)}
</div>
<div className='form-group'>
<select
name='industry_id'
id='industry_id'
defaultValue=''
ref={register({
required: 'Por favor eliga una industria'
})}
>
<option value='' hidden>
Industria
</option>
{industries.map(({ name, value }) => (
<option value={value} key={value}>
{name}
</option>
))}
</select>
{errors.industry_id && (
<FormErrorFeedback>{errors.industry_id.message}</FormErrorFeedback>
)}
</div>
</Modal>
)
}
export default AddGroupModal