Skip to content
Snippets Groups Projects
PartnersIssue.tsx 3.26 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { FormControlLabel, FormGroup, Switch } from '@mui/material'
    import { Link } from 'react-router-dom'
    import { getAxiosXSRFHeader } from '../../axios.config'
    import { useCustomPopup } from '../../hooks/useCustomPopup'
    import { usePartnersIssue } from '../../hooks/usePartnersIssue'
    import { useWhoAmI } from '../../hooks/useWhoAmI'
    import Loader from '../Loader/Loader'
    import { links } from '../Routes/Router'
    import './popups.scss'
    
    import { PopupWrapper } from './Wrapper'
    
    
    export const PartnersIssue = () => {
      const { data: user } = useWhoAmI()
      const { partnersIssue, savePartnersIssue } = usePartnersIssue()
      const { customPopup } = useCustomPopup()
    
      const isCustomPopupEnabled = customPopup.data?.popupEnabled
    
      const handlePartnerIssue = (
        value: boolean,
        type: 'enedis_failure' | 'egl_failure' | 'grdf_failure'
      ) => {
        if (partnersIssue.data && user) {
          const updatedNotification = {
            egl_failure: partnersIssue.data.egl_failure,
            enedis_failure: partnersIssue.data.enedis_failure,
            grdf_failure: partnersIssue.data.grdf_failure,
            [type]: value,
          }
    
          savePartnersIssue(
            {
              ...partnersIssue.data,
              [type]: value,
              notification_activated: Object.values(updatedNotification).some(
                v => v
              ),
            },
            getAxiosXSRFHeader(user.xsrftoken)
          )
        }
      }
    
    
      if (partnersIssue.isLoading) {
        return <Loader />
      }
    
      if (partnersIssue.error) {
        return <p>Une erreur est survenue</p>
      }
    
      if (partnersIssue.data) {
        return (
          <PopupWrapper>
            <h3>Affichage des pop-up de panne</h3>
    
            <p>Services concernés</p>
            <FormGroup style={{ flexDirection: 'row' }}>
              <FormControlLabel
                label={'Panne Enedis'}
                labelPlacement="top"
                control={
                  <Switch
                    disabled={isCustomPopupEnabled}
                    checked={partnersIssue.data.enedis_failure}
                    onChange={event => {
                      handlePartnerIssue(event.target.checked, 'enedis_failure')
                    }}
                  />
                }
              />
              <FormControlLabel
                label={'Panne EGL'}
                labelPlacement="top"
                control={
                  <Switch
                    disabled={isCustomPopupEnabled}
                    checked={partnersIssue.data.egl_failure}
                    onChange={event => {
                      handlePartnerIssue(event.target.checked, 'egl_failure')
                    }}
                  />
                }
              />
              <FormControlLabel
                label={'Panne GRDF'}
                labelPlacement="top"
                control={
                  <Switch
                    disabled={isCustomPopupEnabled}
                    checked={partnersIssue.data.grdf_failure}
                    onChange={event => {
                      handlePartnerIssue(event.target.checked, 'grdf_failure')
                    }}
                  />
                }
              />
            </FormGroup>
    
            {isCustomPopupEnabled && (
              <p className="singlePopupWarning">
                La pop-up maintenance des partenaires ne peut pas être activée en
                même temps que la{' '}
                <Link to={links.customPopup.path}>pop-up personnalisée</Link>
              </p>
            )}
          </PopupWrapper>
        )
      }