# Generated by the protocol buffer compiler.  DO NOT EDIT!
# sources: keyapis/event/v1/keyapis_event_event_v1.proto, keyapis/event/v1/keyapis_event_events_v1.proto
# plugin: python-betterproto
from dataclasses import dataclass
from datetime import datetime
from typing import Optional

import betterproto


class EventType(betterproto.Enum):
    """Тип события"""

    TYPE_UNKNOWN = 0
    """Значение не указано"""

    API_OPEN_REMOTE = 1
    """Удалённое открытие"""

    FACE_OPEN_REMOTE = 2
    """Открытие по лицу"""

    PIN_CODE_OPEN_REMOTE = 3
    """Открытие по звонку"""

    DTMF_OPEN_REMOTE = 4
    """Открытие по DTMF коду"""

    EMERGENCY_MODE_ON_REMOTE = 5
    """Включение аварийного режима"""

    EMERGENCY_MODE_OFF_REMOTE = 6
    """Отключение аварийного режима"""

    CODE_OPEN_LOCAL = 7
    """Открытие по коду"""

    RFID_OPEN_LOCAL = 8
    """Открытие по ключу"""

    EMERGENCY_ALARM_REMOTE = 9
    """Включение проигрывания звукового предупреждения"""

    GET_CREDENTIALS = 10
    """Получение логопас УЗ устройства в админке"""

    CHANGE_PASSWORD = 11
    """
    Смена пароля на устройстве, логируется как успешная, так и неуспешная
    """

    USER_ENTRY = 12
    """Вход пользователя"""

    DTMF_OPEN_LOCAL = 13
    """Открытие по DTMF коду"""

    CAR_NUMBER_OPEN_REMOTE = 14
    """Открытие по номеру машины"""

    EMERGENCY_ALARM_OFF_REMOTE = 15
    """Выключение проигрывания звукового предупреждения"""

    EMERGENCY_ALARM_ON_REMOTE = 16
    """Включение проигрывания звукового предупреждения"""

    DISPATCHER_OPEN = 17
    """Устройство открыто сотрудником ЛТП"""

    DISPATCHER_DENIED_OPEN = 18
    """Отказано в доступе сотрудником ЛТП"""

    VEHICLE_TYPE_OPEN_REMOTE = 19
    """Открытие по типу авто"""


class EventDeviceType(betterproto.Enum):
    """Тип устройства"""

    DEVICE_TYPE_UNKNOWN = 0
    """Значение не указано"""

    INTERCOM = 1
    """Домофон"""

    BARRIER = 2
    """Шлагбаум"""

    GATE = 3
    """Калитка"""

    ACCESS_CONTROL_PANEL = 4
    """СКУД"""

    VIDEOCAMERA = 5
    """Камера"""


@dataclass(eq=False, repr=False)
class Event(betterproto.Message):
    """Событие"""

    type: "EventType" = betterproto.enum_field(1)
    """Тип события. Поле event_type"""

    raised_at: datetime = betterproto.message_field(2)
    """Дата создания события. # Тип: DateTime"""

    device_id: Optional[int] = betterproto.message_field(
        3, wraps=betterproto.TYPE_INT32
    )
    """Идентификатор устройства"""

    device_type: "EventDeviceType" = betterproto.enum_field(4)
    """Тип устройства на момент события"""

    company_id: Optional[int] = betterproto.message_field(
        5, wraps=betterproto.TYPE_INT32
    )
    """Идентификатор компании"""

    room_id: Optional[int] = betterproto.message_field(6, wraps=betterproto.TYPE_INT32)
    """Идентификатор квартиры"""

    relay: Optional[int] = betterproto.message_field(7, wraps=betterproto.TYPE_INT32)
    """Индекс реле"""

    user_id: Optional[int] = betterproto.message_field(8, wraps=betterproto.TYPE_INT32)
    """Идентификатор пользователя"""

    user_agent: Optional[str] = betterproto.message_field(
        9, wraps=betterproto.TYPE_STRING
    )
    """Юзерагент клиента из которого пользователь выполнял запрос"""

    building_id: Optional[int] = betterproto.message_field(
        10, wraps=betterproto.TYPE_INT32
    )
    """Идентификатор дома"""

    orpon_id: Optional[int] = betterproto.message_field(
        11, wraps=betterproto.TYPE_INT64
    )
    """ОРПОН"""

    room_number: Optional[str] = betterproto.message_field(
        12, wraps=betterproto.TYPE_STRING
    )
    """Номер квартиры"""

    ivr_phone_number: Optional[str] = betterproto.message_field(
        13, wraps=betterproto.TYPE_STRING
    )
    """Телефон ИВР"""

    guest_phone_number: Optional[str] = betterproto.message_field(
        14, wraps=betterproto.TYPE_STRING
    )
    """Телефон гостя / звонящего"""

    code: Optional[str] = betterproto.message_field(15, wraps=betterproto.TYPE_STRING)
    """Код / пин код при открытии при звонке"""

    rfid: Optional[str] = betterproto.message_field(16, wraps=betterproto.TYPE_STRING)
    """RFID номер"""

    request_id: Optional[str] = betterproto.message_field(
        17, wraps=betterproto.TYPE_STRING
    )
    """ИД запроса. # Тип: Guid"""

    dtmf_phone_number: Optional[str] = betterproto.message_field(
        18, wraps=betterproto.TYPE_STRING
    )
    """Номер телефона с которого было открытие по DTMF коду"""

    user_kind: Optional[str] = betterproto.message_field(
        19, wraps=betterproto.TYPE_STRING
    )
    """Тип УЗ на устройстве. Поле user_type"""

    login: Optional[str] = betterproto.message_field(20, wraps=betterproto.TYPE_STRING)
    """Логин на устройстве"""

    password: Optional[str] = betterproto.message_field(
        21, wraps=betterproto.TYPE_STRING
    )
    """Пароль на устройстве"""

    host: Optional[str] = betterproto.message_field(22, wraps=betterproto.TYPE_STRING)
    """ip адрес устройства"""

    device_model: Optional[str] = betterproto.message_field(
        23, wraps=betterproto.TYPE_STRING
    )
    """Модель устройства"""

    rfid_id: Optional[int] = betterproto.message_field(24, wraps=betterproto.TYPE_INT32)
    """Идентификатор ключа"""

    code_id: Optional[int] = betterproto.message_field(25, wraps=betterproto.TYPE_INT32)
    """Идентификатор кода"""

    car_number: Optional[str] = betterproto.message_field(
        26, wraps=betterproto.TYPE_STRING
    )
    """Номер машины"""

    os: Optional[str] = betterproto.message_field(27, wraps=betterproto.TYPE_STRING)
    """Операционная система"""

    push_token: Optional[str] = betterproto.message_field(
        28, wraps=betterproto.TYPE_STRING
    )
    """Пуш-токен для устройства"""

    camera_uid: Optional[str] = betterproto.message_field(
        29, wraps=betterproto.TYPE_STRING
    )
    """ИД камеры. # Тип: Guid"""

    screenshot_url: Optional[str] = betterproto.message_field(
        30, wraps=betterproto.TYPE_STRING
    )
    """Ссылка на скриншот события"""

    vehicle: Optional[str] = betterproto.message_field(
        31, wraps=betterproto.TYPE_STRING
    )
    """Тип ТС"""

    courier_company_name: Optional[str] = betterproto.message_field(
        32, wraps=betterproto.TYPE_STRING
    )
    """Наименование курьерской компании"""

    order_number: Optional[str] = betterproto.message_field(
        33, wraps=betterproto.TYPE_STRING
    )
    """Номер заказа"""

    courier_id: Optional[str] = betterproto.message_field(
        34, wraps=betterproto.TYPE_STRING
    )
    """Идентификатор курьера"""


@dataclass(eq=False, repr=False)
class CreateTask(betterproto.Message):
    """Задача создание события. Очередь key.event.create"""

    request_id: str = betterproto.string_field(1)
    """Идентификатор запроса"""

    event: "Event" = betterproto.message_field(2)
    """Событие"""
