You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.8 KiB
Swift
83 lines
2.8 KiB
Swift
//
|
|
// ConsentViewController.swift
|
|
// RK-Journals
|
|
//
|
|
// Created by Juan David Lopez Regalado on 11/11/24.
|
|
//
|
|
|
|
import UIKit
|
|
import ResearchKitUI
|
|
|
|
class ConsentViewController: UIViewController, ORKTaskViewControllerDelegate {
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// Do any additional setup after loading the view.
|
|
}
|
|
|
|
@IBAction func joinButtonTapped(_ sender: UIButton) {
|
|
let taskViewController = ORKTaskViewController(task: ConsentTask, taskRun: nil)
|
|
taskViewController.delegate = self
|
|
taskViewController.modalPresentationStyle = .fullScreen
|
|
present(taskViewController, animated: true, completion: nil)
|
|
}
|
|
|
|
func taskViewController(_ taskViewController: ORKTaskViewController, didFinishWith reason: ORKTaskFinishReason, error: Error?) {
|
|
|
|
switch reason {
|
|
case .completed:
|
|
// Obtener el resultado de la firma
|
|
guard let signatureResult = taskViewController.result.stepResult(forStepIdentifier: "ConsentReviewStep")?.firstResult as? ORKConsentSignatureResult else {
|
|
print("No se pudo obtener el resultado de la firma.")
|
|
return
|
|
}
|
|
|
|
// Crear una copia del documento de consentimiento
|
|
let consentDocument = ConsentDocument.copy() as! ORKConsentDocument
|
|
signatureResult.apply(to: consentDocument)
|
|
|
|
// Generar el PDF
|
|
consentDocument.makePDF { (data, error) in
|
|
if let error = error {
|
|
print("Error al crear PDF: \(error.localizedDescription)")
|
|
return
|
|
}
|
|
|
|
guard let data = data else {
|
|
print("No se generó ningún dato para el PDF.")
|
|
return
|
|
}
|
|
|
|
// Guardar el PDF en el directorio de documentos
|
|
do {
|
|
var docURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last
|
|
docURL = docURL?.appendingPathComponent("consent.pdf")
|
|
try data.write(to: docURL!, options: .atomicWrite)
|
|
print("PDF guardado en: \(docURL!.path)")
|
|
} catch {
|
|
print("Error al guardar el PDF: \(error.localizedDescription)")
|
|
}
|
|
}
|
|
|
|
// Realizar la transición al siguiente controlador
|
|
performSegue(withIdentifier: "unwindToTasks", sender: nil)
|
|
|
|
case .discarded, .failed, .saved:
|
|
dismiss(animated: true, completion: nil)
|
|
|
|
case .earlyTermination:
|
|
dismiss(animated: true, completion: nil)
|
|
|
|
@unknown default:
|
|
// Manejar casos no contemplados
|
|
dismiss(animated: true, completion: nil)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|