Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 1970 | Rev 2087 | 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
 
5
import { axios } from 'utils/index'
5 stevensc 6
import { addNotification } from '../../redux/notification/notification.actions'
7
import useFetchHelper from '../../hooks/useFetchHelper'
8
 
1456 stevensc 9
import Modal from 'components/UI/modal/Modal'
10
import FormErrorFeedback from 'components/UI/form/FormErrorFeedback'
11
 
5 stevensc 12
const AddCompanyModal = ({
13
  show = false,
14
  onHide = () => null,
655 stevensc 15
  fetchCompanies = () => []
5 stevensc 16
}) => {
17
  const { data: companySizes } = useFetchHelper('company-sizes')
18
  const { data: industries } = useFetchHelper('industries')
19
  const labels = useSelector(({ intl }) => intl.labels)
20
  const dispatch = useDispatch()
21
 
22
  const { register, handleSubmit, errors } = useForm()
23
 
1456 stevensc 24
  const onSubmit = handleSubmit((data) => {
1979 stevensc 25
    const formData = new FormData()
26
 
27
    Object.entries(data).map(([key, value]) => formData.append(key, value))
28
 
5 stevensc 29
    axios
1979 stevensc 30
      .post('/company/my-companies/add', formData)
5 stevensc 31
      .then(({ data: response }) => {
32
        if (!response.success) {
33
          const errorMessage =
34
            typeof response.data === 'string'
35
              ? response.data
36
              : Object.entries(response.data).map(
37
                  ([key, value]) => `${key}: ${value[0]}`
38
                )
39
 
40
          dispatch(addNotification({ style: 'danger', msg: errorMessage }))
41
          return
42
        }
43
 
44
        fetchCompanies()
45
        onHide()
46
      })
655 stevensc 47
      .catch((err) => {
48
        dispatch(addNotification({ style: 'danger', msg: err.message }))
5 stevensc 49
      })
1456 stevensc 50
  })
5 stevensc 51
 
52
  return (
1456 stevensc 53
    <Modal
54
      title={labels.new_company}
55
      show={show}
56
      onClose={onHide}
57
      onAccept={onSubmit}
58
    >
59
      <div className='form-group'>
60
        <input
61
          type='text'
62
          name='name'
63
          placeholder={labels.name_of_company}
64
          ref={register({
65
            required: 'Por favor ingrese el nombre de la Empresa'
66
          })}
67
        />
68
        {errors.name && (
69
          <FormErrorFeedback>{errors.name.message}</FormErrorFeedback>
70
        )}
71
      </div>
5 stevensc 72
 
1456 stevensc 73
      <div className='form-group'>
74
        <select
75
          name='industry_id'
76
          ref={register({
77
            required: labels.select_industry
78
          })}
79
        >
80
          <option value='' hidden>
81
            {labels.industry}
82
          </option>
83
          {industries.map(({ name, value }) => (
84
            <option value={value} key={value}>
85
              {name}
86
            </option>
87
          ))}
88
        </select>
89
        {errors.industry_id && (
90
          <FormErrorFeedback>{errors.industry_id.message}</FormErrorFeedback>
91
        )}
92
      </div>
5 stevensc 93
 
1456 stevensc 94
      <div className='form-group'>
95
        <select
96
          name='company_size_id'
97
          ref={register({
98
            required: labels.select_company_size
99
          })}
100
        >
101
          <option value='' hidden>
102
            {labels.company_size}
103
          </option>
104
          {companySizes.map(({ name, value }) => (
105
            <option value={value} key={value}>
106
              {name}
107
            </option>
108
          ))}
109
        </select>
110
        {errors.company_size_id && (
111
          <FormErrorFeedback>
112
            {errors.company_size_id.message}
113
          </FormErrorFeedback>
114
        )}
115
      </div>
1979 stevensc 116
 
5 stevensc 117
    </Modal>
118
  )
119
}
120
 
121
export default AddCompanyModal