Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2802 | 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 '@app/utils'
import { useFetchHelper } from '@hooks'
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'

const AddGroupModal = ({ show, onHide, fetchGroups }) => {
  const { data: groupTypes } = useFetchHelper('group-types')
  const { data: industries } = useFetchHelper('industries')
  const dispatch = useDispatch()

  const {
    control,
    handleSubmit,
    formState: { errors }
  } = 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 { success } = responseData
        if (!success) throw new Error('Error al crear el grupo')
        fetchGroups()
        onHide()
      })
      .catch((err) => {
        dispatch(addNotification({ style: 'danger', msg: err.message }))
      })
  })

  return (
    <Modal title='Nuevo Grupo' show={show} onClose={onHide} onAccept={onSubmit}>
      <Input
        label='Nombre'
        name='name'
        placeholder='Nombre del grupo'
        control={control}
        rules={{ required: 'Este campo es requerido' }}
        error={errors.name?.message}
      />

      <Select
        label='Industria'
        name='type_id'
        control={control}
        rules={{ required: 'Por favor eliga un tipo' }}
        error={errors.type_id?.message}
        options={groupTypes}
      />

      <Select
        label='Tipo'
        name='industry_id'
        control={control}
        rules={{ required: 'Por favor eliga un tipo' }}
        error={errors.industry_id?.message}
        options={industries}
      />
    </Modal>
  )
}

export default AddGroupModal