# Přihlašovací údaje
username = 'eupo5s'
password = 'Michalka25+'
schrankaid='bk7e6j2'

from zeep import Client
from zeep.wsse.username import UsernameToken
import time
import os
import base64

# Přihlašovací údaje
USERNAME = 'eupo5s'
PASSWORD = 'Michalka25+'
WSDL_URL = 'https://..../ds.wsdl'  # upravit dle prostředí

# Inicializace klienta
client = Client(wsdl=WSDL_URL, wsse=UsernameToken(USERNAME, PASSWORD))

# Kontrola přihlášení
try:
    owner_info = client.service.GetOwnerInfoFromLogin()
except Exception as e:
    print(f"Chyba přihlášení: {e}")
    exit(1)

# Zobrazení základních údajů o přihlášeném účtu
print("Přihlášen jako:", owner_info.dbID, owner_info.firmName)

# Vytvoření adresáře pro testovací soubory
out_dir = os.path.abspath('test_isds_py')
os.makedirs(out_dir, exist_ok=True)

# Vytvoření a odeslání testovacích zpráv
filenames = []
for i, text in enumerate(["První testovací soubor", "Druhý testovací soubor"], 1):
    fn = os.path.join(out_dir, f"TESTISDS_{i}.txt")
    with open(fn, 'w', encoding='utf-8') as f:
        f.write(text)
    filenames.append(fn)

# Nahraj přílohy
files_struct = []
for fn in filenames:
    with open(fn, "rb") as f:
        data = base64.b64encode(f.read()).decode('ascii')
    files_struct.append({
        'dmFileDescr': os.path.basename(fn),
        'dmMimeType': 'text/plain',
        'dmEncodedContent': data,
    })

# Vytvoření a odeslání zprávy (parametry uprav podle vlastního scénáře!)
msg_id = client.service.CreateMessage(
    senderDBID=None,
    subject="Testovaci zasilka z Pythonu",
    isUrgent=False,
    senderOrgUnitCode=None,
    # níže: příjemce
    dbIDRecipient="231",
    recipientFirmName="Nase org jednotka",
    recipientOrgUnitNum=-1,
    recipientOrgUnitName="ncj. 589",
    receiverPersonCode=None,
    toHands="K rukam p.Novaka",
    deepAttachments=files_struct
)

print("MessageID:", msg_id)

# Chvíle čekání
time.sleep(5)

# Stažení přijatých zpráv v intervalu
records = client.service.GetListOfReceivedMessages(
    startTime="2009-11-01T00:00:00",
    endTime="2010-10-01T00:00:00",
    recNo=0,
    maxRec=100,
    recordType=1023,
    customFilter=None
)

for rec in records.dmRecord:
    print(f"ID zasilky: {rec.dmID}, odesilatel: {rec.dmSender}")
    received_id = rec.dmID
    break

# Stažení jedné zprávy
msg = client.service.MessageDownload(received_id)
print("Stažená zpráva:", msg.dmDm.dmID)

# Uložení souborů
for file in msg.dmDm.dmFiles.dmFile:
    content = base64.b64decode(file.dmEncodedContent)
    path = os.path.join(out_dir, file.dmFileDescr)
    with open(path, 'wb') as f:
        f.write(content)
    print("Uloženo:", path)

# Označení jako stáhnuto
client.service.MarkMessageAsDownloaded(received_id)
print("Označeno jako přečtené")

# Můžeme pokračovat implementací dalších funkcí: GetDeliveryInfo, SignedMessageDownloadToFile, GetListOfSentMessages, FindDataBox, CheckDataBox…
