#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Tukar tanggal (perintah Bos 5 Okt): carousel 10 slide "Mitos atau Fakta" -> 12 Okt,
poster seri lama "Penyitaan Barang" (tslaw_mitos_fakta_07) kembali ke 10 Okt.

Urutan eksekusi: carousel DIKELUARKAN dulu dari 10 Okt (ke 12 Okt), baru poster dikembalikan
ke 10 Okt — supaya tidak ada dua post di jam yang sama dalam satu akun di sela-sela proses.

Jam tetap: Threads 09:00 WIB (02:00Z) · IG 11:00 WIB (04:00Z) · FB 19:30 WIB (12:30Z).
Carousel (album) di IG & Threads pakai 09:00 WIB sesuai aturan carousel.
Repliz: PATCH 404 -> PUT payload lengkap. Dry run default; eksekusi --go.
"""
import json
import sys
import urllib.request

sys.path.insert(0, "/home/mantapman/.hermes/profiles/atun/workspace")
from repliz_client import HEADERS, BASE

THREADS = "6a35f8b7c5ff4ce3a322b2ed"
IG = "6a76a54d62caae1e04f30968"
FB = "6a3b41d1c5ff4ce3a32753e8"

CAROUSEL_IDS = [x["id"] for x in json.load(open("/tmp/tslaw_mitos10_ids.json"))]
POSTER_IDS = ["6ab10f373032e3a79cf452d8", "6ab10b463032e3a79cf2e95e", "6ab10f3702078a414ace923a"]

TUJUAN = {
    "carousel": {THREADS: "2026-10-12T02:00:00.000Z", IG: "2026-10-12T02:00:00.000Z",
                 FB: "2026-10-12T12:30:00.000Z"},
    "poster":   {THREADS: "2026-10-10T02:00:00.000Z", IG: "2026-10-10T04:00:00.000Z",
                 FB: "2026-10-10T12:30:00.000Z"},
}
NAMA = {"carousel": "Carousel Mitos atau Fakta (10 slide)", "poster": "Poster Penyitaan Barang"}
go = "--go" in sys.argv


def get(id_):
    req = urllib.request.Request(f"{BASE}/public/schedule/{id_}", headers=HEADERS)
    with urllib.request.urlopen(req, timeout=60) as r:
        d = json.load(r)
    return d.get("doc") or d


def put(id_, payload):
    req = urllib.request.Request(f"{BASE}/public/schedule/{id_}", method="PUT",
                                 data=json.dumps(payload).encode(),
                                 headers={**HEADERS, "Content-Type": "application/json"})
    with urllib.request.urlopen(req, timeout=60) as r:
        return r.status


def geser(grup, id_):
    doc = get(id_)
    acc = doc.get("accountId")
    baru = TUJUAN[grup][acc]
    print(f"[{grup}] {id_} | acc={acc} | {doc.get('scheduleAt')} -> {baru} | {NAMA[grup]}")
    if not go:
        return
    st = put(id_, {
        "accountId": acc,
        "title": doc.get("title"),
        "description": doc.get("description") or "",
        "topic": doc.get("topic") or "Edukasi Hukum",
        "type": doc.get("type") or "image",
        "medias": doc.get("medias") or [],
        "scheduleAt": baru,
        "replies": doc.get("replies") or [],
    })
    cek = get(id_)
    print(f"    PUT={st} -> {cek.get('scheduleAt')} | status={cek.get('status')} | "
          f"type={cek.get('type')} | media={len(cek.get('medias') or [])}")


for id_ in CAROUSEL_IDS:      # 1) keluar dari 10 Okt
    geser("carousel", id_)
for id_ in POSTER_IDS:        # 2) poster kembali ke 10 Okt
    geser("poster", id_)

if not go:
    print("\n(dry run — tambahkan --go)")
