from datetime import datetime
import pytz
import random

def makePayload(cnpj_client, terminal_code):
    notes = makeDepositValues()
    
    return {
        "cycle": 0,
        "client_id": cnpj_client,
        "terminal_id": terminal_code,
        "movementtype_id": 1,
        "deposittype_id": 1,
        "user_id": 1,
        "emission": makeDataEmission(),
        "value": notes[2] + notes[3],
        "envelope": "0.00",
        "envelopequantity": "0",
        "notes2": notes[0]["notes2"],
        "notes5": notes[0]["notes5"],
        "notes10": notes[0]["notes10"],
        "notes20": notes[0]["notes20"],
        "notes50": notes[0]["notes50"],
        "notes100": notes[0]["notes100"],
        "notes200": notes[0]["notes200"],
        "coinsvalue": "0",
        "coin1c": "0",
        "coin5c": "0",
        "coin10c": "0",
        "coin25c": "0",
        "coin50c": "0",
        "coin1": "0",
        "recvalue": notes[3],
        "recnotes2": notes[1]['recnotes2'],
        "recnotes5": notes[1]['recnotes5'],
        "recnotes10": notes[1]['recnotes10'],
        "recnotes20": notes[1]['recnotes20'],
        "recnotes50": notes[1]['recnotes50'],
        "recnotes100": 0,
        "recnotes200": 0
    }

def makeDataEmission():
    fuso_horario = pytz.timezone("America/Sao_Paulo")
    data_atual = datetime.now(fuso_horario)
    return data_atual.strftime("%Y-%m-%d %H:%M:%S")

def makeDepositValues():
    k7notes = {
        "notes2":   random.choice(range(0, 3)),
        "notes5":   random.choice(range(0, 3)),
        "notes10":  random.choice(range(0, 3)),
        "notes20":  random.choice(range(0, 3)),
        "notes50":  random.choice(range(0, 2)),
        "notes100": random.choice(range(0, 1)),
        "notes200": random.choice(range(0, 1))
    }

    recnotes = {
        "recnotes2":    random.choice(range(0, 2)),
        "recnotes5":    random.choice(range(0, 1)),
        "recnotes10":   random.choice(range(0, 1)),
        "recnotes20":   random.choice(range(0, 1)),
        "recnotes50":   random.choice(range(0, 1)),
        "recnotes100":  0,
        "recnotes200":  0
    }

    totalValues = makeTotalValueDeposit(k7notes, recnotes)
    return k7notes, recnotes, totalValues[0], totalValues[1]

def makeTotalValueDeposit(k7notes, recnotes):
    total_k7_value = sum([
        k7notes["notes2"] * 2,
        k7notes["notes5"] * 5,
        k7notes["notes10"] * 10,
        k7notes["notes20"] * 20,
        k7notes["notes50"] * 50,
        k7notes["notes100"] * 100,
        k7notes["notes200"] * 200
    ])

    total_recnote_value = sum([
        recnotes["recnotes2"] * 2,
        recnotes["recnotes5"] * 5,
        recnotes["recnotes10"] * 10,
        recnotes["recnotes20"] * 20,
        recnotes["recnotes50"] * 50,
        recnotes["recnotes100"] * 100,
        recnotes["recnotes200"] * 200
    ])

    return total_k7_value, total_recnote_value