import { navigate, routes } from '@redwoodjs/router'

import { useMutation } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'

import ArtikelForm from 'src/components/Artikel/ArtikelForm'

export const QUERY = gql`
  query EditArtikelById($id: Int!) {
    artikel: artikel(id: $id) {
      id
      name
      preis
      kategorie_id
    },
    kategories: kategories {
      id
      name
    }
  }
`
const UPDATE_ARTIKEL_MUTATION = gql`
  mutation UpdateArtikelMutation($id: Int!, $input: UpdateArtikelInput!) {
    updateArtikel(id: $id, input: $input) {
      id
      name
      preis
      kategorie_id
    }
  }
`

export const Loading = () => <div>Loading...</div>

export const Failure = ({ error }) => (
  <div className="rw-cell-error">{error?.message}</div>
)

export const Success = ({ artikel, kategories }) => {
  const [updateArtikel, { loading, error }] = useMutation(
    UPDATE_ARTIKEL_MUTATION,
    {
      onCompleted: () => {
        toast.success('Artikel updated')
        navigate(routes.artikels())
      },
      onError: (error) => {
        toast.error(error.message)
      },
    }
  )

  const onSave = (input, id) => {
    updateArtikel({ variables: { id, input } })
  }

  return (
    <div className="rw-segment">
      <header className="rw-segment-header">
        <h2 className="rw-heading rw-heading-secondary">
          Edit Artikel {artikel?.id}
        </h2>
      </header>
      <div className="rw-segment-main">
        <ArtikelForm
          artikel={artikel}
          kategories={kategories}
          onSave={onSave}
          error={error}
          loading={loading}
        />
      </div>
    </div>
  )
}
