Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
1929 stevensc 1
import React from 'react'
1456 stevensc 2
import { useDispatch, useSelector } from 'react-redux'
5 stevensc 3
import { useForm } from 'react-hook-form'
1456 stevensc 4
 
2799 stevensc 5
import { axios } from '@app/utils'
2780 stevensc 6
import { useFetchHelper } from '@hooks'
2799 stevensc 7
import { addNotification } from '@app/redux/notification/notification.actions'
5 stevensc 8
 
2799 stevensc 9
import Modal from '@components/UI/modal/Modal'
10
import Input from '@components/UI/inputs/Input'
11
import Select from '@components/UI/inputs/Select'
1456 stevensc 12
 
5 stevensc 13
const AddCompanyModal = ({
14
  show = false,
15
  onHide = () => null,
655 stevensc 16
  fetchCompanies = () => []
5 stevensc 17
}) => {
18
  const { data: companySizes } = useFetchHelper('company-sizes')
19
  const { data: industries } = useFetchHelper('industries')
20
  const labels = useSelector(({ intl }) => intl.labels)
21
  const dispatch = useDispatch()
22
 
2799 stevensc 23
  const {
24
    control,
25
    handleSubmit,
26
    formState: { errors }
27
  } = useForm()
5 stevensc 28
 
1456 stevensc 29
  const onSubmit = handleSubmit((data) => {
1979 stevensc 30
    const formData = new FormData()
31
    Object.entries(data).map(([key, value]) => formData.append(key, value))
32
 
5 stevensc 33
    axios
1979 stevensc 34
      .post('/company/my-companies/add', formData)
5 stevensc 35
      .then(({ data: response }) => {
36
        if (!response.success) {
37
          const errorMessage =
38
            typeof response.data === 'string'
39
              ? response.data
40
              : Object.entries(response.data).map(
41
                  ([key, value]) => `${key}: ${value[0]}`
42
                )
43
 
44
          dispatch(addNotification({ style: 'danger', msg: errorMessage }))
45
          return
46
        }
47
 
48
        fetchCompanies()
49
        onHide()
50
      })
655 stevensc 51
      .catch((err) => {
52
        dispatch(addNotification({ style: 'danger', msg: err.message }))
5 stevensc 53
      })
1456 stevensc 54
  })
5 stevensc 55
 
56
  return (
1456 stevensc 57
    <Modal
58
      title={labels.new_company}
59
      show={show}
60
      onClose={onHide}
61
      onAccept={onSubmit}
62
    >
2087 stevensc 63
      <Input
64
        name='name'
65
        placeholder={labels.name_of_company}
66
        error={errors.name?.message}
2799 stevensc 67
        control={control}
68
        rules={{ required: 'Por favor ingrese el nombre de la Empresa' }}
2087 stevensc 69
      />
5 stevensc 70
 
2799 stevensc 71
      <Select
72
        name='industry_id'
73
        options={industries}
74
        control={control}
75
        rules={{ required: labels.select_industry }}
76
        error={errors.industry_id?.message}
77
      />
5 stevensc 78
 
2799 stevensc 79
      <Select
80
        name='company_size_id'
81
        options={companySizes}
82
        control={control}
83
        rules={{ required: labels.select_company_size }}
84
        error={errors.company_size_id?.message}
85
      />
5 stevensc 86
    </Modal>
87
  )
88
}
89
 
90
export default AddCompanyModal