//
//  ScanbotSDKCapacitorPlugin.swift
//  Plugin
//
//  Copyright © 2024 Scanbot SDK GmbH. All rights reserved.
//
import Capacitor
import ScanbotSDKNativeWrapper

extension ScanbotSDKCapacitorPlugin {
  
  @objc func createDocumentFromImages(_ call: CAPPluginCall){
    SBDDocument.createScannedDocument(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func createDocumentFromLegacyPages( _ call: CAPPluginCall){
    SBDDocument.documentFromLegacyPages(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func createDocumentFromPdf( _ call: CAPPluginCall){
    SBDDocument.createScannedDocumentFromPDF(
      operationConfig: call.data,
      resultDelegate: call.delegate
    )
  }
  
  @objc func documentExists( _ call: CAPPluginCall){
    SBDDocument.documentExists(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func loadDocument( _ call: CAPPluginCall){
    SBDDocument.loadDocument(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func getStoredDocumentUuids( _ call: CAPPluginCall){
    SBDDocument.storedDocumentIDs(resultDelegate: call.delegate)
  }
  
  @objc func cloneDocument( _ call: CAPPluginCall){
    SBDDocument.cloneDocument(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func deleteDocument( _ call: CAPPluginCall){
    SBDDocument.deleteDocument(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func deleteAllDocuments( _ call: CAPPluginCall){
    SBDDocument.deleteAllDocuments(resultDelegate: ResultDelegate(call))
  }
  
  @objc func addPages( _ call: CAPPluginCall){
    SBDDocument.addPages(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func movePage( _ call: CAPPluginCall){
    SBDDocument.movePage(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func modifyPage( _ call: CAPPluginCall){
    SBDDocument.modifyPage(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func removePagesFromDocument( _ call: CAPPluginCall){
    SBDDocument.removePages(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func removeAllPages( _ call: CAPPluginCall){
    SBDDocument.removeAllPages(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func scanDocumentFromImage(_ call: CAPPluginCall) {
    SBDDocument.scanFromImage(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func analyzeDocumentQualityOnImage(_ call: CAPPluginCall) {
    SBDDocument.documentQualityAnalyzer(operationConfig: call.data, resultDelegate: call.delegate)
  }
  
  @objc func startDocumentScanner(_ call: CAPPluginCall){
    guard let parentVC = presentViewControllerOrReject(call) else {
      return
    }
    
    SBDDocument.startScanner(
      parentViewController: parentVC,
      configuration: call.data,
      resultDelegate: call.delegate
    )
  }
  
  @objc func startCroppingScreen( _ call: CAPPluginCall){
    guard let parentVC = presentViewControllerOrReject(call) else {
      return
    }
    
    SBDDocument.startCroppingScreen(
      parentViewController: parentVC,
      configuration: call.data,
      resultDelegate: call.delegate
    )
  }
  
}
