Rev 5165 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
/* eslint-disable react/prop-types */import React, { useState } from 'react'import { Modal } from 'react-bootstrap'import { useForm } from 'react-hook-form'import { connect } from 'react-redux'import { axios } from '../../../../utils'import { addNotification } from '../../../../redux/notification/notification.actions'import FormErrorFeedback from '../../../../shared/form-error-feedback/FormErrorFeedback'import Spinner from '../../../../shared/loading-spinner/Spinner'const AddCompanyModal = ({show = false,onHide = () => null,fetchCompanies = () => [],companySizes = {},industries = {},addNotification // redux action}) => {const [loading, setLoading] = useState(false)const { register, handleSubmit, errors } = useForm()const onSubmitHandler = (data) => {setLoading(true)const formData = new FormData()Object.entries(data).map(([key, value]) => formData.append(key, value))axios.post('/company/my-companies/add', formData).then(({ data: response }) => {if (!response.success) {const errorMessage = typeof response.data === 'string'? response.data: Object.entries(response.data).map(([key, value]) => `${key}: ${value[0]}`)addNotification({ style: 'danger', msg: errorMessage })return}fetchCompanies()onHide()}).catch((error) => {const errorMessage = new Error(error)addNotification({ style: 'danger', msg: errorMessage })}).finally(() => setLoading(false))}return (<Modal show={show} onHide={onHide}><Modal.Header closeButton><Modal.Title>Nueva Empresa</Modal.Title></Modal.Header><form onSubmit={handleSubmit(onSubmitHandler)}><Modal.Body className='position-relative'><div className="form-group"><inputtype="text"name="name"placeholder="Nombre de la empresa"ref={register({required: 'Por favor ingrese el nombre de la Empresa'})}/>{errors.name && <FormErrorFeedback>{errors.name.message}</FormErrorFeedback>}</div><div className="form-group"><selectname="industry_id"ref={register({required: 'Por favor eliga una industria'})}><option value="" hidden>Industria</option>{Object.entries(industries).map(([key, value]) =><option value={key} key={key}>{value}</option>)}</select>{errors.industry_id && <FormErrorFeedback>{errors.industry_id.message}</FormErrorFeedback>}</div><div className="form-group"><selectname="company_size_id"ref={register({required: 'Por favor eliga el tamaño de la empresa'})}><option value="" hidden>Tamaño de la empresa</option>{Object.entries(companySizes).map(([key, value]) =><option value={key} key={key}>{value}</option>)}</select>{errors.company_size_id && <FormErrorFeedback>{errors.company_size_id.message}</FormErrorFeedback>}</div>{loading && <Spinner />}</Modal.Body><Modal.Footer><button type="submit" className='btn btn-primary'>Crear</button><button type="button" className='btn btn-secondary' onClick={onHide}>Cancelar</button></Modal.Footer></form></Modal>)}const mapDispatchToProps = {addNotification: (notification) => addNotification(notification)}export default connect(null, mapDispatchToProps)(AddCompanyModal)