package io.complyance.test;

import java.util.Collections;

import io.complyance.sdk.DocumentStatusResponse;
import io.complyance.sdk.Environment;
import io.complyance.sdk.GETSUnifySDK;
import io.complyance.sdk.SDKConfig;
import io.complyance.sdk.SDKException;

public class RetrievalStatusSample {
    // Enter retrieval IDs here (no command-line args needed)
    private static final String DOCUMENT_ID = "PASTE_DOCUMENT_ID_HERE";

    public static void main(String[] args) {
        try {
            configureSdk();

            if (!isPlaceholderOrEmpty(DOCUMENT_ID)) {
                DocumentStatusResponse byDocument = GETSUnifySDK.getDocumentStatus(DOCUMENT_ID);
                printStatus("DocumentId", byDocument);
            }

            if (isPlaceholderOrEmpty(DOCUMENT_ID)) {
                System.out.println("Please set DOCUMENT_ID constant in this file before running.");
            }
        } catch (SDKException e) {
            System.err.println("SDK error: " + e.getMessage());
            if (e.getErrorDetail() != null) {
                System.err.println("Error code: " + e.getErrorDetail().getCode());
                System.err.println("Suggestion: " + e.getErrorDetail().getSuggestion());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void configureSdk() {
        SDKConfig config = new SDKConfig(
                "ak_dfc7321146db8cfcf9cb35c539fa",
                Environment.SANDBOX,
                Collections.emptyList());

        GETSUnifySDK.configure(config);
    }

    private static void printStatus(String mode, DocumentStatusResponse response) {
        System.out.println("\n=== Retrieval By " + mode + " ===");
        System.out.println("success: " + response.isSuccess());
        System.out.println("message: " + response.getMessage());

        if (response.getData() == null) {
            System.out.println("No data returned");
            return;
        }

        DocumentStatusResponse.Data data = response.getData();
        System.out.println("submissionId: " + data.getSubmissionId());
        System.out.println("documentId: " + data.getDocumentId());
        System.out.println("state: " + data.getState());
        System.out.println("isTerminal: " + data.isTerminal());
        System.out.println("lastUpdatedAt: " + data.getLastUpdatedAt());

        if (data.getCompliance() != null) {
            System.out.println("compliance.uuid: " + data.getCompliance().getUuid());
            System.out.println("compliance.ftaApprovedStatus: " + data.getCompliance().getFtaApprovedStatus());
            System.out.println("compliance.businessProcessIdentifier: " + data.getCompliance().getBusinessProcessIdentifier());
            System.out.println("compliance.specificationIdentifier: " + data.getCompliance().getSpecificationIdentifier());
        }
    }

    private static boolean isPlaceholderOrEmpty(String value) {
        if (value == null) {
            return true;
        }
        String normalized = value.trim();
        return normalized.isEmpty()
                || "PASTE_DOCUMENT_ID_HERE".equals(normalized);
    }
}
