def clear_item(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": delete " + message.text)

    db = SQLighter(config.database_name)
    db.delete_request(uid, message.text)
    text = db.get_messages('Оплата')[0].format(message.text) + "\n"

    total = 0
    reqs = db.get_requests(uid)

    if len(reqs) == 0:
        text = db.get_messages('recycle_empty')[0]
        step[uid]['path'].pop()
        step[uid]['cur'] = step[uid]['path'][-1]
        m = markup(db, step[uid]['cur'])
    else:
        for i in reqs:
            if len(i) >= 3:
                text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                total += int(i[1]) * int(i[2])
        text += "\nВсего: {} сум".format(total)
        m = markup(db, step[uid]['cur'], uid)
    db.close()
    bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
def step_start(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    # print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    start_btns = db.get_buttons(step[uid]['cur'])

    # отрезаем смайл
    t = ''
    if len(message.text.split(' ')) > 2:
        for i in message.text.split(' ')[1:]:
            t += i + ' '
        t = t[:-1]
    else:
        t = message.text.split(' ')[-1]
    fucking_flag = 0
    for button in start_btns:
        if t is not None and t == button:
            fucking_flag = 1
            step[uid]['cur'] = button
            step[uid]['path'].append(step[uid]['cur'])
            break

    msgs = db.get_messages(step[uid]['cur'])
    if len(msgs) > 0:
        text = msgs[0]

        m = markup(db, step[uid]['cur'], uid)
        if m is None and (t == 'Корзина' or t == 'Оформить'):
            step[uid]['path'].pop()
            step[uid]['cur'] = step[uid]['path'][-1]
            text = db.get_messages('recycle_empty')[0]
            m = markup(db, step[uid]['cur'])

        elif t == "Корзина":
            total = 0
            reqs = db.get_requests(uid)

            if len(reqs) == 0:
                text = db.get_messages('recycle_empty')[0]
                step[uid]['path'].pop()
                step[uid]['cur'] = step[uid]['path'][-1]
                m = markup(db, step[uid]['cur'])
            else:
                for i in reqs:
                    if len(i) >= 3:
                        text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                        total += int(i[1]) * int(i[2])
                text += "\nВсего: {} сум".format(total) + "\n\n" + msgs[1]

        db.close()
        if fucking_flag:
            bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')
        else:
            pass

    else:
        db.close()
        print(str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')) + "| " + uid + ': database error')
def step_payment(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    pay_type_list = db.get_buttons(step[uid]['cur'])

    t = ''
    if len(message.text.split(' ')) > 2:
        for i in message.text.split(' ')[1:]:
            t += i + ' '
        t = t[:-1]
    else:
        t = message.text.split(' ')[-1]
    if t in pay_type_list:
        step[uid]['cur'] = 'Оплата'
        step[uid]['path'].append(step[uid]['cur'])
        text = db.get_messages(step[uid]['cur'])

        if len(text) > 0:
            request[uid]['payment'] = t
            text = text[0] + "\n"
            total = 0
            for i in db.get_requests(uid):
                if len(i) >= 3:
                    text += str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                    total += int(i[1]) * int(i[2])
            text += "\nВсего: {} сум".format(total) + "\n"
            if total >= 120000:
                text += "<b>При заказе от 120 000 сум доставка бесплатна.\nУ Вас бесплатная доставка!</b>" + '\n\n' + \
                        db.get_messages('confirm')[0]
            else:
                text += "<b>При заказе от 120 000 сум доставка бесплатна.\nДо бесплатной доставки - {} сум</b>\n\n".format(
                    120000 - total) + db.get_messages('confirm')[0]

            m = markup(db, step[uid]['cur'], uid)
            db.close()
            bot.send_message(message.from_user.id, text, reply_markup=m, parse_mode='HTML')
        else:
            db.close()
            cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
            print(str(cur_time) + " | " + uid + ": Произошла ошибка чтения из базы данных")
def final(message):
    uid = str(message.from_user.id)
    cur_time = datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
    print(str(cur_time) + " | " + uid + ": " + message.text)

    db = SQLighter(config.database_name)
    if message.text.split(' ')[-1] == "Подтвердить":
        if not db.has_user(uid):
            db.save_user_info(uid, request[uid]['info']['full_name'], request[uid]['info']['username'],
                              request[uid]['info']['phone'])
        else:
            db.update_user_info(uid, request[uid]['info']['full_name'], request[uid]['info']['username'],
                                request[uid]['info']['phone'])

        request[uid]['date'] = str(datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d'))
        request[uid]['time'] = str(datetime.fromtimestamp(time.time()).strftime('%H:%M:%S'))
        db.save_requests(uid, request[uid]['deliver'],
                         request[uid]['longitude'],
                         request[uid]['latitude'],
                         request[uid]['destination'],
                         request[uid]['additional'],
                         request[uid]['payment'],
                         request[uid]['date'],
                         request[uid]['time'])
        print("Запись прошла успешно")

        # теперь сгенерируем сообщение и отошлем его всем администраторам

        admin_message = '<b>' + request[uid]['info']['full_name'] + "</b>\n"
        if request[uid]['info']['username'] != '':
            admin_message += "@" + request[uid]['info']['username'] + "\n"
        admin_message += "<b>Телефон:</b> " + request[uid]['info']['phone'] + "\n\n"
        k = 1
        reqs = db.get_requests(uid)
        total = 0
        for i in reqs:
            if len(i) >= 3:
                admin_message += str(k) + ") " + str(i[0]) + ",  " + str(i[1]) + " x " + str(i[2]) + "\n"
                total += int(i[1]) * int(i[2])
                k += 1
        admin_message += "\nВсего: {} сум".format(total) + "\n\n"
        if request[uid]['additional'] != '':
            admin_message += "<b>Дополнение:</b> " + request[uid]['additional'] + "\n\n"
        admin_message += "<b>Адрес:</b> " + request[uid]['destination'] + '\n'
        admin_message += "<b>Тип оплаты:</b> " + request[uid]['payment'] + "\n"
        admin_message += "<b>Время заказа:</b> " + " " + request[uid]['time'] + "    " + request[uid]['date']
        admins = db.get_admin_list()

        for i in admins:
            try:
                bot.send_message(i, admin_message, parse_mode='HTML')
            except:
                pass

        # очищаем данные

        del request[uid]
        db.clear_requests(uid)
        step[uid]['path'] = []
        step[uid]['path'].append('start')
        step[uid]['cur'] = 'start'
        text = db.get_messages('Новый заказ')[0]
        m = markup(db, step[uid]['cur'])
        bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')

    elif message.text.split(' ')[-1] == "Отменить":
        del request[uid]
        step[uid]['path'] = []
        step[uid]['path'].append('start')
        step[uid]['cur'] = 'start'
        text = db.get_messages('start')[1]
        m = markup(db, step[uid]['cur'])
        bot.send_message(message.chat.id, text, reply_markup=m, parse_mode='HTML')

    else:
        pass