Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 2072 | Rev 2798 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
5 stevensc 1
import React, { useEffect, useState } from 'react'
2
import { useDispatch, useSelector } from 'react-redux'
3
import { debounce } from '../../utils'
4
import { addNotification } from '../../redux/notification/notification.actions'
5
import { searchEntities } from '../../services/items'
6
 
7
import Spinner from '../../components/UI/Spinner'
8
import SearchBar from '../../components/UI/SearchBar'
9
import ProfileItem from '../../components/profile/ProfileItem'
10
import TitleSection from '../../components/UI/TitleSection'
11
import EmptySection from '../../components/UI/EmptySection'
12
import AddCompanyModal from '../../components/modals/AddCompanyModal'
13
 
14
const MyCompanies = () => {
15
  const [companies, setCompanies] = useState([])
16
  const [loading, setLoading] = useState(true)
17
  const [search, setSearch] = useState('')
18
  const [showAddCompanyModal, setShowCompanyModal] = useState(false)
19
  const labels = useSelector(({ intl }) => intl.labels)
20
  const dispatch = useDispatch()
21
 
22
  const getMyCompanies = async (searchValue = '') => {
23
    setLoading(true)
24
    const response = await searchEntities('company/my-companies', searchValue)
25
 
26
    if (!response.success) {
27
      dispatch(addNotification({ style: 'danger', msg: response.data }))
28
      setLoading(false)
29
      return
30
    }
31
 
32
    setCompanies(response.data)
33
    setLoading(false)
34
  }
35
 
36
  const toggleShowCompanyModal = () => {
37
    setShowCompanyModal(!showAddCompanyModal)
38
  }
39
 
40
  const handleSearch = debounce((value) => setSearch(value), 500)
41
 
42
  useEffect(() => {
2072 stevensc 43
    getMyCompanies(search)
5 stevensc 44
  }, [search])
45
 
46
  return (
1215 stevensc 47
    <main className='companies-info container'>
5 stevensc 48
      <TitleSection
49
        title={labels.my_companies}
50
        onAdd={toggleShowCompanyModal}
2154 stevensc 51
        addLabel={`${labels.add} ${labels.company?.toLowerCase()}`}
5 stevensc 52
      />
2072 stevensc 53
 
5 stevensc 54
      <SearchBar onChange={handleSearch} />
2072 stevensc 55
 
5 stevensc 56
      {loading ? (
2154 stevensc 57
        <Spinner />
5 stevensc 58
      ) : (
1215 stevensc 59
        <ul className='companies-list'>
5 stevensc 60
          {companies.length ? (
61
            companies.map(({ id, link_my_company, ...rest }) => (
62
              <ProfileItem
63
                key={id}
64
                link_admin={link_my_company}
65
                btnAcceptTitle={labels.view_company}
66
                {...rest}
67
              />
68
            ))
69
          ) : (
70
            <EmptySection
1215 stevensc 71
              align='left'
5 stevensc 72
              message={labels.datatable_szerorecords}
73
            />
74
          )}
75
        </ul>
76
      )}
77
      <AddCompanyModal
78
        show={showAddCompanyModal}
79
        onHide={toggleShowCompanyModal}
80
        fetchCompanies={getMyCompanies}
81
      />
82
    </main>
83
  )
84
}
85
 
86
export default MyCompanies