def natural_person(bot, update):
    update.message.reply_text('<b>Переходим к "РобоКассе"</b>',
                              reply_markup=create_menu_keyboard(),
                              parse_mode='HTML')
    update.message.reply_text(
        'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=findtheowner&InvId=0&Culture=ru&Encoding=utf-8&OutSum=500&SignatureValue=ac288b7d40a1747dbe687d74aff91323',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
예제 #2
0
def write_add_employee(bot, update):
    global is_add_employee
    is_add_employee = True
    update.message.reply_text(
        '<i><b>Используйте ";" для разделения требуемых параметров</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
    update.message.reply_text(
        '<i><b>Напишите имя и ID сотрудника.\nПример: имя1;0123456789</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
예제 #3
0
def write_proj_add_task(bot, update):
    global is_proj_add_task, is_add_task
    is_proj_add_task, is_add_task = True, True
    update.message.reply_text(
        '<i><b>Используйте ";" для разделения требуемых параметров</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
    update.message.reply_text('''
<i><b>Напишите название задачи, описание задачи, имя сотрудника.
Пример: задача1;описание1;имя1</b></i>''',
                              reply_markup=create_menu_keyboard(),
                              parse_mode='HTML')
예제 #4
0
def kpz_inn_preview(bot, update):
    # if len(update.message['text']) > 3:
    #     global_function(bot, update)
    #     return
    update.message.reply_text('<i><b>Здесь выводятся ИНН</b></i>',
                              reply_markup=create_menu_keyboard(),
                              parse_mode='HTML')
    kpz_db = DB('kpz.db')
    im = InnModel(kpz_db.get_connection())
    for inn in im.get_all():
        update.message.reply_text(f'''
<i><b>ИНН: {inn[1]}</b></i>
<i><b>Контакты Заказчика: {inn[2]}</b></i>''',
                                  reply_markup=create_menu_keyboard(),
                                  parse_mode='HTML')
예제 #5
0
def write_proj_delete_task(bot, update):
    global is_proj_delete_task, is_delete_task
    is_proj_delete_task, is_delete_task = True, True
    update.message.reply_text(
        '<i><b>Напишите название задачи, которую Вы хотели бы удалить в данном проекте</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
예제 #6
0
def write_delete_task(bot, update):
    global is_delete_task
    is_delete_task = True
    update.message.reply_text(
        '<i><b>Напишите название проекта и название задачи</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
예제 #7
0
def write_add_project(bot, update):
    global is_add_project
    is_add_project = True
    update.message.reply_text(
        '<i><b>Напишите название проекта.\nЗапрещаются специальные символы: !, `, @, №, $, %, &, ?, /, :, ;</b></i>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
def consultation(bot, update):
    global is_consultation
    is_consultation = True
    update.message.reply_text(
        '<b>Опишите проблему и задайте вопрос.\nВАЖНО! Вы можете отправлять юридический вопрос как с файлом, так и без него. Если к Вашему вопросу прилагается какой-либо документ, прикреплять его необходимо вместе с текстовым сообщением!</b>',
        reply_markup=create_menu_keyboard(),
        parse_mode='HTML')
예제 #9
0
def kpz_juristic_questions(bot, update):
    update.message.reply_text('<i><b>Здесь выводятся вопросы</b></i>',
                              parse_mode='HTML')

    kpz_db = DB('kpz.db')
    ktm = KpzTaskModel(kpz_db.get_connection())
    fm = FileModel(kpz_db.get_connection())
    for task in ktm.get_all():
        update.message.reply_text(f'''
<b>Юридический вопрос: <u>{task[1]}</u></b>\n
<b>Контакты Заказчика: {task[3]}</b>
<b>Файл:</b> {'Не прикреплен' if task[4] == -1 else '↓'}''',
                                  reply_markup=create_menu_keyboard(),
                                  parse_mode='HTML')
        try:
            new_file_name = get_uniq_filename(fm.get(task[4])[2], task[3][1:])
            tg_doc = open(
                os.path.join(os.getcwd(), KPZ_FILES_DIR, new_file_name), 'rb')
            update.message.reply_document(tg_doc,
                                          filename=new_file_name,
                                          reply_markup=create_menu_keyboard())
        except Exception as e:
            print('kpz_juristic_questions', e)
예제 #10
0
def task_preview(bot, update):
    tm = TaskModel(db.get_connection())
    em = EmployeeModel(db.get_connection())
    pm = ProjectModel(db.get_connection())
    tasks = sorted(tm.get_all(), key=lambda t: t[5])

    for task in tasks:
        update.message.reply_text(f'''
<b>Задача: <u>{task[1]}</u></b>
<b>Проект: {pm.get_name(task[4])}</b>
<b>Описание: {task[2]}</b>
<b>Сотрудник: {em.get(task[3])[1]}</b>
<b>Время выполнения: {'-' if not task[5] else task[8]}</b>
<b>Статус:</b> {'Выполнена' if task[5] else 'В процессе'}''',
                                  reply_markup=create_menu_keyboard(),
                                  parse_mode='HTML')
def global_function(bot, update):
    global is_juristic, is_consultation
    print(update)

    if is_consultation:
        is_consultation = False
        ktm = KpzTaskModel(db.get_connection())
        username = update.message['chat']['username']
        if not update.message.document:
            ktm.insert(update.message.text, '@' + username)

            send_email(
                BOSS_EMAIL_ADDRESS, f'''
<b>Юридический вопрос: <u>{update.message.text}</u></b><br>
<b>Контакты Заказчика: {'@'+username}</b>''')
        else:
            file_name = update.message.document.file_name
            file = update.message.document.get_file()
            file_id = file.file_id

            new_file_name = get_uniq_filename(file_name, username)
            file_path = os.path.join(os.getcwd(), KPZ_FILES_DIR, new_file_name)
            file.download(file_path)

            fm = FileModel(db.get_connection())
            fm.insert(file_id, file_name)
            ktm.insert(update.message['caption'],
                       '@' + username,
                       file_id=fm.get_id(file_id))

            send_email(BOSS_EMAIL_ADDRESS,
                       f'''
<b>Юридический вопрос: <u>{update.message['caption']}</u></b>\n
<b>Контакты Заказчика: {'@' + username}</b>''',
                       file=file_path)

    if is_juristic:
        is_juristic = False
        username = update.message['chat']['username']
        inn = update.message.text
        im = InnModel(db.get_connection())
        im.insert(inn, username)
        update.message.reply_text('<b>ИНН (ОГРН) записан</b>',
                                  reply_markup=create_menu_keyboard(),
                                  parse_mode='HTML')
예제 #12
0
def global_function(bot, update):
    # Отправляем http запрос
    global is_add_project, is_add_task, is_add_employee, is_delete_project, is_delete_task, is_delete_employee
    global projects_list, employee_list
    global latest_project, is_proj_add_task, is_proj_delete_task
    global is_report, is_report_employee, is_report_proj, r_d, l_d, task
    global is_time_selected, is_task_selected

    update.message.reply_text('<i><b>Команда выполнена</b></i>',
                              reply_markup=create_menu_keyboard(),
                              parse_mode='HTML')
    if update.message[
            'text'] in projects_list and not is_delete_project and not is_add_task and not is_add_project:
        project = update.message['text']

        if is_report_proj:
            proj_report(update, l_d, r_d, project)
        else:
            update.message.reply_text(
                f"<i><b>Просмотр задач по проекту: {project}</b></i>",
                reply_markup=create_tasks_in_project_boss_keyboard(),
                parse_mode='HTML')
            project_preview(update, project)
            latest_project = update.message['text']

    elif update.message['text'] in employee_list and not is_delete_employee:
        employee = update.message['text']

        if is_report_employee:
            emp_report(update, l_d, r_d, employee)
        else:
            update.message.reply_text(
                f"<i><b>Просмотр задач сотрудника: {employee}</b></i>",
                reply_markup=create_tasks_in_project_boss_keyboard(),
                parse_mode='HTML')
            employee_preview(update, employee)

    elif is_add_project:
        is_add_project = False
        name = update.message['text']
        projects_list.append(name)
        try:
            add_project(name)
        except ProjectAlreadyExist:
            update.message.reply_text("Проект уже существует")
            is_add_project = True

    elif is_add_task:
        is_add_task = False
        if is_proj_add_task:
            is_proj_add_task = False
            params = update.message['text']
            name, description, emp_name = params.split(';')
            project_name = latest_project
        else:
            params = update.message['text']
            name, description, emp_name, project_name = params.split(';')

        try:
            add_task(bot, name, description, emp_name, project_name,
                     '@' + update.message['chat']['username'])
        except ProjectNotFound:
            update.message.reply_text("Проект не найден")
            is_add_task = True
        except UserNotFound:
            update.message.reply_text("Сотрудник не найден")
            is_add_task = True

    elif is_add_employee:
        is_add_employee = False
        params = update.message['text']
        name, uid = params.split(';')
        try:
            add_employee(name, uid)
            employee_list.append(name)
        except UserAlreadyExist:
            update.message.reply_text("Пользователь уже существует")
            is_add_employee = True

    elif is_delete_project:
        is_delete_project = False
        name = update.message['text']
        delete_project(name)
        del projects_list[projects_list.index(name)]

    elif is_delete_task:
        is_delete_task = False
        if is_proj_delete_task:
            is_proj_delete_task = False
            task_name = update.message['text']
            project_name = latest_project
        else:
            params = update.message['text']
            project_name, task_name = params.split(';')
        delete_task(project_name, task_name)

    elif is_delete_employee:
        is_delete_employee = False
        name = update.message['text']
        delete_employee(name)
        del employee_list[employee_list.index(name)]

    elif is_task_selected:
        is_task_selected = False
        task = update.message['text']
        update.message.reply_text(
            '<i><b>Введите время выполнения задачи.\nПример: 2:45, 3:00, 1:30.\nВАЖНО! Целое количество часов вводится также через двоеточние (1, 2, 3 часа будут записаны в виде "1:00", "2:00", "3:00" и т.д.)</b></i>',
            parse_mode='HTML')
        is_time_selected = True

    elif is_time_selected:
        is_time_selected = False
        time = update.message['text']
        hours, minutes = time.split(':')
        if not hours.isdigit() or not minutes.isdigit():
            is_time_selected = True
            update.message.reply_text(
                "<i><b>Введено некорректное значение времени</b></i>",
                parse_mode='HTML')
        else:
            project, name = task.split(': ')
            set_done(bot, name, project, time)

    elif is_report:
        is_report = False
        update.message.reply_text(
            '<i><b>Выберите тип отчёта</b></i>',
            reply_markup=create_report_employee_boss_keyboard(),
            parse_mode='HTML')
        l_string, r_string = update.message['text'].split('-')
        l_day, l_month, l_year = [int(el) for el in l_string.split('.')]
        r_day, r_month, r_year = [int(el) for el in r_string.split('.')]
        try:
            l_d = datetime.toordinal(datetime(l_year, l_month, l_day))
            r_d = datetime.toordinal(datetime(r_year, r_month, r_day))
        except ValueError:
            update.message.reply_text('<i><b>Некорректно введена дата</b></i>',
                                      reply_markup=create_menu_keyboard(),
                                      parse_mode='HTML')
            report(bot, update)
def juristic_person(bot, update):
    global is_juristic
    is_juristic = True
    update.message.reply_text('<b>Напишите свой ИНН (ОГРН)</b>',
                              reply_markup=create_menu_keyboard(),
                              parse_mode='HTML')