Proyectos de Subversion LeadersLinked - SPA

Rev

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