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

import time

#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")