import type {
  CreateNachhilfeangebotMutation,
  CreateNachhilfeangebotInput,
  CreateNachhilfeangebotMutationVariables,
} from 'types/graphql'

import { navigate, routes } from '@redwoodjs/router'
import { useMutation } from '@redwoodjs/web'
import type { TypedDocumentNode } from '@redwoodjs/web'
import { toast } from '@redwoodjs/web/toast'

import NachhilfeangebotForm from 'src/components/Nachhilfeangebot/NachhilfeangebotForm'

const CREATE_NACHHILFEANGEBOT_MUTATION: TypedDocumentNode<
  CreateNachhilfeangebotMutation,
  CreateNachhilfeangebotMutationVariables
> = gql`
  mutation CreateNachhilfeangebotMutation(
    $input: CreateNachhilfeangebotInput!
  ) {
    createNachhilfeangebot(input: $input) {
      id
    }
  }
`

const NewNachhilfeangebot = () => {
  const [createNachhilfeangebot, { loading, error }] = useMutation(
    CREATE_NACHHILFEANGEBOT_MUTATION,
    {
      onCompleted: () => {
        toast.success('Nachhilfeangebot created')
        navigate(routes.nachhilfeangebote())
      },
      onError: (error) => {
        toast.error(error.message)
      },
    }
  )

  const onSave = (input: CreateNachhilfeangebotInput) => {
    createNachhilfeangebot({ variables: { input } })
  }

  return (
    <div className="rw-segment">
      <header className="rw-segment-header">
        <h2 className="rw-heading rw-heading-secondary">
          New Nachhilfeangebot
        </h2>
      </header>
      <div className="rw-segment-main">
        <NachhilfeangebotForm onSave={onSave} loading={loading} error={error} />
      </div>
    </div>
  )
}

export default NewNachhilfeangebot
