import json
import time
# раскомментировать, когда перейдем на разные пароли
from datetime import datetime

import xmpp

# test
import jsonAndRequest as jsreq


def proceed_status(self, recipient, ticket):
    # тут могут быть различные проверки дополнительные, а так вообще эта функция нужна для передачи заявки на обработку следующему
    jsonTicket = json.dumps(ticket.__dict__)
    self.conn.send(xmpp.Message(recipient, jsonTicket))
    self.bot_log("Message sent successfully" + " " + recipient + " " + jsonTicket)


# обработчик входящих сообщений
def message_handler(self, conn, mess):
    text = mess.getBody()  # текст сообщения боту
    user = mess.getFrom()  # отправитель сообщения

    # проверка на возможность получения сообщений от данного обработчика
    print(str(user).split("/")[0])
    if (str(user).split("/")[0]) in listen_to:
        print(text)
        print(mess)

        if text is not None:
            orderObj = jsreq.jsonToOrderTicket(text)
            print(orderObj)
            tasklist.append(orderObj)
            self.bot_log(str(datetime.now()) + " Поступивший заказ успешно добавлен в очередь обработки\n")


# TODO - для обработчиков Ticket скорее надо будет функции вынести в отдельную библиотеку, они типовые же
def pending_wait(self, period, localtask, proceed_to):
    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ ожидает пользовательской реакции\n")
    time.sleep(period)

    # ВАЖНО! НАДО ВСТАВИТЬ ИЗМЕНЕНИЕ СТАТУСА ЧЕРЕЗ API

    # обязательно данный обработчик должен заканчиваться передачей заказа куда-то на обработку дальше - обратно или другому, иначе оно потеряется
    self.proceed_status(proceed_to, localtask)
    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ отправлен в очередь " + proceed_to + "\n")


def order_close(self, localtask):
    # тут надо вызов API с удалением
    self.bot_log(botname + " " + str(datetime.now()) + " " + "Заказ удален\n")
