# 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
# This file has been @generated

from datetime import datetime

import betterproto
from pydantic.dataclasses import (
    dataclass,
    rebuild_dataclass,
)


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
    """Открытие по типу авто"""

    @classmethod
    def __get_pydantic_core_schema__(cls, _source_type, _handler):
        from pydantic_core import core_schema

        return core_schema.int_schema(ge=0)


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

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

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

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

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

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

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

    @classmethod
    def __get_pydantic_core_schema__(cls, _source_type, _handler):
        from pydantic_core import core_schema

        return core_schema.int_schema(ge=0)


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

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

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

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

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

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

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

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

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

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

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

    orpon_id: "int | None" = betterproto.message_field(11, wraps=betterproto.TYPE_INT64)
    """ОРПОН"""

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    vehicle: "str | None" = betterproto.message_field(31, wraps=betterproto.TYPE_STRING)
    """Тип ТС"""

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

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

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


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

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

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


rebuild_dataclass(Event)  # type: ignore
rebuild_dataclass(CreateTask)  # type: ignore
