Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3692 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

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