import sys
sys.path.append(".")
from tests.utils import login, make_sbt_request, get_field
import os
import logging

HOST = os.environ.get("IDP_HOST", "XXXXXXXXXXXXXXXXXXXXX")
USERNAME = os.environ.get("IDP_USERNAME", "XXXXXXXXXXXXXXXXXXXXX")
PASSWORD = os.environ.get("IDP_PASSWORD", "XXXXXXXXXXXXXXXXXXXXX")
token = login(HOST, USERNAME, PASSWORD)


def check_invoice_data(document):
    assert document["doc_type"] == "sbt_document"
    assert get_field(document, "retailername") == "Arrow Communication"
    assert get_field(document, "sold_to_party") is None
    assert "2021-02-09" in get_field(document, "purchase_date")

def check_invoice_data_2(document):
    assert document["doc_type"] == "sbt_document"
    assert get_field(document, "retailername") == "Starhub Shop"
    assert get_field(document, "sold_to_party") is None
    assert "2022-02-22" in get_field(document, "purchase_date")

def test_1_invoice_1_imei():
    invoice_files = [
        "test_samples/sbt/invoice.jpg"
    ]
    imei_files = [
        "test_samples/sbt/imei1.jpg"
    ]
    data = make_sbt_request(host=HOST, token=token, invoice_files=invoice_files, imei_files=imei_files)

    data = data["data"]["data"]
    assert data["total_pages"] == 2
    assert data["ocr_num_pages"] == 2
    assert data["status"] == 200

    document = data["document"][0]
    assert document["end_page"] == 2
    assert document["start_page"] == 1
    check_invoice_data(document)

    assert "358975990917032" == get_field(document, "imei_number")[0]


def test_1_invoice_3_imei():
    invoice_files = [
        "test_samples/sbt/invoice.jpg"
    ]
    imei_files = [
        "test_samples/sbt/imei1.jpg",
        "test_samples/sbt/imei2.jpg",
        "test_samples/sbt/imei3.jpg"
    ]
    data = make_sbt_request(host=HOST, token=token, invoice_files=invoice_files, imei_files=imei_files)

    data = data["data"]["data"]
    assert data["total_pages"] == 4
    assert data["ocr_num_pages"] == 4
    assert data["status"] == 200

    document = data["document"][0]
    assert document["end_page"] == 4
    assert document["start_page"] == 1
    check_invoice_data(document)

    assert 3 == len(get_field(document, "imei_number"))
    assert "358975990917032" == get_field(document, "imei_number")[0]
    assert "350731691693549" == get_field(document, "imei_number")[1]
    assert "R52W70BHDWX" == get_field(document, "imei_number")[2]


def test_1_invoice_5_imei():
    invoice_files = [
        "test_samples/sbt/invoice.jpg"
    ]
    imei_files = [
        "test_samples/sbt/imei1.jpg",
        "test_samples/sbt/imei2.jpg",
        "test_samples/sbt/imei3.jpg",
        "test_samples/sbt/imei4.jpeg",
        "test_samples/sbt/imei5.jpg"
    ]
    data = make_sbt_request(host=HOST, token=token, invoice_files=invoice_files, imei_files=imei_files)

    data = data["data"]["data"]
    assert data["total_pages"] == 6
    assert data["ocr_num_pages"] == 6
    assert data["status"] == 200

    document = data["document"][0]
    assert document["end_page"] == 6
    assert document["start_page"] == 1
    check_invoice_data(document)

    assert 5 == len(get_field(document, "imei_number"))
    assert "358975990917032" == get_field(document, "imei_number")[0]
    assert "350731691693549" == get_field(document, "imei_number")[1]
    assert "R52W70BHDWX" == get_field(document, "imei_number")[2]
    assert "350073345090297" == get_field(document, "imei_number")[3]
    assert "0PBL3NHW500023N" == get_field(document, "imei_number")[4]


def test_0_invoice_3_imei():
    invoice_files = []
    imei_files = [
        "test_samples/sbt/imei1.jpg",
        "test_samples/sbt/imei2.jpg",
        "test_samples/sbt/imei3.jpg"
    ]
    data = make_sbt_request(host=HOST, token=token, invoice_files=invoice_files, imei_files=imei_files)

    data = data["data"]["data"]
    assert data["total_pages"] == 3
    assert data["ocr_num_pages"] == 3
    assert data["status"] == 200

    document = data["document"][0]
    assert document["end_page"] == 3
    assert document["start_page"] == 1

    assert 3 == len(get_field(document, "imei_number"))
    assert "358975990917032" == get_field(document, "imei_number")[0]
    assert "350731691693549" == get_field(document, "imei_number")[1]
    assert "R52W70BHDWX" == get_field(document, "imei_number")[2]


def test_1_invoice_pdf_1_imei():
    invoice_files = [
        "test_samples/sbt/20220303025923NHNE_20220222_Starhub_Order_Confirmation_by_Email.pdf"
    ]
    imei_files = [
        "test_samples/sbt/imei1.jpg"
    ]
    data = make_sbt_request(host=HOST, token=token, invoice_files=invoice_files, imei_files=imei_files)

    data = data["data"]["data"]
    assert data["total_pages"] == 2
    assert data["ocr_num_pages"] == 2
    assert data["status"] == 200

    document = data["document"][0]
    assert document["end_page"] == 2
    assert document["start_page"] == 1
    check_invoice_data_2(document)

    assert "358975990917032" == get_field(document, "imei_number")[0]