Capitulo 30 del Módulo 7 Rol Client | Empresa

➜ EmpresaUpdate Actualizar Empresa

Componente EmpresaUpdate | Desarrollo del componente EmpresaUpdate que permita al rol client actualizar los datos de sus empresas y estos se almacenen en la BD.

CRUD empresaUpdate

App.jsx

...
import EmpresaUpdateClient from './pageclient/EmpresaUpdate'
...
<Route path='empresa/edit/:id' element={<EmpresaUpdateClient/>} />
...

Config.jsx

getEmpresaUpdateClient:(data,id)=>axios.put(`${base_api_url}/client/empresa/${id}`,data),

pageclient/EmpresaUpdate.jsx

import React, { useEffect, useState } from 'react'
import { Link, useNavigate, useParams } from 'react-router-dom'
import Config from '../Config'
import Select from '../components/Select'

const EmpresaUpdate = () => {
    const navigate = useNavigate()
    const { id } = useParams()
    const [nombre, setNombre] = useState("")
  const [email, setEmail] = useState("")
  const [orden, setOrden] = useState(0)
  const [descripcion, setDescripcion] = useState("")
  const [telefono, setTelefono] = useState("")
  const [direccion, setDireccion] = useState("")
  const [website, setWebsite] = useState("")
  const [facebook, setFacebook] = useState("")
  const [youtube, setYoutube] = useState("")
  const [tiktok, setTiktok] = useState("")
  const [urlfoto, setUrlfoto] = useState("")
  const [categoria_id, setCategoria_id] = useState()
  const [file, setFile] = useState("")

const handleInputChange = async (e)=> {
    let files = e.target.files;
    let reader = new FileReader();
    reader.readAsDataURL(files[0]); 
    reader.onload = (e) => {             
        setFile(e.target.result)
    } 
}

useEffect(() => {
    const getEmpresa = async () => {
      Config.getEmpresaByIdClient(id)
        .then(({ data }) => {
          //console.log(data)
          setNombre(data.nombre)
          setEmail(data.email)
          setDescripcion(data.descripcion)
          setOrden(data.orden)
          setTelefono(data.telefono)
          setDireccion(data.direccion)
          setWebsite(data.website)
          setFacebook(data.facebook)
          setYoutube(data.youtube)
          setTiktok(data.tiktok)
          setUrlfoto(data.urlfoto)
          setCategoria_id(data.categoria_id)
        })
    };
    getEmpresa();
  }, []) 

  const getCategoriaId = (v) =>{ setCategoria_id(v) }

  const submitUpdate = async (ev) =>  {
    ev.preventDefault()        
    await Config.getEmpresaUpdateClient({nombre, email, descripcion, orden, telefono, direccion, website, facebook, youtube, tiktok, file, categoria_id },id)    
    navigate('/client/empresa')
  }


  return (
    <div className="row justify-content-center">
      <div className="col-sm-9">
        <div className="card mt-5 mb-5">
          <div className="card-header">Editar empresa</div>
          <div className="card-body">
            <form onSubmit={submitUpdate}>
              
              <div className='form-group row'>
                                <div className="col-sm-6">
                                    <label>Nombre</label>
                                    <input className='form-control' value={nombre} onChange={(e) => setNombre(e.target.value)} type='text'/>
                                </div>
                                <div className="col-sm-3">
                                    <label>Email</label>
                                    <input className='form-control' value={email} onChange={(e) => setEmail(e.target.value)} type='email'/>
                                </div>
                                <div className="col-sm-3">
                                    <label>Teléfono</label>
                                    <input className='form-control' value={telefono} onChange={(e) => setTelefono(e.target.value)} type='tel'/>
                                </div>
              </div>

              <div className="form-group row mt-3">
                <div className="col-sm-6">
                  <label>Dirección</label>
                  <input className='form-control' value={direccion} onChange={(e) => setDireccion(e.target.value)} type='text'/>
                </div>
                <div className="col-sm-3">
                  <label>Orden</label>
                  <input className='form-control' value={orden} onChange={(e) => setOrden(e.target.value)} type='number'/>
                </div>
                <div className="col-sm-3">
                  <label>Categoria</label>
                  <Select selec={categoria_id} selected={getCategoriaId} />
                </div>
              </div>
                            <div className='form-group row mt-3'>
                                <div className="col-sm-3">
                                    <label>Website</label>
                                    <input className='form-control' value={website||''} onChange={(e) => setWebsite(e.target.value)} type='url'/>
                                </div>
                                <div className="col-sm-3">
                                    <label>Facebook</label>
                                    <input className='form-control' value={facebook||''} onChange={(e) => setFacebook(e.target.value)} type='url'/>
                                </div>
                                <div className="col-sm-3">
                                    <label>Youtube</label>
                                    <input className='form-control' value={youtube||''} onChange={(e) => setYoutube(e.target.value)} type='url'/>
                                </div>
                                <div className="col-sm-3">
                                    <label>Tiktok</label>
                                    <input className='form-control' value={tiktok||''} onChange={(e) => setTiktok(e.target.value)} type='url'/>
                                </div>
                            </div>
                            

                            <div className='mt-3'>
                                <label>Descripción:</label>
                                <textarea className='form-control' value={descripcion} onChange={(e) => setDescripcion(e.target.value)} />
                            </div>
                            <div className='mt-3'>
                                <label>Imagen:</label>
                                <img src={`/img/empresa/${urlfoto}`} loading='lazy' width={200} height={200} className="img-fluid img-thumbnail"/>
                                <input className="form-control" type="file" onChange={(e) => handleInputChange(e)} />
                            </div>
                            <div className="btn-group mt-3">
                                <Link to={-1} className="btn btn-secondary" >← Back </Link>
                                <button type='submit' className="btn btn-primary">Actualizar Empresa</button>
                            </div>

            </form>
          </div>
        </div>
      </div>
    </div>
  )
}

export default EmpresaUpdate

 


977 visitas

Capítulo 31 – Rutas y Mockups »

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar

¡Qué aprenderás?

tooltip bs-tooltip-top bs-tooltip-end bs-tooltip-bottom bs-tooltip-start show fade tooltip-inner

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú