ru.bitel.bgbilling.plugins.helpdesk.server.bean

## Class TopicManager

- java.lang.Object
- - ru.bitel.bgbilling.plugins.helpdesk.server.bean.TopicManager

-     public class TopicManager
      extends java.lang.Object

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.sql.Connection` | `con`
    `protected ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer` | `plugin`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TopicManager(java.sql.Connection con, ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer plugin)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getClientNewMessageCount()`
    `int` | `getClientNewMessageCount(java.lang.String contractTitleRegexp, java.lang.Long contractGroupBitMask)`
    `int` | `getClientNewMessageCount(java.lang.String contractTitleRegexp, java.lang.Long contractGroupBitMask, int mode)`
    `java.util.Map<java.lang.Integer,java.util.Map<IdTitle,java.lang.Integer>>` | `getClientNewMessagesMap()` Мэп новых сообщений для каждого юзера во всех его темах.
    `protected java.lang.String` | `getDBTableName(java.lang.String name)`
    `int` | `getManagersNewMessagesCount(int contractId)` Кол-во не прочитанных сообщений абонентом.
    `Message` | `getMessage(int id)`
    `java.util.List<Message>` | `getMessageListRevert(int topicId, int lastMessageId, int count, boolean before)`
    `int` | `getNextMessageId(int id, int topicId)`
    `int` | `getPrevMessageId(int id, int topicId)`
    `Reserve` | `getReserveOnTopic(int topicId)` Получение резерва который повешан на данный топик.
    `int` | `getReserveStatus(int topicId)` Получение статуса топика.
    `java.util.Map<java.lang.Integer,java.lang.String>` | `getStatusesMap()`
    `java.util.Map<java.lang.Integer,java.lang.String>` | `getStatusMap()`
    `java.lang.String` | `getStatusName(int statusId)`
    `Topic` | `getTopic(int topicId)` Возвращает топик со всеми его сообщениями.
    `Topic` | `getTopic(int topicId, boolean loadMessages)` Возвращает топик со всеми его сообщениями.
    `int` | `getTopicCount(TopicListFilter tf)` Число топиков.
    `java.util.List<java.lang.Integer>` | `getTopicInStatusBlocked(int contractId)` Получение списка ид топиков у которых статус резерва выставлен в режим ожидания.
    `java.util.List<Topic>` | `getTopicList(TopicListFilter topicListFilter)` Список заголовков топиков.
    `int` | `getTopicOwnerId(int topicId)`
    `java.util.List<Message>` | `loadMessages(Topic topic)` Заполняет для топика его сообщения.
    `void` | `searchTopicMessages(SearchResult<Message> searchResult, int topicId)`
    `void` | `setBindTopic(int id, int userId, java.lang.String comment)` Занятие топика определённым юзером - менеджером.
    `void` | `setMessageAdminRead(int id, int userId)` Установка прочтённости ОДНОГО сообщения админом
    `void` | `setTopicAutoclose(int id, boolean autoclose)` Изменить статус автозакрытия темы
    `void` | `setTopicClientRead(int topicId)` Отмечаем прочитанными весь топик КЛИЕНТОМ (тех сообщений которые написаны манагером)
    `void` | `setTopicClosed(int id, boolean closed, boolean packetMode, int userId)` Открыть/закрыть тему.
    `void` | `setTopicStatus(int id, int status)` Установка статуса топика.
    `void` | `updateManagerForTopic(int userId, int topicId, java.lang.String comment)`
    `void` | `updateMessage(java.lang.String id, Message message)`
    `protected void` | `updateMessage(java.lang.String id, Message message, boolean fromIM)`
    `void` | `updateMessageComment(int messageId, java.lang.String comment)`
    `void` | `updateTopic(java.lang.String id, Topic topic)` Deprecated. использовать `updateTopic(Topic)`
    `int` | `updateTopic(Topic topic)` Обновление топика
    `void` | `updateTopicMessage(int id, Message message)`
    `void` | `updateTopicMessage(java.lang.String id, Message message)` Deprecated. использовать `updateTopicMessage(int, Message)`
    `void` | `updateTopicPackage(int topicId, int contractPackageId)` Устанавливает contractPackageId для топика с id = topicId
    `int` | `updateTopicReservStatus(int topicId, int reserveStatus, java.lang.Integer reserveId)` Устанавливает или обновлят статус и повешанный резерв у топика.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### con

          protected java.sql.Connection con

    - #### plugin

          protected ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer plugin

  - ### Constructor Detail

    - #### TopicManager

          public TopicManager(java.sql.Connection con,
                              ru.bitel.bgbilling.kernel.plugin.server.BGPluginServer plugin)

  - ### Method Detail

    - #### getDBTableName

          protected java.lang.String getDBTableName(java.lang.String name)

    - #### getTopicList

          public java.util.List<Topic> getTopicList(TopicListFilter topicListFilter)

      Список заголовков топиков. Поддержка определения новых сообщений для обеих сторон.
      Parameters:
        `cid` - ИД контракта. Или -1 если не учитывать.
        `closed` - паказывать закрытые (true), открытые (false) или не учитывать (null).
        `date1` - дата начала периода. для фильтрованноый выборки.
        `date2` - дата конца. для фильтрованноый выборки.
        `title` - часть заголовка. для фильтрованноый выборки.
        `searchString` - часть текста сообщения. для фильтрованной выборки.
        `page` - страница. для фильтрованноый выборки.
        `onPage` - на странице. для фильтрованноый выборки.
      Returns:
        список Topic для фильтрованноый выборки.

    - #### getManagersNewMessagesCount

          public int getManagersNewMessagesCount(int contractId)

      Кол-во не прочитанных сообщений абонентом.

    - #### getClientNewMessageCount

          public int getClientNewMessageCount()

    - #### getClientNewMessageCount

          public int getClientNewMessageCount(java.lang.String contractTitleRegexp,
                                              java.lang.Long contractGroupBitMask)

    - #### getClientNewMessagesMap

          public java.util.Map<java.lang.Integer,java.util.Map<IdTitle,java.lang.Integer>> getClientNewMessagesMap()

      Мэп новых сообщений для каждого юзера во всех его темах. Также есть и юзер -1, то есть темы без менеджера.
      Returns:
        мэп{юзер => мэп{(тема-id,тема-заголовок)=>количество-новых}}

    - #### getClientNewMessageCount

          public int getClientNewMessageCount(java.lang.String contractTitleRegexp,
                                              java.lang.Long contractGroupBitMask,
                                              int mode)

    - #### getTopicCount

          public int getTopicCount(TopicListFilter tf)

      Число топиков.
      Returns:
        натуральное число.
      See Also:
        `getTopicList`

    - #### updateTopic

          @Deprecated
          public void updateTopic(java.lang.String id,
                                              Topic topic)
                                       throws ru.bitel.bgbilling.common.BGException

      Deprecated. использовать `updateTopic(Topic)`
      Parameters:
        `id` -
        `topic` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateTopic

          public int updateTopic(Topic topic)
                          throws ru.bitel.bgbilling.common.BGException

      Обновление топика
      Parameters:
        `topic` - - обновляемый/добавляемый топик.
      Returns:
        - кол-во измененных полей в БД.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateTopicPackage

          public void updateTopicPackage(int topicId,
                                         int contractPackageId)
                                  throws ru.bitel.bgbilling.common.BGException

      Устанавливает contractPackageId для топика с id = topicId
      Parameters:
        `topicId` - - id топика для которого устанавливается contractPackageId
        `contractPackageId` - - id активного пакета
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateTopicMessage

          @Deprecated
          public void updateTopicMessage(java.lang.String id,
                                                     Message message)
                                              throws ru.bitel.bgbilling.common.BGException

      Deprecated. использовать `updateTopicMessage(int, Message)`
      Parameters:
        `id` -
        `message` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateTopicMessage

          public void updateTopicMessage(int id,
                                         Message message)
                                  throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getTopic

          public Topic getTopic(int topicId)

      Возвращает топик со всеми его сообщениями.
      Parameters:
        `topicId` - - ИД топика.
      Returns:
        объект Topic с заполненым списком сообщений.

    - #### getTopic

          public Topic getTopic(int topicId,
                                boolean loadMessages)

      Возвращает топик со всеми его сообщениями.
      Parameters:
        `topicId` - - ИД топика.
      Returns:
        объект Topic с заполненым списком сообщений.

    - #### loadMessages

          public java.util.List<Message> loadMessages(Topic topic)
                                               throws ru.bitel.bgbilling.common.BGException

      Заполняет для топика его сообщения. Используется и тут и снаружи класса. Потому и вынесен так.
      Parameters:
        `topic` - - валидный заполненный объект Topic
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### searchTopicMessages

          public void searchTopicMessages(SearchResult<Message> searchResult,
                                          int topicId)
                                   throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getMessage

          public Message getMessage(int id)

    - #### getPrevMessageId

          public int getPrevMessageId(int id,
                                      int topicId)
                               throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getNextMessageId

          public int getNextMessageId(int id,
                                      int topicId)
                               throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getTopicOwnerId

          public int getTopicOwnerId(int topicId)

    - #### updateMessage

          public void updateMessage(java.lang.String id,
                                    Message message)
                             throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateMessage

          protected void updateMessage(java.lang.String id,
                                       Message message,
                                       boolean fromIM)
                                throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateMessageComment

          public void updateMessageComment(int messageId,
                                           java.lang.String comment)
                                    throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### setTopicClosed

          public void setTopicClosed(int id,
                                     boolean closed,
                                     boolean packetMode,
                                     int userId)
                              throws ru.bitel.bgbilling.common.BGException

      Открыть/закрыть тему.
      Parameters:
        `id` - код топика
        `closed` - true - закрыть тему, false - открыть тему
        `packetMode` - режим топика
        `userId` - код пользователя, закрывающего топик
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### setTopicAutoclose

          public void setTopicAutoclose(int id,
                                        boolean autoclose)
                                 throws ru.bitel.bgbilling.common.BGException

      Изменить статус автозакрытия темы
      Parameters:
        `id` - - код темы
        `autoclose` - - новое значение
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### setTopicClientRead

          public void setTopicClientRead(int topicId)
                                  throws ru.bitel.bgbilling.common.BGException

      Отмечаем прочитанными весь топик КЛИЕНТОМ (тех сообщений которые написаны манагером)
      Parameters:
        `topicId` - - ИД топика
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### setMessageAdminRead

          public void setMessageAdminRead(int id,
                                          int userId)
                                   throws ru.bitel.bgbilling.common.BGException

      Установка прочтённости ОДНОГО сообщения админом
      Parameters:
        `id` - - ид сообщения
        `userId` - - ид админа
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### setBindTopic

          public void setBindTopic(int id,
                                   int userId,
                                   java.lang.String comment)

      Занятие топика определённым юзером - менеджером.
      Parameters:
        `id` - - ид топика.
        `userId` - - ид юзера.

    - #### setTopicStatus

          public void setTopicStatus(int id,
                                     int status)
                              throws ru.bitel.bgbilling.common.BGException

      Установка статуса топика.
      Parameters:
        `id` - ид топика.
        `userId` - ид юзера.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getStatusName

          public java.lang.String getStatusName(int statusId)
                                         throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getStatusMap

          public java.util.Map<java.lang.Integer,java.lang.String> getStatusMap()

    - #### getStatusesMap

          public java.util.Map<java.lang.Integer,java.lang.String> getStatusesMap()
                                                                           throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### updateManagerForTopic

          public void updateManagerForTopic(int userId,
                                            int topicId,
                                            java.lang.String comment)
                                     throws ru.bitel.bgbilling.common.BGException

      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### updateTopicReservStatus

          public int updateTopicReservStatus(int topicId,
                                             int reserveStatus,
                                             java.lang.Integer reserveId)
                                      throws ru.bitel.bgbilling.common.BGException

      Устанавливает или обновлят статус и повешанный резерв у топика.
      Parameters:
        `topicId` - - ид топика.
        `reserveStatus` - - выставляемый статус.
        `reserveId` - - ид резерва.
      Returns:
        - кол-во изменненых строк в БД.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getReserveOnTopic

          public Reserve getReserveOnTopic(int topicId)
                                    throws ru.bitel.bgbilling.common.BGException

      Получение резерва который повешан на данный топик.
      Parameters:
        `topicId` - - ид топика.
      Returns:
        - резерв.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getReserveStatus

          public int getReserveStatus(int topicId)
                               throws ru.bitel.bgbilling.common.BGException

      Получение статуса топика.
      Parameters:
        `topicId` -
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getTopicInStatusBlocked

          public java.util.List<java.lang.Integer> getTopicInStatusBlocked(int contractId)
                                                                    throws ru.bitel.bgbilling.common.BGException

      Получение списка ид топиков у которых статус резерва выставлен в режим ожидания.
      Parameters:
        `contractId` - код договора.
      Returns:
        - список идешников.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getMessageListRevert

          public java.util.List<Message> getMessageListRevert(int topicId,
                                                              int lastMessageId,
                                                              int count,
                                                              boolean before)
                                                       throws ru.bitel.bgbilling.common.BGException

      Parameters:
        `topicId` - - код темы
        `lastMessageId` - - код сообщения от которого начнется отсчет
        `count` - - кол-во сообщений
        `before` - - если true, то предыдущие относительно переданного, иначе следующих, то есть более новых
      Returns:
        - список сообщений предыдущиих/следующих к сообщению с id=lastMessageId, в обратном порядке.
      Throws:
        `ru.bitel.bgbilling.common.BGException`