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

# Class CardPacketManager

java.lang.Object
ru.bitel.bgbilling.kernel.base.server.logger.BGLogger
ru.bitel.common.dao.AbstarctDaoConstant
ru.bitel.bgbilling.modules.cerbercrypt.server.bean.CardPacketManager

public class CardPacketManager extends ru.bitel.common.dao.AbstarctDaoConstant
Менеджер картпакетов.

- ## Field Summary

  ### Fields inherited from class ru.bitel.common.dao.AbstarctDaoConstant

  `ERROR, fields, SQL_ALL, SQL_AND, SQL_CALC_FOUND_ROWS, SQL_DELETE, SQL_DISTINCT, SQL_EQ, SQL_EQCS, SQL_FROM, SQL_GROUP, SQL_IN, SQL_INSERT, SQL_JOIN, SQL_LEFT_JOIN, SQL_LIMIT, SQL_NOT_IN, SQL_ON, SQL_ON_DUPLICATE_KEY_UPDATE, SQL_ORDER, SQL_SELECT, SQL_SET, SQL_UPDATE, SQL_VALUES, SQL_WHERE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CardPacketManager(Connection con, int mid)`
  `CardPacketManager(Connection con, int mid, int userId)`

- ## Method Summary

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

  ### Methods inherited from class ru.bitel.common.dao.AbstarctDaoConstant

  `getSQLOrder, psSetDate, psSetInt, psSetString`

  ### Methods inherited from class ru.bitel.bgbilling.kernel.base.server.logger.BGLogger

  `error, error, error, getLogger, logError, logError, warn`

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

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

- ## Constructor Details

  - ### CardPacketManager

    public CardPacketManager(Connection con, int mid)

  - ### CardPacketManager

    public CardPacketManager(Connection con, int mid, int userId)

- ## Method Details

  - ### 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 List<CardPacket> getCardPacketList(int contractId, int usercardId, Date date, boolean virtualCinema) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getCardPacketList

    public List<CardPacket> getCardPacketList(int contractId, int usercardId, int objectId, Date date, boolean isVirtualCinema) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getFutureCardPacketList

    public List<CardPacket> getFutureCardPacketList(int cid, int usercardId, 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 List<CardPacket> getCalculateCardPacketList(Date fromDate, Date toDate, String cids, String ucids, String pids) throws ru.bitel.bgbilling.common.BGException
    Получение картапакетов, существующих в определенный период времени для определенных договоров, сортировка по коду карты. Если cids null/пустой, то не учитывается, по всем договорам. Внимание: не учитываются статусы, зависимости, привязки подчинённых к "основным" итд, только период действия учитываются и список договоров. ВНУТРИ: сортировка по коду карты ОБЯЗАТЕЛЬНА!, на это завязан алгоритм обсчета.
    Parameters:
      `fromDate` - начало периода, если null то не проверяется (бесконечно)
      `toDate` - окончание периода, если null то не проверяется (бесконечно)
      `cids` - список кодов договоров через запятую, если нет - то игнорируются.
      `ucids` - список юзеркарт через запятую, доп.фильтр, если нет - то игнорируются (все карты договора берутся).
      `pids` - список кодов пакетов через запятую, если нет - игнорируются (все пакеты), добавлено для проверки на пересечение с конфликтными
    Returns:
      Лист картапакетов, не null.
    Throws:
      `SQLException`
      `ru.bitel.bgbilling.common.BGException`

  - ### getCardPacketList

    public List<CardPacket> getCardPacketList(Calendar date) throws ru.bitel.bgbilling.common.BGException
    Получение картапакетов существующих в определенную дату.
    Parameters:
      `date` - дата
    Returns:
      Лист картапакетов.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getActiveCardPacketList

    public List<CardPacket> getActiveCardPacketList(Calendar date, Integer userCardId) throws ru.bitel.bgbilling.common.BGException
    Список активных картапакетов
    Parameters:
      `date` - дата
      `userCardId` - ид юзер_карты, если null - фильтр не используется
    Returns:
      список
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getActiveCardPacketList

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

  - ### getStatusedCardPacketList

    public List<CardPacket> getStatusedCardPacketList(Calendar date, int cid, CardPacketStatus cardPacketStatus) throws ru.bitel.bgbilling.common.BGException
    Список определённого статуса картпакетов договора на конкретную дату
    Parameters:
      `date` - дата
      `cid` - код договора
      `cardPacketStatus` - статус картпакета(!)
    Returns:
      список картпакетов.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getContractActiveCardPacketList

    @Deprecated public List<CardPacket> getContractActiveCardPacketList(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, Date date) throws ru.bitel.bgbilling.common.BGException
    Получение указанного пакета на указанной карте на нужную дату (дата - точка внутри открытого). Подразумевается, что не больше одного (иначе берётся первый попавшийся). Для пакетов обычных дата округляется до дня, для virtual_cinema не округляется.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getCardPacketList

    public List<CardPacket> getCardPacketList(int cid, Date date) throws ru.bitel.bgbilling.common.BGException
    Список картпакетов договора
    Parameters:
      `cid` - договор
      `date` - дата на которую должен быть периодом, или null если не учитывать
    Returns:
      список картпакетов
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### getCardPacketList

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

  - ### getCardPacketListByPacketId

    public List<CardPacket> getCardPacketListByPacketId(int packetId) throws ru.bitel.bgbilling.common.BGException
    Возвращает все картпакеты, использующие указанный пакет.
    Parameters:
      `packetId` - пакетИд
    Returns:
      список картпакетов
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### openCardPackets

    public void openCardPackets(ConnectionSet connectionSet, ParameterMap moduleSetup, Map<Integer,Packet> packetMap, int cid, int usercardId, List<CardPacket> add, Calendar now, boolean check) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### removeCardPackets

    public void removeCardPackets(ConnectionSet connectionSet, ParameterMap moduleSetup, Map<Integer,Packet> packetMap, int cid, int cardId, List<CardPacket> remove, Calendar now, boolean check) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### closeCardPackets

    public void closeCardPackets(ConnectionSet connectionSet, ParameterMap moduleSetup, Map<Integer,Packet> packetMap, int cid, int cardId, List<CardPacket> close, Date closeDate, Calendar now, boolean check) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### updateCardPackets

    public void updateCardPackets(ConnectionSet connectionSet, ParameterMap moduleSetup, Map<Integer,Packet> packetMap, int cid, int cardId, List<CardPacket> update, Calendar now, boolean check) throws ru.bitel.bgbilling.common.BGException
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### synchronizeCardPacketFromTo

    public void synchronizeCardPacketFromTo(int uidSrc, int uidDest, Set<Integer> ignorePackets, 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(List<CardPacket> list1, 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, Date dateFrom, Set<Integer> newPacketIds, String commentOpen, String commentClose) throws Exception
    Замена текущей подписки на новую. Закрытие текущей (если есть), удаление будущей (если есть), и открытие указанной. Для автодействий.
    Parameters:
      `cid` - На всех картах договора.
      `dateFrom` - От указанной даты. [!] Предполагается, что дата должна быть как минимум "сегодня".
      `newPacketIds` - новые пакеты для открытия.
      `commentOpen` - комментарий новой подписки - каждого пакета.
      `commentClose` - комментарий закрытой подписки - каждого пакета.
    Throws:
      `Exception`

  - ### replaceCardPacketsUserCard

    public void replaceCardPacketsUserCard(UserCard uc, Date dateFrom, Set<Integer> newPacketIds, String commentOpen, String commentClose) throws ru.bitel.bgbilling.common.BGException
    Замена текущей подписки на новую. Закрытие текущей (если есть), удаление будущей (если есть), и открытие указанной. Для автодействий. Для отдельной юзеркарты.
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### checkConflictSamePackets

    public List<CardPacket> checkConflictSamePackets(Integer userCardId, Integer packetId, Date dateFrom, Date dateTo, Integer selfCardPacketId) throws ru.bitel.bgbilling.common.BGException
    проверяет картпакет на конфликты с таким же пакетом существующим на какую-то из дат периода возвращает найденные конфликтующие картпакеты, или пустой список, null быть не может точно такой же исключается, если указан selfCardPacketId, т.е. чтобы сам с собой не обнаружил пересечение (например есть в БД а мы редактируем его же)
    Throws:
      `ru.bitel.bgbilling.common.BGException`