Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useState } from 'react'import { axios } from '../../utils'import { Button, Modal } from 'react-bootstrap'import { useForm } from 'react-hook-form'import { connect } from 'react-redux'import { addNotification } from '../../redux/notification/notification.actions'import Spinner from '../UI/Spinner'import LoaderContainer from '../UI/LoaderContainer'import FormErrorFeedback from '../UI/FormErrorFeedback'const ApplyModal = ({onHide = function () {},jobId,show,userProfiles,onApplied,addNotification = function () {}, // redux destructuring}) => {const [loading, setLoading] = useState(false)const { register, handleSubmit, errors, getValues, setError } = useForm()const handleOnSubmit = async (data) => {setLoading(true)const formData = new FormData()Object.entries(data).map(([key, value]) => formData.append(key, value))await axios.post(`/job/apply-job/${jobId}`, formData).then(({ data }) => {if (data.success) {onApplied()onHide()} else {if (typeof data.data === 'object') {Object.entries(data.data).map(([key, value]) => {if (key in getValues()) {setError(key, { type: 'manual', message: value[0] })}})} else if (typeof data.data === 'string') {addNotification({style: 'danger',msg: data.data,})} else {addNotification({style: 'danger',msg: 'Ha ocurrido un error, por favor intente más tarde',})}}})setLoading(false)}return (<Modalshow={show}onHide={onHide}aria-labelledby="contained-modal-title-vcenter"centered><Modal.Header closeButton><Modal.Title id="contained-modal-title-vcenter">Perfil de Applicación</Modal.Title></Modal.Header><form onSubmit={handleSubmit(handleOnSubmit)}><Modal.Body><div className="form-groupp"><selectname="user_profile_id"id="user_profile_id"defaultValue=""ref={register({required: 'Por favor seleccione un perfil',})}><option value="">Perfil de applicación</option>{Object.entries(userProfiles).map(([key, value]) => (<option value={key} key={key}>{value}</option>))}</select>{errors?.user_profile_id?.message && (<FormErrorFeedback>{errors.user_profile_id.message}</FormErrorFeedback>)}</div></Modal.Body><Modal.Footer><Button type="submit">Aplicar</Button><Button onClick={onHide}>Cancelar</Button></Modal.Footer></form>{loading && (<LoaderContainer><Spinner /></LoaderContainer>)}</Modal>)}const mapDispatchToProps = {addNotification: (notification) => addNotification(notification),}export default connect(null, mapDispatchToProps)(ApplyModal)