Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

Rev Autor Línea Nro. Línea
3572 stevensc 1
/* eslint-disable react/prop-types */
5182 stevensc 2
import React, { useEffect, useState } from 'react'
5225 stevensc 3
import { useDispatch } from 'react-redux'
4
import { addNotification } from '../../redux/notification/notification.actions'
2616 stevensc 5
import { axios } from '../../utils'
5182 stevensc 6
import CapsulesList from './CapsulesList'
5223 efrain 7
import RewardsList from './RewardsList'
1 www 8
 
5182 stevensc 9
const MarketPlace = () => {
10
  const [capsules, setCapsules] = useState([])
5223 efrain 11
  const [rewards, setRewards] = useState([])
5182 stevensc 12
  const [categories, setCategories] = useState([])
5225 stevensc 13
  const [searchParams, setSearchParams] = useState({ search: '', category: 'rewards' })
14
  const dispatch = useDispatch()
2620 stevensc 15
 
5182 stevensc 16
  const handleChange = ({ target }) => setSearchParams({ ...searchParams, [target.name]: target.value })
1 www 17
 
5182 stevensc 18
  const load = async (_search = searchParams.search, _entity = searchParams.category) => {
19
    try {
5225 stevensc 20
      const { data: response } = await axios.get('/marketplace?search=' + _search + '&entity=' + _entity)
21
 
22
      if (!response.success) {
23
        dispatch(addNotification({ style: 'danger', msg: response.data }))
24
        return
5223 efrain 25
      }
5225 stevensc 26
 
27
      if (_entity === 'capsules') {
28
        setCapsules(response.data)
5223 efrain 29
      }
5225 stevensc 30
      if (_entity === 'rewards') {
31
        setRewards(response.data)
32
      }
5182 stevensc 33
    } catch (error) {
34
      console.log('>>: error > ', error)
3753 stevensc 35
    }
5182 stevensc 36
  }
3753 stevensc 37
 
5182 stevensc 38
  const getCategories = async () => {
39
    const categories = await axios.get('/marketplace/categories')
40
    if (categories.data.data) {
41
      const _categories = Object.keys(categories.data.data).map(element => {
42
        return {
43
          label: categories.data.data[element],
44
          value: element
1 www 45
        }
5182 stevensc 46
      })
47
      setCategories(_categories)
1 www 48
    }
5182 stevensc 49
  }
3753 stevensc 50
 
5182 stevensc 51
  const checkParams = () => {
52
    const url = window.location.href
53
    const hasEntity = url.includes('?entity=')
54
    if (hasEntity) {
55
      const value = url.split('?entity=')[1]
56
      if (value) { setSearchParams({ ...searchParams, category: value }) }
1 www 57
    }
5182 stevensc 58
  }
3753 stevensc 59
 
5182 stevensc 60
  useEffect(() => {
61
    getCategories()
62
    checkParams()
63
  }, [])
3753 stevensc 64
 
5182 stevensc 65
  useEffect(() => {
66
    load(searchParams.search, searchParams.category)
67
  }, [searchParams])
1 www 68
 
5182 stevensc 69
  return (
5225 stevensc 70
    <section className="companies-info container">
71
      <div className="market_admin_title_buttons">
72
        <div className="form-group search_input">
73
          <input
74
            type="text"
75
            name="search"
76
            className="form-control"
77
            onChange={e => handleChange(e)}
78
            value={searchParams.search}
79
          />
80
          <button className='search-btn'>{LABELS.SEARCH}</button>
81
        </div>
82
        <div className="form-group search_categories">
83
          <select
84
            name="category"
85
            className="form-control"
86
            value={searchParams.category}
87
            onChange={e => handleChange(e)}
88
          >
89
            <option value="">{LABELS.SELECT_CATEGORY}</option>
90
            {categories.map((element, i) =>
91
              <option value={element.value} key={i}>{element.label}</option>
92
            )}
93
          </select>
94
        </div>
95
      </div>
96
        <CapsulesList
97
        capsules={searchParams.category === 'capsules' ? capsules : rewards}
98
        onEnroll={load}
99
 
100
        />
101
    </section>
5182 stevensc 102
  )
3572 stevensc 103
}
104
 
5182 stevensc 105
export default MarketPlace