import {Button, Tooltip} from 'antd'
import { useState } from "react"
import {invokeWebApiWrapperAsync, download} from '../../components/factory'
import DocumentsTemplate from './DocumentsTemplate'
import LoaderPortal from '../../components/LoaderPortal'

const idFileCategoryDrillingProgramItems = 13;

export default function DrillingProgram({idWell}) {
  const [downloadButtonEnabled, selDownloadButtonEnabled] = useState(false)
  const [showLoader, setShowLoader] = useState(false)
  const [tooltip, setTooltip] = useState('нет файлов для формирования')
  
  const urlDownloadProgram =`/api/well/${idWell}/drillingProgram`

  const downloadProgram = () => invokeWebApiWrapperAsync(async()=>{
    await download(urlDownloadProgram)
  }, 
  setShowLoader,
  "Не удалось загрузить программу бурения")

  const filesUpdated = (files) =>{
    if(!files || files.length === 0){
      setTooltip('Нет файлов для формирования программы')
      selDownloadButtonEnabled(false)
      return
    }
    
    if(files.every(fileInfo => fileInfo?.name.endsWith('.xlsx'))){
      setTooltip('Программа доступна для скачивания')
      selDownloadButtonEnabled(true)
    }
    else{
      setTooltip('Список файлов содержит недопустимые типы файлов')
    }
  }

  const downloadButton = <div>
    <span>Программа бурения</span>
    <div>
      <Tooltip title={tooltip}>
        <Button 
          onClick={downloadProgram}
          disabled={!downloadButtonEnabled}>
          Сформировать и скачать
        </Button>
      </Tooltip>
    </div>
  </div>

  return(<LoaderPortal show={showLoader}>
      <DocumentsTemplate
        idWell={idWell}
        idCategory={idFileCategoryDrillingProgramItems}
        accept='.xlsx'
        headerChild={downloadButton}
        onChange={filesUpdated} />
    </LoaderPortal>)
}