Autoría | Ultima modificación | Ver Log |
import React from 'react'
import { useDispatch, useSelector } from 'react-redux'
import { useForm } from 'react-hook-form'
import { useFetch } from '@hooks'
import { axios } from '@app/utils'
import { addNotification } from '@app/redux/notification/notification.actions'
import Modal from '@components/UI/modal/Modal'
import Input from '@components/UI/inputs/Input'
import Select from '@components/UI/inputs/Select'
import Ckeditor from '@components/common/ckeditor/Ckeditor'
const KnowledgeEditModal = ({
show,
categories = [],
url,
onComplete,
onClose
}) => {
const { data: formValues } = useFetch(url)
const labels = useSelector(({ intl }) => intl.labels)
const dispatch = useDispatch()
const {
control,
formState: { errors },
handleSubmit,
reset
} = useForm({
defaultValues: {
category_id: '',
title: '',
description: '',
image: '',
attachment: ''
},
values: formValues
})
const onSubmit = handleSubmit(async (data) => {
console.log(data)
const { image, title, attachment, description, category_id } = data
try {
const formData = new FormData()
formData.append('image', image[0])
formData.append('title', title)
formData.append('attachment', attachment[0])
formData.append('description', description)
formData.append('category_id', category_id)
const response = await axios.post(url, formData)
const { success } = response.data
if (!success) throw new Error('No se pudo guardar el conocimiento')
onComplete()
reset()
onClose()
} catch (error) {
dispatch(addNotification({ style: 'danger', msg: error.message }))
}
})
return (
<Modal
title='Editar Conocimiento'
show={show}
onClose={onClose}
onAccept={onSubmit}
>
<Select
name='category_id'
label='Categoría'
placeholder='Seleccione un opción'
options={categories}
control={control}
rules={{ required: 'Este campo es requerido' }}
error={errors.category_id?.message}
/>
<Input
name='title'
label={labels.title}
placeholder='Ingrese el título del conocimiento'
control={control}
rules={{ required: 'Este campo es requerido' }}
error={errors.title?.message}
/>
<Ckeditor
name='description'
control={control}
rules={{ required: 'Este campo es requerido' }}
error={errors.description?.message}
/>
<Input
name='image'
type='file'
label={labels.image}
accept='image/*'
placeholder='Seleccione una imagen'
control={control}
rules={{ required: 'Este campo es requerido' }}
error={errors.image?.message}
/>
<Input
name='attachment'
type='file'
label={labels.attachment}
control={control}
placeholder='Seleccione un archivo'
accept='application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document'
rules={{ required: 'Este campo es requerido' }}
error={errors.attachment?.message}
/>
</Modal>
)
}
export default KnowledgeEditModal