ru.bitel.bgbilling.modules.cerbercrypt.server.bean

## Class CardPacketManager

- java.lang.Object
- - ru.bitel.bgbilling.modules.cerbercrypt.server.bean.CardPacketManager

-     public class CardPacketManager
      extends java.lang.Object

  Менеджер картпакетов.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `CardPacketManager(java.sql.Connection con, int mid)`
    `CardPacketManager(java.sql.Connection con, int mid, int userId)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `checkCardPackets(UserCard card)` Проверка выпадения картапакетов (уже существующих в БД) из интервала активности карты.
    `java.util.List<CardPacket>` | `checkConflictSamePackets(java.lang.Integer userCardId, java.lang.Integer packetId, java.util.Date dateFrom, java.util.Date dateTo, java.lang.Integer selfCardPacketId)` проверяет картпакет на конфликты с таким же пакетом существующим на какую-то из дат периода возвращает найденные конфликтующие картпакеты, или пустой список, null быть не может точно такой же исключается, если указан selfCardPacketId, т.е. чтобы сам с собой не обнаружил пересечение (например есть в БД а мы редактируем его же)
    `void` | `closeCardPackets(ParameterMap moduleSetup, CardPacketManager cpm, java.util.Map<java.lang.Integer,Packet> packetMap, int cid, int cardId, java.util.List<CardPacket> close, java.util.Date closeDate, java.util.Calendar now, boolean check)`
    `void` | `deleteCardPacket(int cardPacketId)` Удаление кардпакета по его id.
    `void` | `deleteCardPackets(int usercardId)` Удаление всех кардпакетов юзеркарты по id юзеркарты.
    `java.util.List<CardPacket>` | `getActiveCardPacketList(java.util.Calendar date, java.util.Collection<java.lang.Integer> userCardIds)` Список активных (по дате и статусу) картпакетов для нескольких карт.
    `java.util.List<CardPacket>` | `getActiveCardPacketList(java.util.Calendar date, java.lang.Integer userCardId)` Список активных картапакетов
    `java.util.List<CardPacket>` | `getCalculateCardPacketList(java.util.Date fromDate, java.util.Date toDate, java.lang.String cids, java.lang.String ucids, java.lang.String pids)` Получение картапакетов, существующих в определенный период времени для определенных договоров, сортировка по коду карты.
    `CardPacket` | `getCardPacket(int usercardId, int packetId, java.util.Date date)` Получение указанного пакета на указанной карте на нужную дату (дата - точка внутри открытого).
    `CardPacket` | `getCardPacketById(int cardPacketId)` Кардпакет по его id.
    `java.util.List<CardPacket>` | `getCardPacketList(java.util.Calendar date)` Получение картапакетов существующих в определенную дату.
    `java.util.List<CardPacket>` | `getCardPacketList(int userCardId)` Список всех картпакетов что привязаны к указанной юзеркарте.
    `java.util.List<CardPacket>` | `getCardPacketList(int cid, java.util.Date date)` Список картпакетов договора
    `java.util.List<CardPacket>` | `getCardPacketList(int cid, int usercardId, java.util.Date date, boolean virtualCinema)`
    `java.util.List<CardPacket>` | `getCardPacketList(int cid, int usercardId, int objectId, java.util.Date date, boolean virtualCinema)`
    `java.util.List<CardPacket>` | `getCardPacketListByPacketId(int packetId)` Возвращает все картпакеты, использующие указанный пакет.
    `java.util.List<CardPacket>` | `getContractActiveCardPacketList(java.util.Calendar date, int cid)` Deprecated. getStatusedCardPacketList( date, cid, CardPacket.STATUS_ACTIVE )
    `java.util.List<CardPacket>` | `getFutureCardPacketList(int cid, int usercardId, java.util.Date date)` Получение всех будущих (дата начала больше указанной) кардпакетов юзеркарты по id юзеркарты и cid.
    `java.util.List<CardPacket>` | `getStatusedCardPacketList(java.util.Calendar date, int cid, int cardPacketStatus)` Список определённого статуса картпакетов договора на конкретную дату
    `boolean` | `haveCardPackets(int userCardId)` Возвращает привязаны ли к карте пакеты.
    `protected static boolean` | `isEqualSubscribe(java.util.List<CardPacket> list1, java.util.List<CardPacket> list2)`
    `void` | `openCardPackets(ParameterMap moduleSetup, CardPacketManager cpm, java.util.Map<java.lang.Integer,Packet> packetMap, int cid, int usercardId, java.util.List<CardPacket> add, java.util.Calendar now, boolean check)`
    `void` | `removeCardPackets(ParameterMap moduleSetup, CardPacketManager cpm, java.util.Map<java.lang.Integer,Packet> packetMap, int cid, int cardId, java.util.List<CardPacket> remove, java.util.Calendar now, boolean check)`
    `void` | `replaceCardPackets(int cid, java.util.Date dateFrom, java.util.Set<java.lang.Integer> newPacketIds, java.lang.String commentOpen, java.lang.String commentClose)` Замена текущей подписки на новую.
    `void` | `replaceCardPacketsUserCard(UserCard uc, java.util.Date dateFrom, java.util.Set<java.lang.Integer> newPacketIds, java.lang.String commentOpen, java.lang.String commentClose)` Замена текущей подписки на новую.
    `void` | `synchronizeCardPacketFromTo(int uidSrc, int uidDest, java.util.Set<java.lang.Integer> ignorePackets, java.util.Date newDateFrom)` Клонирование всей подписки с одной карты на другую.
    `void` | `truncatePacketsToCard(UserCard uc)` Костыль.
    `void` | `updateCardPacket(CardPacket cardPacket)` Обновление/добавление кардпакета.
    `void` | `updateCardPackets(ParameterMap moduleSetup, CardPacketManager cpm, java.util.Map<java.lang.Integer,Packet> packetMap, int cid, int cardId, java.util.List<CardPacket> update, java.util.Calendar now, boolean check)`

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

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

- - ### Constructor Detail

    - #### CardPacketManager

          public CardPacketManager(java.sql.Connection con,
                                   int mid)

    - #### CardPacketManager

          public CardPacketManager(java.sql.Connection con,
                                   int mid,
                                   int userId)

  - ### Method Detail

    - #### updateCardPacket

          public void updateCardPacket(CardPacket cardPacket)
                                throws ru.bitel.bgbilling.common.BGException

      Обновление/добавление кардпакета.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketById

          public CardPacket getCardPacketById(int cardPacketId)
                                       throws ru.bitel.bgbilling.common.BGException

      Кардпакет по его id.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteCardPacket

          public void deleteCardPacket(int cardPacketId)
                                throws ru.bitel.bgbilling.common.BGException

      Удаление кардпакета по его id.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### deleteCardPackets

          public void deleteCardPackets(int usercardId)
                                 throws ru.bitel.bgbilling.common.BGException

      Удаление всех кардпакетов юзеркарты по id юзеркарты.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketList

          public java.util.List<CardPacket> getCardPacketList(int cid,
                                                              int usercardId,
                                                              java.util.Date date,
                                                              boolean virtualCinema)
                                                       throws ru.bitel.bgbilling.common.BGException

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

    - #### getCardPacketList

          public java.util.List<CardPacket> getCardPacketList(int cid,
                                                              int usercardId,
                                                              int objectId,
                                                              java.util.Date date,
                                                              boolean virtualCinema)
                                                       throws ru.bitel.bgbilling.common.BGException

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

    - #### getFutureCardPacketList

          public java.util.List<CardPacket> getFutureCardPacketList(int cid,
                                                                    int usercardId,
                                                                    java.util.Date date)
                                                             throws ru.bitel.bgbilling.common.BGException

      Получение всех будущих (дата начала больше указанной) кардпакетов юзеркарты по id юзеркарты и cid.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### haveCardPackets

          public boolean haveCardPackets(int userCardId)
                                  throws ru.bitel.bgbilling.common.BGException

      Возвращает привязаны ли к карте пакеты.
      Parameters:
        `userCardId` - ид юзеркарты.
      Returns:
        true - привязаны.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### checkCardPackets

          public boolean checkCardPackets(UserCard card)
                                   throws ru.bitel.bgbilling.common.BGException

      Проверка выпадения картапакетов (уже существующих в БД) из интервала активности карты.
      Parameters:
        `card` - юзеркарта
      Returns:
        - true если все выпадает хоть один
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCalculateCardPacketList

          public java.util.List<CardPacket> getCalculateCardPacketList(java.util.Date fromDate,
                                                                       java.util.Date toDate,
                                                                       java.lang.String cids,
                                                                       java.lang.String ucids,
                                                                       java.lang.String pids)
                                                                throws ru.bitel.bgbilling.common.BGException

      Получение картапакетов, существующих в определенный период времени для определенных договоров, сортировка по коду карты. Если cids null/пустой, то не учитывается, по всем договорам. Внимание: не учитываются статусы, зависимости, привязки подчинённых к "основным" итд, только период действия учитываются и список договоров. ВНУТРИ: сортировка по коду карты ОБЯЗАТЕЛЬНА!, на это завязан алгоритм обсчета.
      Parameters:
        `fromDate` - начало периода, если null то не проверяется (бесконечно)
        `toDate` - окончание периода, если null то не проверяется (бесконечно)
        `cids` - список кодов договоров через запятую, если нет - то игнорируются.
        `ucids` - список юзеркарт через запятую, доп.фильтр, если нет - то игнорируются (все карты договора берутся).
        `pids` - список кодов пакетов через запятую, если нет - игнорируются (все пакеты), добавлено для проверки на пересечение с конфликтными
      Returns:
        Лист картапакетов, не null.
      Throws:
        `java.sql.SQLException`
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketList

          public java.util.List<CardPacket> getCardPacketList(java.util.Calendar date)
                                                       throws ru.bitel.bgbilling.common.BGException

      Получение картапакетов существующих в определенную дату.
      Parameters:
        `date` - дата
      Returns:
        Лист картапакетов.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getActiveCardPacketList

          public java.util.List<CardPacket> getActiveCardPacketList(java.util.Calendar date,
                                                                    java.lang.Integer userCardId)
                                                             throws ru.bitel.bgbilling.common.BGException

      Список активных картапакетов
      Parameters:
        `userCardId` - ид юзер_карты, если null - фильтр не используется
        `date` - дата
      Returns:
        список
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getActiveCardPacketList

          public java.util.List<CardPacket> getActiveCardPacketList(java.util.Calendar date,
                                                                    java.util.Collection<java.lang.Integer> userCardIds)
                                                             throws ru.bitel.bgbilling.common.BGException

      Список активных (по дате и статусу) картпакетов для нескольких карт.
      Parameters:
        `userCardIds` - ид юзер_карт, если null - фильтр не используется
        `date` - дата
      Returns:
        список
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getStatusedCardPacketList

          public java.util.List<CardPacket> getStatusedCardPacketList(java.util.Calendar date,
                                                                      int cid,
                                                                      int cardPacketStatus)
                                                               throws ru.bitel.bgbilling.common.BGException

      Список определённого статуса картпакетов договора на конкретную дату
      Parameters:
        `date` - дата
        `cid` - код договора
        `cardPacketStatus` - статус картпакета(!)
      Returns:
        список картпакетов.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getContractActiveCardPacketList

          @Deprecated
          public java.util.List<CardPacket> getContractActiveCardPacketList(java.util.Calendar date,
                                                                                        int cid)
                                                                                 throws ru.bitel.bgbilling.common.BGException

      Deprecated. getStatusedCardPacketList( date, cid, CardPacket.STATUS_ACTIVE )
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacket

          public CardPacket getCardPacket(int usercardId,
                                          int packetId,
                                          java.util.Date date)
                                   throws ru.bitel.bgbilling.common.BGException

      Получение указанного пакета на указанной карте на нужную дату (дата - точка внутри открытого). Подразумевается, что не больше одного (иначе берётся первый попавшийся). Для пакетов обычных дата округляется до дня, для virtual_cinema не округляется.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketList

          public java.util.List<CardPacket> getCardPacketList(int cid,
                                                              java.util.Date date)
                                                       throws ru.bitel.bgbilling.common.BGException

      Список картпакетов договора
      Parameters:
        `cid` - договор
        `date` - дата на которую должен быть периодом, или null если не учитывать
      Returns:
        список картпакетов
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketList

          public java.util.List<CardPacket> getCardPacketList(int userCardId)
                                                       throws ru.bitel.bgbilling.common.BGException

      Список всех картпакетов что привязаны к указанной юзеркарте.
      Parameters:
        `userCardId` - id юзеркарты, должно быть задано.
      Returns:
        список всех картпакетов.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### getCardPacketListByPacketId

          public java.util.List<CardPacket> getCardPacketListByPacketId(int packetId)
                                                                 throws ru.bitel.bgbilling.common.BGException

      Возвращает все картпакеты, использующие указанный пакет.
      Parameters:
        `packetId` - пакетИд
      Returns:
        список картпакетов
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### openCardPackets

          public void openCardPackets(ParameterMap moduleSetup,
                                      CardPacketManager cpm,
                                      java.util.Map<java.lang.Integer,Packet> packetMap,
                                      int cid,
                                      int usercardId,
                                      java.util.List<CardPacket> add,
                                      java.util.Calendar now,
                                      boolean check)
                               throws ru.bitel.bgbilling.common.BGException

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

    - #### removeCardPackets

          public void removeCardPackets(ParameterMap moduleSetup,
                                        CardPacketManager cpm,
                                        java.util.Map<java.lang.Integer,Packet> packetMap,
                                        int cid,
                                        int cardId,
                                        java.util.List<CardPacket> remove,
                                        java.util.Calendar now,
                                        boolean check)
                                 throws ru.bitel.bgbilling.common.BGException

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

    - #### closeCardPackets

          public void closeCardPackets(ParameterMap moduleSetup,
                                       CardPacketManager cpm,
                                       java.util.Map<java.lang.Integer,Packet> packetMap,
                                       int cid,
                                       int cardId,
                                       java.util.List<CardPacket> close,
                                       java.util.Date closeDate,
                                       java.util.Calendar now,
                                       boolean check)
                                throws ru.bitel.bgbilling.common.BGException

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

    - #### updateCardPackets

          public void updateCardPackets(ParameterMap moduleSetup,
                                        CardPacketManager cpm,
                                        java.util.Map<java.lang.Integer,Packet> packetMap,
                                        int cid,
                                        int cardId,
                                        java.util.List<CardPacket> update,
                                        java.util.Calendar now,
                                        boolean check)
                                 throws ru.bitel.bgbilling.common.BGException

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

    - #### synchronizeCardPacketFromTo

          public void synchronizeCardPacketFromTo(int uidSrc,
                                                  int uidDest,
                                                  java.util.Set<java.lang.Integer> ignorePackets,
                                                  java.util.Date newDateFrom)
                                           throws ru.bitel.bgbilling.common.BGException

      Клонирование всей подписки с одной карты на другую. Используется в мультируме, например. Делаться старается умно и подразумевается что многократный вызов делать лишнего не будет. Делаем все, не только активные.
      Parameters:
        `uidSrc` - ид юзер_карты откуда копировать
        `uidDest` - ид юзер_карты куда копировать
        `ignorePackets` - ид пакетов которые игнорировать при переносе
        `newDateFrom` - дата, которую ставить как dateFrom для создаваемых пакетов, если null то оставлять как на оригинальной карте
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### isEqualSubscribe

          protected static boolean isEqualSubscribe(java.util.List<CardPacket> list1,
                                                    java.util.List<CardPacket> list2)

    - #### truncatePacketsToCard

          public void truncatePacketsToCard(UserCard uc)
                                     throws ru.bitel.bgbilling.common.BGException

      Костыль. Предназначние: "обрезка пакетов карты под её период". Выполняется изначально при закрытии "update" зависимой карты, ибо иначе ругается, что пакеты выходят за пределы. На будущее подумать: 1) вынести такой вопрос при закрытии и на обычные карты, т.е. при закрытии если с периодами беда спросить "подрезать пакеты" 2) отказаться от этого и просто не проверять пакеты для зависимых карт при закрытии.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### replaceCardPackets

          public void replaceCardPackets(int cid,
                                         java.util.Date dateFrom,
                                         java.util.Set<java.lang.Integer> newPacketIds,
                                         java.lang.String commentOpen,
                                         java.lang.String commentClose)
                                  throws ru.bitel.bgbilling.common.BGException

      Замена текущей подписки на новую. Закрытие текущей (если есть), удаление будущей (если есть), и открытие указанной. Для автодействий.
      Parameters:
        `cid` - На всех картах договора.
        `dateFrom` - От указанной даты. [!] Предполагается, что дата должна быть как минимум "сегодня".
        `newPacketIds` - новые пакеты для открытия.
        `commentOpen` - комментарий новой подписки - каждого пакета.
        `commentClose` - комментарий закрытой подписки - каждого пакета.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### replaceCardPacketsUserCard

          public void replaceCardPacketsUserCard(UserCard uc,
                                                 java.util.Date dateFrom,
                                                 java.util.Set<java.lang.Integer> newPacketIds,
                                                 java.lang.String commentOpen,
                                                 java.lang.String commentClose)
                                          throws ru.bitel.bgbilling.common.BGException

      Замена текущей подписки на новую. Закрытие текущей (если есть), удаление будущей (если есть), и открытие указанной. Для автодействий. Для отдельной юзеркарты.
      Throws:
        `ru.bitel.bgbilling.common.BGException`

    - #### checkConflictSamePackets

          public java.util.List<CardPacket> checkConflictSamePackets(java.lang.Integer userCardId,
                                                                     java.lang.Integer packetId,
                                                                     java.util.Date dateFrom,
                                                                     java.util.Date dateTo,
                                                                     java.lang.Integer selfCardPacketId)
                                                              throws ru.bitel.bgbilling.common.BGException

      проверяет картпакет на конфликты с таким же пакетом существующим на какую-то из дат периода возвращает найденные конфликтующие картпакеты, или пустой список, null быть не может точно такой же исключается, если указан selfCardPacketId, т.е. чтобы сам с собой не обнаружил пересечение (например есть в БД а мы редактируем его же)
      Throws:
        `ru.bitel.bgbilling.common.BGException`