Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1804 stevensc 1
import React from 'react'
2614 stevensc 2
import { useNavigate } from 'react-router-dom'
2827 stevensc 3
import { Avatar, Button, Typography } from '@mui/material'
1804 stevensc 4
import { useDispatch } from 'react-redux'
5
import parse from 'html-react-parser'
5 stevensc 6
 
1804 stevensc 7
import { axios } from '@app/utils'
8
import { addNotification } from '@app/redux/notification/notification.actions'
9
 
2827 stevensc 10
import Widget from '@components/UI/Widget'
1804 stevensc 11
 
5 stevensc 12
const CompanyActions = ({
1808 stevensc 13
  cover = '',
14
  name = '',
15
  image = '',
16
  actionLinks = {},
17
  overview = '',
18
  refetch = () => {}
5 stevensc 19
}) => {
1807 stevensc 20
  const {
21
    link_contact,
22
    link_unfollow,
23
    link_follow,
24
    link_request,
25
    link_accept,
26
    link_cancel,
27
    link_reject,
28
    link_leave
29
  } = actionLinks
1804 stevensc 30
  const dispatch = useDispatch()
2614 stevensc 31
  const navigate = useNavigate()
5 stevensc 32
 
33
  const handleButtonAction = async (link) => {
1804 stevensc 34
    const { data: response } = await axios.post(link)
5 stevensc 35
    if (response.success) {
1804 stevensc 36
      dispatch(addNotification({ style: 'success', msg: response.data }))
37
      refetch()
5 stevensc 38
    } else {
39
      dispatch(
1804 stevensc 40
        addNotification({ style: 'danger', msg: 'ha ocurrido un error' })
41
      )
5 stevensc 42
    }
1804 stevensc 43
  }
5 stevensc 44
 
45
  return (
2827 stevensc 46
    <Widget>
47
      <Widget.Media height={150} src={cover} />
48
 
49
      <Widget.Body>
1808 stevensc 50
        <Avatar
51
          src={image}
52
          alt={name}
53
          sx={{ mt: '-40px', width: '80px', height: '80px' }}
54
        />
1807 stevensc 55
        <Typography variant='h2'>{name}</Typography>
56
        <Typography variant='body1'>{parse(overview ?? '')}</Typography>
2827 stevensc 57
      </Widget.Body>
58
 
59
      <Widget.Actions>
1807 stevensc 60
        {link_contact && (
2614 stevensc 61
          <Button variant='primary' onClick={() => navigate(link_contact)}>
1807 stevensc 62
            Mensaje
63
          </Button>
64
        )}
65
        {link_unfollow && (
66
          <Button
67
            variant='secondary'
68
            onClick={() => handleButtonAction(link_unfollow)}
69
          >
70
            Dejar de seguir
71
          </Button>
72
        )}
73
        {link_follow && (
74
          <Button
75
            variant='primary'
76
            onClick={() => handleButtonAction(link_follow)}
77
          >
78
            Seguir
79
          </Button>
80
        )}
81
        {link_request && link_unfollow && (
82
          <Button
83
            variant='secondary'
84
            onClick={() => handleButtonAction(link_request)}
85
          >
86
            ¿Trabaja en esta empresa?
87
          </Button>
88
        )}
89
        {link_accept && (
90
          <Button
91
            variant='primary'
92
            onClick={() => handleButtonAction(link_accept)}
93
          >
94
            Aceptar
95
          </Button>
96
        )}
97
        {link_cancel && (
98
          <Button
99
            variant='tertiary'
100
            onClick={() => handleButtonAction(link_cancel)}
101
          >
102
            Cancelar
103
          </Button>
104
        )}
105
        {link_reject && (
106
          <Button
107
            variant='tertiary'
108
            onClick={() => handleButtonAction(link_reject)}
109
          >
110
            Rechazar
111
          </Button>
112
        )}
113
        {link_leave && (
114
          <Button
115
            variant='secondary'
116
            onClick={() => handleButtonAction(link_leave)}
117
          >
118
            Abandonar esta empresa
119
          </Button>
120
        )}
2827 stevensc 121
      </Widget.Actions>
122
    </Widget>
1804 stevensc 123
  )
124
}
5 stevensc 125
 
1804 stevensc 126
export default CompanyActions