{"version":3,"file":"static/js/main-a8efc1db.594e7f0c.js","mappings":"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","sources":["sagas/add-to-portfolio.saga.ts","sagas/address.saga.ts","sagas/admin-inventory-edit.saga.tsx","sagas/allbwics.saga.tsx","sagas/amr-arranger-pipeline.saga.ts","sagas/amr-pipeline-common.saga.ts","sagas/amr-transaction-analytics.saga.ts","sagas/amr-transaction-history.saga.ts","sagas/api-operation.saga.ts","sagas/asset-manager.saga.ts","sagas/banks.saga.ts","sagas/bd-inventory.saga.ts","sagas/bid-on-behalf.saga.ts","sagas/blast-message.saga.ts","sagas/blotter.saga.js","sagas/broker-dealer-bidding.saga.ts","sagas/broker-dealer-contact-list.saga.ts","sagas/broker-dealer-list.saga.ts","sagas/broker-dealer-user-list.saga.ts","sagas/bwic-log.saga.ts"],"sourcesContent":["import { call, put, select, takeLatest } from \"redux-saga/effects\";\r\nimport { getType } from \"typesafe-actions\";\r\nimport { addToPortfolioActions } from \"../actions/add-to-portfolio.actions\";\r\nimport { portfolioService } from \"../services\";\r\nimport { errorActions } from \"../actions\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { ApiError } from \"../types/ApiError\";\r\nimport { BwicPositionBase } from \"../types/bwic/BwicPositionBase\";\r\nimport { jsonUtils } from \"../utils\";\r\nimport { portfolioListActions } from \"../actions/portfolio-list.actions\";\r\nimport { Portfolio } from \"../types/portfolio/Portfolio\";\r\n\r\nfunction* watchAddSecurityToPortfolio(action: { type: string, payload: { position: BwicPositionBase, size: Number, newPortfolioName?: string } }) {\r\n const portfolio: Portfolio | undefined = yield select((s: AppState) => s.addToPortfolio.selectedPortfolio);\r\n\r\n const { securityId, isinCusip, ticker, rating } = action.payload.position;\r\n\r\n const securityModel = {\r\n securityId,\r\n isinCusip,\r\n ticker,\r\n rating,\r\n size: action.payload.size\r\n };\r\n\r\n const { newPortfolioName } = action.payload\r\n\r\n try {\r\n yield put(addToPortfolioActions.setSubmittingProgress(true));\r\n if (newPortfolioName) {\r\n yield call(portfolioService.createNewPortfolio, newPortfolioName, [securityModel], true);\r\n } else {\r\n yield call(portfolioService.saveSecurityPosition, portfolio?.id, securityModel);\r\n }\r\n yield put(addToPortfolioActions.reset());\r\n yield put(portfolioListActions.reset());\r\n } catch (e) {\r\n const error: ApiError | null = jsonUtils.tryParse(e.message);\r\n\r\n if (error) {\r\n yield put(addToPortfolioActions.storeError(error));\r\n } else {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n }\r\n finally {\r\n yield put(addToPortfolioActions.setSubmittingProgress(false));\r\n }\r\n}\r\n\r\nexport function* watchAddToPortfolio() {\r\n yield takeLatest(getType(addToPortfolioActions.addSecurityToPortfolio), watchAddSecurityToPortfolio);\r\n}\r\n","import { ActionType, getType } from 'typesafe-actions';\r\nimport { put, takeLatest, call } from 'redux-saga/effects';\r\nimport { errorActions } from '../actions';\r\nimport { addressActions } from '../actions/address.actions';\r\nimport { addressService } from '../services/address.service';\r\nimport { Country } from '../types/location/Country';\r\nimport { State } from '../types/location/State';\r\nimport { City } from '../types/location/City';\r\n\r\nfunction* watchLoadCountries() {\r\n try {\r\n const countries: Country[] = yield call(addressService.getCountries);\r\n\r\n yield put(addressActions.loadCountriesResponse(countries));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchLoadStates(action: ActionType) {\r\n try {\r\n const { countryId } = action.payload;\r\n\r\n const states: State[] = yield call(addressService.getStates, countryId);\r\n\r\n yield put(addressActions.loadStatesResponse(states));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchLoadCities(action: ActionType) {\r\n try {\r\n const { countryId, stateId } = action.payload;\r\n\r\n const cities: City[] = yield call(addressService.getCities, countryId, stateId);\r\n\r\n yield put(addressActions.loadCitiesResponse(cities));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nexport function* watchAddress() {\r\n yield takeLatest(getType(addressActions.loadCountries), watchLoadCountries);\r\n yield takeLatest(getType(addressActions.loadStates), watchLoadStates);\r\n yield takeLatest(getType(addressActions.loadCities), watchLoadCities);\r\n}\r\n","import { ActionType, getType } from 'typesafe-actions';\r\nimport { all, call, put, select, takeEvery } from 'redux-saga/effects';\r\nimport { shouldRequest } from \"../utils\";\r\nimport { adminInventoryEditActions } from '../actions/admin-inventory-edit.actions';\r\nimport { errorActions } from '../actions';\r\nimport { inventoryService } from \"../services/inventory.service\";\r\nimport { AppState } from '../types/state/AppState';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { InventoryPosition } from '../types/inventory/InventoryPosition';\r\nimport { accountActions } from '../constants';\r\nimport { companiesService } from '../services';\r\nimport { CompanySlim } from '../types/company/CompanySlim';\r\n\r\nfunction* watchLoadBrokerDealerInventory(action: ActionType) {\r\n const requestState: RequestState = yield select((state: AppState) => state.entities.adminInventoryEdit.requestState);\r\n\r\n if (shouldRequest(requestState)) {\r\n yield put(adminInventoryEditActions.requestInventory());\r\n let company: CompanySlim | undefined;\r\n try {\r\n const [response, company]: [\r\n response: { inventorySecurities: InventoryPosition[]; lockModifiedDate?: Date; },\r\n company: CompanySlim] =\r\n yield all([\r\n call(inventoryService.getAdminEditInventory, action.payload.companyId),\r\n call(companiesService.getCompany, undefined, action.payload.companyId)\r\n ]);\r\n\r\n yield put(adminInventoryEditActions.requestInventorySuccess(\r\n company,\r\n response.inventorySecurities,\r\n response.lockModifiedDate)\r\n );\r\n } catch (e) {\r\n if (e.status === 404) {\r\n yield put(adminInventoryEditActions.requestInventorySuccess(company, []));\r\n } else {\r\n yield put(adminInventoryEditActions.requestInventoryError());\r\n yield put(errorActions.criticalError(e));\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(adminInventoryEditActions.reset());\r\n}\r\n\r\nexport function* watchAdminInventoryEdit() {\r\n yield takeEvery(getType(adminInventoryEditActions.loadInventory), watchLoadBrokerDealerInventory);\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n}\r\n","import { all, call, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { BwicSearchResult } from \"../types/bwic-monitor/BwicSearchResult\";\r\nimport { bwicService } from \"../services\";\r\nimport { allBWICSActions, pushBwicActions } from \"../actions\";\r\nimport { ActionType } from \"typesafe-actions\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { Bid } from \"../types/bidding/Bid\";\r\n\r\ninterface BidsToUpdate {\r\n bwicReferenceName: string,\r\n positionId: number;\r\n bids: Bid[]\r\n}\r\n\r\nfunction* watchBwicStatusChange(action: ActionType) {\r\n const originalBwic: BwicSearchResult = yield select((s: AppState) => s.allBWICS.bwics?.find(b => b.referenceName === action.bwicReferenceName))\r\n if (originalBwic && (originalBwic.isMy || originalBwic.isParticipant)) {\r\n const freshBwic: BwicSearchResult = yield call(bwicService.getByReferenceName, action.bwicReferenceName);\r\n const bidsToUpdate: BidsToUpdate[] = freshBwic.securities\r\n .filter(s => s.bids?.length)\r\n .map(s => ({ bwicReferenceName: action.bwicReferenceName, positionId: s.id, bids: s.bids }))\r\n\r\n yield all(bidsToUpdate.map(b => put(allBWICSActions.addPositionBids(b.bwicReferenceName, b.positionId, b.bids))))\r\n }\r\n}\r\n\r\nexport function* watchAllBwics() {\r\n yield takeEvery(pushBwicActions.bwicStatusChanged, watchBwicStatusChange);\r\n}\r\n","import { all, call, put, select, takeLatest } from 'redux-saga/effects';\r\nimport { Action, ActionType, getType } from 'typesafe-actions';\r\nimport { AppState } from '../types/state/AppState';\r\nimport { constants, gridColumns, roles } from '../constants';\r\nimport { PipelineType } from '../types/amr-pipeline/enums/PipelineType';\r\nimport { ArrangerPipelineFilters, PipelineFilterState } from '../types/state/PipelineFilterState';\r\nimport { amrArrangerPipelineActions } from '../actions/amr-arranger-pipeline.actions';\r\nimport { ArrangerPipelineState } from '../types/state/ArrangerPipelineState';\r\nimport {\r\n selectedBooleanOption,\r\n selectedRadioOption,\r\n selectedRangeOptions,\r\n selectedSelectGroupOptions,\r\n} from '../utils/amr-pipeline-filter.utils';\r\nimport { mergeSortCriteria } from '../utils/amr-pipeline.utils';\r\nimport { amrArrangerPipelineService } from '../services/amr-arranger-pipeline.service';\r\nimport { ArrangerPipeline, Category } from '../types/amr-pipeline/models/ArrangerPipeline';\r\nimport { RequestState } from '../constants/request-state';\r\nimport {\r\n arrangerPipelineDealsSelector,\r\n issuanceMonitorFilterSelector,\r\n} from '../selectors/amr-pipeline.selector';\r\nimport { errorActions, gridActions } from '../actions';\r\nimport { Deal } from '../types/amr-pipeline/models/Deal';\r\nimport { Company } from '../types/amr-pipeline/models/Company';\r\nimport { GridDataItem } from '../types/state/GridState';\r\nimport { ArrangerPipelineDealsState } from '../types/state/ArrangerPipelineDealsState';\r\nimport { saveAs } from 'file-saver';\r\nimport moment from 'moment';\r\nimport { FilterSelectGroup } from '../types/filters/FilterGroup';\r\nimport { compareStrings } from '../utils/compare.utils';\r\nimport { user } from '../user';\r\nimport { LookupDataItem } from '../components/grid/Cells/Lookup2';\r\nimport { store } from '../store';\r\nimport { arrangers, collateralManagers, dealsLegalNames } from '../utils/filtering/serializers/serializer.definitions';\r\nimport { QueryStringArgumentSerializer } from '../utils/filtering/serializers/QueryStringArgumentSerializer';\r\nimport { queryStringSerializer } from '../utils/filtering';\r\nimport { createFilterActions } from '../actions/filter.actions';\r\nimport { UserConfigFilter } from '../types/user-config/UserConfigFilter';\r\nimport { SubscriptionFeature } from '../types/billing/SubscriptionFeature';\r\nimport { ArrangerPipelineStatistic } from '../types/amr-pipeline/models/ArrangerPipelineStatistic';\r\nimport { history } from '../history';\r\nimport { amrCompaniesService } from '../services/amr-companies.service';\r\nimport { HavingDealType } from '../types/amr-pipeline/enums/HavingDealType';\r\nimport { dealsService } from '../services/deals.service';\r\n\r\nconst filterActions = createFilterActions(PipelineType.ArrangerPipeline);\r\n\r\nfunction convertGridDataItemToArrangerPipeline(gridDataItem: GridDataItem) {\r\n const {\r\n referenceName,\r\n dealReferenceName,\r\n collateralManagerReferenceName,\r\n arrangerReferenceName,\r\n dealLegalName,\r\n collateralType,\r\n type,\r\n nonCallPeriodEnd,\r\n reinvestmentPeriodEnd,\r\n expectedTiming,\r\n dealStage,\r\n euCompliance,\r\n anchor,\r\n equity,\r\n disclosureFile,\r\n } = gridDataItem;\r\n\r\n return {\r\n referenceName,\r\n dealReferenceName,\r\n collateralManagerReferenceName,\r\n arrangerReferenceName,\r\n dealLegalName,\r\n type: type || null,\r\n collateralType: collateralType || null,\r\n nonCallPeriodEnd,\r\n reinvestmentPeriodEnd,\r\n expectedTiming,\r\n dealStage: dealStage || null,\r\n euCompliance: euCompliance || null,\r\n anchor: anchor || null,\r\n equity: equity || null,\r\n disclosureFileReferenceName: disclosureFile ? disclosureFile.referenceName : null,\r\n };\r\n}\r\n\r\nfunction getFilterCriteria(filter: ArrangerPipelineFilters) {\r\n return {\r\n collateralManagerReferenceNames: selectedSelectGroupOptions(filter.managers),\r\n arrangerReferenceNames: selectedSelectGroupOptions(filter.arrangers),\r\n collateralTypes: selectedSelectGroupOptions(filter.collateralType),\r\n euCompliance: selectedBooleanOption(filter.euCompliance),\r\n anchor: selectedBooleanOption(filter.anchor),\r\n reinvestmentPeriodEnd: selectedRangeOptions(filter.riEnd),\r\n nonCallPeriodEnd: selectedRangeOptions(filter.ncEnd),\r\n equities: selectedRadioOption(filter.equity),\r\n };\r\n}\r\n\r\nfunction filterExistingOptions(optionsNames: string[], optionFilter: FilterSelectGroup) {\r\n return optionsNames.filter(o => optionFilter.filter.find(f => f.value === o));\r\n}\r\n\r\nfunction* setFilterFromSearchString(filter: ArrangerPipelineFilters) {\r\n const queryString = history.location.search;\r\n\r\n if (!queryString) {\r\n return;\r\n }\r\n\r\n let collateralManagerReferenceNames: string[] = [];\r\n let arrangerReferenceNames: string[] = [];\r\n let dealLegalNames: string[] = [];\r\n\r\n const collateralManagersSerializer = collateralManagers(\r\n collateralManagers =>\r\n (collateralManagerReferenceNames = filterExistingOptions(collateralManagers, filter.managers)),\r\n filter.managers.filter.map(filter => filter.value as string),\r\n );\r\n\r\n const arrangersSerializer = arrangers(\r\n arrangers => (arrangerReferenceNames = filterExistingOptions(arrangers, filter.arrangers)),\r\n filter.arrangers.filter.map(filter => filter.value as string),\r\n );\r\n\r\n const serializers: QueryStringArgumentSerializer[] = [\r\n collateralManagersSerializer,\r\n arrangersSerializer,\r\n dealsLegalNames(legalNames => (dealLegalNames = legalNames ?? [])),\r\n ];\r\n\r\n queryStringSerializer.deserialize(queryString, serializers);\r\n\r\n if (collateralManagerReferenceNames.length || arrangerReferenceNames.length || dealLegalNames.length) {\r\n yield put(filterActions.resetFiltersAndUnselectSavedFilter());\r\n yield put(filterActions.resetFiltersVisibility());\r\n }\r\n\r\n function* selectOptionFilter(referenceName: string, filterName: string) {\r\n const selectOptionFilter: Action = yield call(filterActions.filterSelectChange, referenceName, filterName);\r\n yield put(selectOptionFilter);\r\n }\r\n\r\n yield all(collateralManagerReferenceNames.map(manager => selectOptionFilter(manager, 'managers')));\r\n yield all(arrangerReferenceNames.map(arranger => selectOptionFilter(arranger, 'arrangers')));\r\n yield put(amrArrangerPipelineActions.selectDealsFromSearch(dealLegalNames));\r\n\r\n history.replace(history.location.pathname);\r\n}\r\n\r\nfunction* checkIfArrangerPipelineExist() {\r\n try {\r\n const onePipeline: ArrangerPipeline[] = yield call(\r\n amrArrangerPipelineService.getArrangerPipelines,\r\n { count: 1 },\r\n [],\r\n );\r\n\r\n const anyPipelineExists = !!onePipeline.length;\r\n yield put(amrArrangerPipelineActions.setAnyPipelineExists(anyPipelineExists));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchArrangerPipelineRequest() {\r\n const {\r\n deals: { sortBy, sortDirection, selectedDealsLegalNames, offset },\r\n filter: { lastAppliedFilter },\r\n }: ArrangerPipelineState = yield select((state: AppState) => state.issuanceMonitor.amrArrangerPipeline);\r\n\r\n const filterCriteria = {\r\n ...getFilterCriteria(lastAppliedFilter),\r\n deals: selectedDealsLegalNames,\r\n count: constants.defaultTransactionsSearchCriteria.count,\r\n offset,\r\n };\r\n\r\n const sortCriteria = mergeSortCriteria(sortBy, sortDirection, constants.defaultArrangerPipelineOrderCriteria);\r\n\r\n try {\r\n const pipelines: ArrangerPipeline[] = yield call(\r\n amrArrangerPipelineService.getArrangerPipelines,\r\n filterCriteria,\r\n sortCriteria,\r\n );\r\n\r\n let nonVisiblePipelinesCount: number | undefined;\r\n\r\n if (!user.hasFeatures(SubscriptionFeature.IssuanceMonitorFullAccess)) {\r\n nonVisiblePipelinesCount = yield call(amrArrangerPipelineService.getArrangerPipelinesCount, filterCriteria);\r\n }\r\n\r\n const arrangerPipelineDeals: Partial[] = yield call(amrArrangerPipelineService.getDealsLegalNames);\r\n\r\n if (!pipelines.length) {\r\n // check if some pipeline exist for current user\r\n yield call(checkIfArrangerPipelineExist);\r\n }\r\n\r\n yield put(amrArrangerPipelineActions.dealsSearchResponse(RequestState.success, arrangerPipelineDeals));\r\n yield put(\r\n amrArrangerPipelineActions.arrangerPipelinesResponse(\r\n RequestState.success,\r\n pipelines,\r\n nonVisiblePipelinesCount,\r\n ),\r\n );\r\n } catch (error) {\r\n yield put(amrArrangerPipelineActions.arrangerPipelinesResponse(RequestState.failure));\r\n } finally {\r\n yield put(amrArrangerPipelineActions.setEditLoadingStatus(false));\r\n }\r\n}\r\n\r\nfunction* watchExport() {\r\n const {\r\n deals: { sortBy, sortDirection, selectedDealsLegalNames },\r\n filter: { lastAppliedFilter },\r\n }: ArrangerPipelineState = yield select((state: AppState) => state.issuanceMonitor.amrArrangerPipeline);\r\n\r\n const filterCriteria = {\r\n ...getFilterCriteria(lastAppliedFilter),\r\n deals: selectedDealsLegalNames,\r\n count: constants.defaultTransactionsSearchCriteria.count,\r\n };\r\n const sortCriteria = mergeSortCriteria(sortBy, sortDirection, constants.defaultArrangerPipelineOrderCriteria);\r\n\r\n yield put(amrArrangerPipelineActions.exportLoad(true));\r\n\r\n try {\r\n const file: { blob: Blob } = yield call(\r\n amrArrangerPipelineService.exportArrangerPipelines,\r\n filterCriteria,\r\n sortCriteria,\r\n );\r\n saveAs(file.blob, `Arranger Pipeline - ${moment().format(constants.issuanceMonitorExportDateFormat)}.xlsx`);\r\n } catch (error) {\r\n yield put(errorActions.error(error));\r\n } finally {\r\n yield put(amrArrangerPipelineActions.exportLoad(false));\r\n }\r\n}\r\n\r\nfunction* watchDealsRequest(action: ActionType) {\r\n try {\r\n const deals: Deal[] = yield call(dealsService.getDealsList, action.payload.searchTerm);\r\n\r\n yield put(amrArrangerPipelineActions.changeDealReferenceName(null));\r\n yield put(amrArrangerPipelineActions.dealsResponse(RequestState.success, deals));\r\n } catch (error) {\r\n yield put(amrArrangerPipelineActions.dealsResponse(RequestState.failure));\r\n }\r\n}\r\n\r\nfunction* watchApplyFilterAndSearch() {\r\n yield put(amrArrangerPipelineActions.resetPipelines());\r\n yield put(filterActions.applyFilter());\r\n\r\n try {\r\n yield put(amrArrangerPipelineActions.arrangerPipelinesRequest());\r\n yield put(amrArrangerPipelineActions.arrangerPipelineStatisticRequest());\r\n } catch (e) {\r\n yield put(filterActions.resetFilter());\r\n }\r\n}\r\n\r\nfunction* watchSummaryRequest() {\r\n const {\r\n deals: { selectedDealsLegalNames },\r\n filter: { lastAppliedFilter },\r\n }: ArrangerPipelineState = yield select((state: AppState) => state.issuanceMonitor.amrArrangerPipeline);\r\n\r\n const filterCriteria = {\r\n ...getFilterCriteria(lastAppliedFilter),\r\n deals: selectedDealsLegalNames,\r\n };\r\n\r\n try {\r\n const summary: ArrangerPipelineStatistic = yield call(\r\n amrArrangerPipelineService.getArrangerPipelinesStatistic,\r\n filterCriteria,\r\n );\r\n\r\n yield put(amrArrangerPipelineActions.arrangerPipelineStatisticResponse(summary));\r\n } catch (e) {\r\n yield put(errorActions.error(e));\r\n }\r\n}\r\n\r\nfunction* watchInitFilter() {\r\n const pipelineType = PipelineType.ArrangerPipeline;\r\n const filterSelector = issuanceMonitorFilterSelector(pipelineType);\r\n const imFilterState: PipelineFilterState = yield select(filterSelector);\r\n\r\n const { filter, initialFilter } = imFilterState;\r\n\r\n if (!initialFilter) {\r\n if (!filter.managers.filter.length) {\r\n yield put(\r\n filterActions.storeFilterData.request({\r\n filterType: PipelineType.ArrangerPipeline,\r\n filterName: 'managers',\r\n }),\r\n );\r\n yield put(\r\n filterActions.storeFilterData.request({\r\n filterType: PipelineType.ArrangerPipeline,\r\n filterName: 'arrangers',\r\n }),\r\n );\r\n\r\n const managers: Company[] = yield call(\r\n amrCompaniesService.getManagersList,\r\n HavingDealType.CmHavingAllPublishedDeals,\r\n );\r\n const arrangers: Company[] = yield call(amrCompaniesService.getArrangersList, true);\r\n\r\n yield put(\r\n filterActions.storeFilterData.success({\r\n filterType: PipelineType.ArrangerPipeline,\r\n filterName: 'managers',\r\n data: managers\r\n .sort((a, b) => a.legalName.localeCompare(b.legalName))\r\n .map(m => ({\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n value: m.referenceName,\r\n text: m.legalName,\r\n })),\r\n }),\r\n );\r\n yield put(\r\n filterActions.storeFilterData.success({\r\n filterType: PipelineType.ArrangerPipeline,\r\n filterName: 'arrangers',\r\n data: arrangers\r\n .sort((a, b) => a.legalName.localeCompare(b.legalName))\r\n .map(a => ({\r\n selected: false,\r\n disabled: false,\r\n visible: true,\r\n value: a.referenceName,\r\n text: a.legalName + (a.code ? ' (' + a.code + ')' : ''),\r\n })),\r\n }),\r\n );\r\n }\r\n\r\n yield initFilter();\r\n }\r\n}\r\n\r\nfunction* initFilter() {\r\n const pipelineType = PipelineType.ArrangerPipeline;\r\n const filterSelector = issuanceMonitorFilterSelector(pipelineType);\r\n\r\n const imFilterState: PipelineFilterState = yield select(filterSelector);\r\n const { filter } = imFilterState;\r\n\r\n yield put(filterActions.init(filter));\r\n\r\n const hasImFiltersAccess = user.hasFeatures(SubscriptionFeature.IssuanceMonitorFiltersEmailAlerts);\r\n\r\n if (hasImFiltersAccess) {\r\n const defaultFilter: UserConfigFilter = yield select((state: AppState) =>\r\n state.imUserConfig.filtersConfig.ApFilter.value.find(filter => filter.default),\r\n );\r\n\r\n yield put(filterActions.selectFilterFromConfig(defaultFilter));\r\n yield setFilterFromSearchString(filter);\r\n }\r\n\r\n yield call(watchApplyFilterAndSearch);\r\n}\r\n\r\nfunction* watchResetFilter() {\r\n const resetFiltersAndUnselectSavedFilter: Action = yield call(\r\n filterActions.resetFiltersAndUnselectSavedFilter,\r\n );\r\n\r\n yield put(resetFiltersAndUnselectSavedFilter);\r\n yield call(watchApplyFilterAndSearch);\r\n}\r\n\r\nfunction* watchEdit() {\r\n const userCompany: Company = yield select((state: AppState) => state.issuanceMonitor.amrPipelineCommon.userCompany);\r\n\r\n const isBD = user.hasRoles(...roles.bd());\r\n\r\n yield put(amrArrangerPipelineActions.resetPipelines());\r\n\r\n try {\r\n const data: ArrangerPipeline[] = yield call(\r\n amrArrangerPipelineService.getArrangerPipelines,\r\n { count: constants.gridRowsLimit, category: Category.ArrangerPipeline },\r\n constants.defaultArrangerPipelineOrderCriteria,\r\n );\r\n\r\n const pipelines = data.filter(i => i.category === Category.ArrangerPipeline);\r\n\r\n yield put(amrArrangerPipelineActions.arrangerPipelinesResponse(RequestState.success, pipelines));\r\n\r\n const dataItems =\r\n pipelines.map(p => ({\r\n ...p,\r\n arrangerReferenceName: p.arranger?.referenceName,\r\n collateralManagerReferenceName: p.collateralManager.referenceName,\r\n })) ?? [];\r\n\r\n yield put(amrArrangerPipelineActions.submitArrangerPipelineStatus(false));\r\n yield put(gridActions.reset());\r\n\r\n const managers: Company[] = yield call(amrCompaniesService.getManagersList);\r\n const arrangers: Company[] = !isBD ? yield call(amrCompaniesService.getArrangersList) : [userCompany];\r\n\r\n const managerColumn = {\r\n ...gridColumns.collateralManager,\r\n required: true,\r\n selectSourceItemsCallback: () => {\r\n return managers\r\n .map(m => ({ key: m.referenceName, title: m.legalName }))\r\n .sort((a, b) => compareStrings(a.title, b.title));\r\n },\r\n };\r\n\r\n const arrangerGridColumn = {\r\n ...gridColumns.arranger,\r\n required: !user.hasRoles(roles.Administrator, roles.DataEntry),\r\n };\r\n\r\n const arrangerColumn = {\r\n ...arrangerGridColumn,\r\n selectSourceItemsCallback: () => {\r\n return arrangers\r\n .map(m => ({ key: m.referenceName, title: m.legalName || m.name }))\r\n .sort((a, b) => compareStrings(a.title, b.title));\r\n },\r\n };\r\n\r\n const dealNameColumn = {\r\n ...gridColumns.dealName,\r\n type: 'lookup',\r\n lookup: {\r\n compareCallback: (searchTerm: string, lookupItem: LookupDataItem) => {\r\n const deal: Deal = lookupItem.payload;\r\n return deal.legalName.toLowerCase().startsWith(searchTerm.toLowerCase());\r\n },\r\n fetchCallback: async (searchTerm: string, abortSignal: AbortSignal) => {\r\n store.dispatch(amrArrangerPipelineActions.changeDealReferenceName(null));\r\n\r\n const deals: Deal[] = await dealsService.getDealsNamesList(searchTerm, 'legalName', true);\r\n\r\n return deals.map(d => ({\r\n text: d.legalName,\r\n value: d.referenceName,\r\n payload: d,\r\n }));\r\n },\r\n onLookupItemSelected: (deal: LookupDataItem) => {\r\n store.dispatch(amrArrangerPipelineActions.changeDealReferenceName(deal.value as string));\r\n store.dispatch(amrArrangerPipelineActions.changeDealLegalName(deal.text));\r\n store.dispatch(\r\n amrArrangerPipelineActions.updateFields(\r\n deal.payload.collateralManagerReferenceName,\r\n deal.payload.collateralType,\r\n ),\r\n );\r\n },\r\n },\r\n };\r\n\r\n const columns = gridColumns.arrangerPipeline().map((c: any) => {\r\n if (c.name === gridColumns.dealName.name) {\r\n return dealNameColumn;\r\n }\r\n\r\n if (c.name === gridColumns.collateralManager.name) {\r\n return managerColumn;\r\n }\r\n\r\n if (c.name === gridColumns.arranger.name) {\r\n return arrangerColumn;\r\n }\r\n\r\n return c;\r\n });\r\n\r\n const gridInit: Action = yield call(gridActions.init, dataItems, columns, constants.gridRowsLimit);\r\n const gridValidate: Action = yield call(gridActions.validate);\r\n\r\n yield put(gridInit);\r\n yield put(gridValidate);\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n } finally {\r\n yield put(amrArrangerPipelineActions.setEditLoadingStatus(false));\r\n }\r\n}\r\n\r\nfunction* watchDeleteArrangerPipeline(action: ActionType) {\r\n try {\r\n yield call(amrArrangerPipelineService.deleteArrangerPipeline, action.payload.referenceName);\r\n yield call(watchApplyFilterAndSearch);\r\n } catch (error) {\r\n yield put(errorActions.error(error));\r\n }\r\n}\r\n\r\nfunction* watchSubmit() {\r\n const gridValidate: Action = yield call(gridActions.validate);\r\n\r\n yield put(gridValidate);\r\n\r\n const arrangerPipelineState: ArrangerPipelineDealsState = yield select(arrangerPipelineDealsSelector);\r\n const dataItems = arrangerPipelineState.arrangerPipelines;\r\n const gridDataItems: GridDataItem[] = yield select((state: AppState) => state.grid.dataItems);\r\n const arrangerPipelines = gridDataItems.filter(g => !g.draft);\r\n const isGridValid: boolean = yield select((state: AppState) => state.grid.isValid);\r\n\r\n if (!isGridValid && arrangerPipelines.length) {\r\n yield put(amrArrangerPipelineActions.submitArrangerPipelineStatus(false));\r\n return;\r\n }\r\n\r\n const deletedPipelines =\r\n dataItems?.reduce((acc: Partial[], pipeline: ArrangerPipeline) => {\r\n const isSomePipelineDeleted = !arrangerPipelines.some(\r\n p => !p.draft && p.referenceName === pipeline.referenceName,\r\n );\r\n\r\n if (isSomePipelineDeleted) {\r\n return [\r\n ...acc,\r\n {\r\n referenceName: pipeline.referenceName,\r\n arrangerReferenceName: pipeline.arranger?.referenceName,\r\n removed: true,\r\n },\r\n ];\r\n }\r\n\r\n return acc;\r\n }, []) ?? [];\r\n\r\n try {\r\n const arrangerPipeline = arrangerPipelines.reduce(\r\n (acc: Partial[], pipeline: GridDataItem) => {\r\n if (pipeline.draft) {\r\n return [...acc];\r\n }\r\n\r\n const pipelineEditItem = convertGridDataItemToArrangerPipeline(pipeline);\r\n\r\n return [\r\n ...acc,\r\n pipeline.referenceName ? { ...pipelineEditItem } : { ...pipelineEditItem, added: true },\r\n ];\r\n },\r\n [],\r\n );\r\n\r\n yield call(amrArrangerPipelineService.createOrUpdateArrangerPipeline, [\r\n ...arrangerPipeline,\r\n ...deletedPipelines,\r\n ]);\r\n\r\n yield put(amrArrangerPipelineActions.submitArrangerPipelineStatus(true));\r\n } catch (error) {\r\n yield put(errorActions.error(error));\r\n }\r\n}\r\n\r\nfunction* watchChangeDealReferenceName(action: ActionType) {\r\n const { position, dataItems } = yield select((state: AppState) => state.grid);\r\n\r\n const editingPipeline = dataItems[position.index];\r\n\r\n const insertDataItems: Action = yield call(\r\n gridActions.replaceDataItem,\r\n { ...editingPipeline, dealReferenceName: action.payload.dealReferenceName },\r\n position.index,\r\n );\r\n\r\n yield put(insertDataItems);\r\n}\r\n\r\nfunction* watchUpdateFields(action: ActionType) {\r\n const { position, dataItems } = yield select((state: AppState) => state.grid);\r\n\r\n const editingPipeline = dataItems[position.index];\r\n\r\n const { collateralManagerReferenceName, collateralType } = action.payload;\r\n\r\n const insertDataItems: Action = yield call(\r\n gridActions.replaceDataItem,\r\n { ...editingPipeline, collateralManagerReferenceName, collateralType },\r\n position.index,\r\n );\r\n\r\n yield put(insertDataItems);\r\n}\r\n\r\nfunction* watchChangeDealLegalName(action: ActionType) {\r\n const editingGrid: Action = yield call(gridActions.editing, action.payload.dealLegalName);\r\n const applyEdit: Action = yield call(gridActions.applyOrCancelEdit);\r\n\r\n yield put(editingGrid);\r\n yield put(applyEdit);\r\n}\r\n\r\nexport function* watchArrangerPipelineSaga() {\r\n yield takeLatest(getType(amrArrangerPipelineActions.arrangerPipelinesRequest), watchArrangerPipelineRequest);\r\n yield takeLatest(getType(amrArrangerPipelineActions.applyFilterAndSearch), watchApplyFilterAndSearch);\r\n yield takeLatest(getType(amrArrangerPipelineActions.resetFilter), watchResetFilter);\r\n yield takeLatest(getType(amrArrangerPipelineActions.initFilter), watchInitFilter);\r\n yield takeLatest(getType(amrArrangerPipelineActions.edit), watchEdit);\r\n yield takeLatest(getType(amrArrangerPipelineActions.exportPipelines), watchExport);\r\n yield takeLatest(getType(amrArrangerPipelineActions.dealsRequest), watchDealsRequest);\r\n yield takeLatest(getType(amrArrangerPipelineActions.changeDealReferenceName), watchChangeDealReferenceName);\r\n yield takeLatest(getType(amrArrangerPipelineActions.changeDealLegalName), watchChangeDealLegalName);\r\n yield takeLatest(getType(amrArrangerPipelineActions.updateFields), watchUpdateFields);\r\n yield takeLatest(getType(amrArrangerPipelineActions.submitArrangerPipeline), watchSubmit);\r\n yield takeLatest(getType(amrArrangerPipelineActions.checkIfArrangerPipelineExist), checkIfArrangerPipelineExist);\r\n yield takeLatest(getType(amrArrangerPipelineActions.arrangerPipelineStatisticRequest), watchSummaryRequest);\r\n yield takeLatest(getType(amrArrangerPipelineActions.deleteArrangerPipeline), watchDeleteArrangerPipeline);\r\n}\r\n","import { getType } from 'typesafe-actions';\r\nimport { put, takeLatest, call } from 'redux-saga/effects';\r\nimport { amrPipelineCommonActions, errorActions } from '../actions';\r\nimport { AnyAction } from 'redux';\r\nimport { companiesService } from '../services';\r\nimport { Company } from '../types/amr-pipeline/models/Company';\r\nimport { amrPipelineService } from '../services/amr-pipeline.service';\r\nimport { routes } from '../constants';\r\nimport { user } from '../user';\r\nimport { TransactionResponse } from '../types/amr-pipeline/models/TransactionResponse';\r\nimport { history } from '../history';\r\n\r\nfunction* watchLoadUserCompany(action: AnyAction) {\r\n try {\r\n const company: Company = yield call(companiesService.getCurrentUserCompany, true);\r\n\r\n yield put(amrPipelineCommonActions.loadUserCompanyResponse(company));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* registerUser() {\r\n try {\r\n const company: Company = yield call(companiesService.getCurrentUserCompany, true);\r\n\r\n yield call(amrPipelineService.registerUser, user, company);\r\n yield put(amrPipelineCommonActions.loadUserCompanyResponse(company));\r\n\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n yield put(amrPipelineCommonActions.loadUserCompanyError())\r\n }\r\n}\r\n\r\nfunction* watchRedirectInvitedClientToTransactionDetails() {\r\n try {\r\n const transactions: TransactionResponse = yield call(amrPipelineService.getTransactionsList, { count: 1 });\r\n const transaction = transactions.items[0];\r\n\r\n if (transaction) {\r\n yield call(history.push, routes.transactionDetailUrl(transaction.referenceName, transaction.dealReferenceName));\r\n } else {\r\n yield call(history.push, routes.issuanceMonitorWithNoData);\r\n }\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nexport function* watchAmrPipelineCommon() {\r\n yield takeLatest(getType(amrPipelineCommonActions.loadUserCompanyRequest), watchLoadUserCompany);\r\n yield takeLatest(getType(amrPipelineCommonActions.registerUser), registerUser);\r\n yield takeLatest(\r\n getType(amrPipelineCommonActions.redirectInvitedClientToTransactionDetails),\r\n watchRedirectInvitedClientToTransactionDetails,\r\n );\r\n}\r\n","import moment from 'moment';\r\nimport { mapValues, sumBy, toPairs } from 'lodash';\r\nimport { getType } from \"typesafe-actions\";\r\nimport { put, takeLatest, call, all, select } from \"redux-saga/effects\";\r\nimport { amrTransactionAnalyticsActions, errorActions } from \"../actions\";\r\nimport { AnyAction } from \"redux\";\r\nimport { amrPipelineService } from \"../services/amr-pipeline.service\";\r\nimport { DocumentDownloadsStatistic } from \"../types/amr-pipeline/models/DocumentDownloadsStatistic\";\r\nimport {\r\n TransactionClientActivity,\r\n TransactionViewHistory,\r\n TransactionSession,\r\n} from '../types/amr-pipeline/models/TransactionSession';\r\nimport { TransactionAccessType } from '../types/amr-pipeline/enums/TransactionAccessType';\r\nimport { compareDates } from '../utils/compare.utils';\r\nimport { TransactionVersion } from '../types/amr-pipeline/models/TransactionVersion';\r\nimport { AppState } from '../types/state/AppState';\r\nimport { transformToTreeSelect, withDate } from '../utils/analytics.utils';\r\nimport { groupDocsWithAccessType } from '../utils/analytics.utils';\r\n\r\nconst UserAccessTypes = [\r\n TransactionAccessType.Overview,\r\n TransactionAccessType.Structure,\r\n TransactionAccessType.TargetPortfolio,\r\n TransactionAccessType.Documents,\r\n TransactionAccessType.Iois,\r\n TransactionAccessType.ComparableDeals,\r\n];\r\n\r\nfunction groupByAccessCountAndVersion(sessions: TransactionSession[], versions: TransactionVersion[]) {\r\n return sessions\r\n .reduce((acc: TransactionClientActivity[], session: TransactionSession) => {\r\n const grouped = toPairs(session.tabsViews);\r\n const documents = groupDocsWithAccessType(session.documents);\r\n const versionDate = versions.find(v => v.version === session.version)?.dateTime;\r\n\r\n return [\r\n ...acc,\r\n ...grouped.map(([accessType, entries]) => ({\r\n ...session,\r\n accessType,\r\n versionDate,\r\n documents,\r\n accessDateTime: moment(session.accessDateTime).startOf('day').toDate(),\r\n numberOfAccess: entries.length,\r\n } as TransactionClientActivity))\r\n ];\r\n }, [])\r\n .sort((a, b) => compareDates(b.accessDateTime, a.accessDateTime));\r\n}\r\n\r\nfunction groupByViewsAndVersion(sessions: TransactionSession[], versions: TransactionVersion[]) {\r\n return sessions\r\n .reduce((acc: TransactionViewHistory[], session: TransactionSession) => {\r\n const versionDate = versions.find(v => v.version === session.version)?.dateTime;\r\n const views = mapValues(session.tabsViews, x => x.length);\r\n const documentsList = groupDocsWithAccessType(session.documents);\r\n\r\n return [\r\n ...acc,\r\n {\r\n ...session,\r\n versionDate,\r\n views,\r\n documentsList,\r\n } as TransactionViewHistory\r\n ];\r\n }, [])\r\n .sort((a, b) => compareDates(b.accessDateTime, a.accessDateTime));\r\n}\r\n\r\nfunction* watchInit(action: AnyAction) {\r\n try {\r\n const {\r\n dealReferenceName,\r\n transactionReferenceName,\r\n } = action.payload;\r\n\r\n const endDate = new Date();\r\n const startDate = new Date(endDate.getTime());\r\n startDate.setDate(endDate.getDate() - 1);\r\n\r\n let transactionViewHistory: TransactionSession[];\r\n let recentTransactionViewHistory: TransactionSession[];\r\n let documentDownloadsDto: DocumentDownloadsStatistic[];\r\n let daysInMarket: number;\r\n let versions: TransactionVersion[];\r\n\r\n [\r\n transactionViewHistory,\r\n recentTransactionViewHistory,\r\n documentDownloadsDto,\r\n daysInMarket,\r\n versions,\r\n ] = yield all([\r\n call(amrPipelineService.getTransactionViewHistory, dealReferenceName, transactionReferenceName),\r\n call(amrPipelineService.getTransactionViewHistory, dealReferenceName, transactionReferenceName, startDate, endDate),\r\n call(amrPipelineService.getDocumentsDownloads, dealReferenceName, transactionReferenceName),\r\n call(amrPipelineService.getDaysInTheMarket, dealReferenceName, transactionReferenceName),\r\n call(amrPipelineService.getTransactionVersions, dealReferenceName, transactionReferenceName),\r\n ]);\r\n\r\n const documentDownloads = withDate(documentDownloadsDto)\r\n\r\n const totalDocumentsDownloads = sumBy(documentDownloads, (dt) => dt.numberOfDocuments);\r\n\r\n const recentTransactionViews = recentTransactionViewHistory.length;\r\n\r\n const totalTransactionViews = transactionViewHistory.length;\r\n\r\n const clientsActivity = groupByAccessCountAndVersion(transactionViewHistory, versions);\r\n\r\n const users = transformToTreeSelect(clientsActivity, UserAccessTypes);\r\n\r\n yield put(\r\n amrTransactionAnalyticsActions.analyticsInitResponse({\r\n recentTransactionViews,\r\n totalTransactionViews,\r\n totalDocumentsDownloads,\r\n documentDownloads,\r\n daysInMarket,\r\n versions,\r\n clientsActivity,\r\n users\r\n })\r\n );\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchClientsActivityRequest(action: AnyAction) {\r\n try {\r\n const versions: TransactionVersion[] = yield select(\r\n (state: AppState) => state.issuanceMonitor.amrPipelineDetailed.analytics.versions\r\n );\r\n\r\n const { dealReferenceName, transactionReferenceName, startDate, endDate } = action.payload;\r\n\r\n const transactionSessions: TransactionSession[] = yield call(\r\n amrPipelineService.getTransactionViewHistory,\r\n dealReferenceName,\r\n transactionReferenceName,\r\n startDate ? moment(startDate).startOf('day').toDate() : undefined,\r\n endDate ? moment(endDate).endOf('day').toDate() : undefined,\r\n );\r\n\r\n const clientsActivity = groupByAccessCountAndVersion(transactionSessions, versions)\r\n .filter(x => UserAccessTypes.includes(x.accessType as TransactionAccessType));\r\n\r\n yield put(amrTransactionAnalyticsActions.clientsActivityResponse(clientsActivity));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchTransactionHistoryActivityRequest(action: AnyAction) {\r\n try {\r\n const versions: TransactionVersion[] = yield select((s: AppState) => s.issuanceMonitor.amrPipelineDetailed.analytics.versions);\r\n\r\n const { dealReferenceName, transactionReferenceName, startDate, endDate } = action.payload;\r\n\r\n const alignedStartDate = startDate ? moment(startDate).startOf('day').toDate() : undefined;\r\n const alignedEndDate = endDate ? moment(endDate).endOf('day').toDate() : undefined;\r\n\r\n const transactionSessions: TransactionSession[] = yield call(\r\n amrPipelineService.getTransactionViewHistory,\r\n dealReferenceName,\r\n transactionReferenceName,\r\n alignedStartDate,\r\n alignedEndDate\r\n );\r\n\r\n const transactionHistoryActivity = groupByViewsAndVersion(transactionSessions, versions);\r\n\r\n yield put(amrTransactionAnalyticsActions.transactionViewHistoryResponse(transactionHistoryActivity));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchTransactionHistoryActivityFiltrByBar(action: AnyAction) {\r\n const { dealReferenceName, transactionReferenceName, date } = action.payload;\r\n\r\n yield put(\r\n amrTransactionAnalyticsActions.transactionViewHistoryRequest(\r\n dealReferenceName,\r\n transactionReferenceName,\r\n date,\r\n date\r\n )\r\n );\r\n}\r\n\r\nexport function* watchAmrTransactionAnalytics() {\r\n yield takeLatest(getType(amrTransactionAnalyticsActions.analyticsInit), watchInit);\r\n yield takeLatest(getType(amrTransactionAnalyticsActions.clientsActivityRequest), watchClientsActivityRequest);\r\n yield takeLatest(getType(amrTransactionAnalyticsActions.transactionViewHistoryRequest), watchTransactionHistoryActivityRequest);\r\n yield takeLatest(getType(amrTransactionAnalyticsActions.transactionViewHistoryFilterByBar), watchTransactionHistoryActivityFiltrByBar);\r\n}\r\n","import { getType } from 'typesafe-actions';\r\nimport { put, takeLatest, call } from 'redux-saga/effects';\r\nimport { amrPipelineDetailedActions, amrTransactionHistoryActions, errorActions } from '../actions';\r\nimport { ActionType } from '../types/ActionType';\r\nimport { amrPipelineService } from '../services/amr-pipeline.service';\r\nimport Differ from '../utils/differ';\r\nimport { Difference, DifferenceType, Traverse } from '../utils/differ/types';\r\nimport { HistoryItem, OriginatingTransactionHistory } from '../types/amr-pipeline/models/OriginatingTransactionHistory';\r\nimport { PipelineHistoryItem } from '../types/state/PipelineHistoryState';\r\nimport { OriginatingTransactionDiff } from '../types/amr-pipeline/models/OriginatingTransactionDiff';\r\nimport { dealStructureUtils } from '../utils/deal-structure.utils';\r\nimport { OriginatingTransaction } from '../types/amr-pipeline/models/OriginatingTransaction';\r\nimport moment from 'moment';\r\nimport { OriginatingTransactionClass } from '../types/amr-pipeline/models/OriginatingTransactionClass';\r\nimport { amrFormatUtils } from '../utils';\r\nimport { OriginatingTransactionClassDiff } from '../types/amr-pipeline/models/OriginatingTransactionClassDiff';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { flatten, isNil, uniqBy } from 'lodash';\r\nimport { Contact } from '../types/amr-pipeline/models/Contact';\r\n\r\ninterface OriginatingTransactionClassFieldsDiff extends HistoryItem {\r\n classes: OriginatingTransactionClass[];\r\n}\r\n\r\ninterface TransactionHistoryAction {\r\n dealReferenceName: string;\r\n transactionReferenceName: string;\r\n}\r\n\r\ninterface TransactionHistoryDetailsAction extends TransactionHistoryAction {\r\n version: number;\r\n companyReferenceName: string;\r\n}\r\n\r\ninterface FieldsUpdatedHistoryAction extends TransactionHistoryAction {\r\n classReferenceName?: string;\r\n}\r\n\r\ninterface LastUpdatedFields {\r\n guidance?: Date;\r\n subscription?: Date;\r\n}\r\n\r\nconst byEventDateTime = (a: HistoryItem, b: HistoryItem) =>\r\n moment(a.eventDateTime).unix() - moment(b.eventDateTime).unix();\r\n\r\nconst originatingTransactionDiffer = Differ({\r\n // Exclude syndicate contacts from check\r\n syndicateContacts: {\r\n traverse: Traverse.Skip,\r\n },\r\n classes: {\r\n iteratee: (x) => x.referenceName,\r\n },\r\n // Portfolio is in imprecise section\r\n portfolio: {\r\n iteratee: (x) => x.issuer,\r\n traverse: Traverse.Shallow,\r\n },\r\n documents: {\r\n iteratee: (x) => x.referenceName,\r\n },\r\n collateralQualityTests: {\r\n iteratee: (x) => x.value,\r\n },\r\n});\r\n\r\nconst originatingTransactionClassFieldsDiffer = Differ({\r\n classes: {\r\n iteratee: (x) => x.referenceName,\r\n },\r\n});\r\n\r\nconst formatRating = (transactionClass: OriginatingTransactionClass) => {\r\n if (isNil(transactionClass.expectedRatingMoodys) &&\r\n isNil(transactionClass.expectedRatingSnP) &&\r\n isNil(transactionClass.expectedRatingFitch) &&\r\n isNil(transactionClass.expectedRatingKbra) &&\r\n isNil(transactionClass.expectedRatingDbrs)\r\n ) {\r\n return undefined;\r\n }\r\n\r\n return amrFormatUtils.formatRating(transactionClass);\r\n};\r\n\r\nconst countZeroAsNull = (fn: (arg: T) => number) => (arg: T): number | undefined => {\r\n const calculatedValue = fn(arg);\r\n\r\n return calculatedValue\r\n ? calculatedValue\r\n : undefined;\r\n};\r\n\r\nconst classWithCalculatedFields = (transactionClass: OriginatingTransactionClass) => {\r\n return {\r\n ...transactionClass,\r\n coupon: amrFormatUtils.formatInventoryCoupon(transactionClass.floaterIndex, transactionClass.margin, ''),\r\n ratingString: formatRating(transactionClass),\r\n priceNumber: isNil(transactionClass.price) ? transactionClass.price : parseFloat(transactionClass.price),\r\n } as OriginatingTransactionClassDiff;\r\n};\r\n\r\nconst withCalculatedFields = (transaction?: OriginatingTransaction) => {\r\n if (!transaction) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n ...transaction,\r\n calculatedTargetPar: countZeroAsNull(dealStructureUtils.calcTargetPar)(transaction),\r\n calculatedBidPrice: countZeroAsNull(dealStructureUtils.calcBidPrice)(transaction),\r\n calculatedAskPrice: countZeroAsNull(dealStructureUtils.calcAskPrice)(transaction),\r\n classes: transaction.classes.map(classWithCalculatedFields),\r\n } as OriginatingTransactionDiff;\r\n};\r\n\r\nfunction* watchFetchTransactionHistory(action: ActionType) {\r\n const { dealReferenceName, transactionReferenceName } = action.payload;\r\n\r\n try {\r\n const transactions: OriginatingTransactionHistory[] = yield call(amrPipelineService.getTransactionHistory, dealReferenceName, transactionReferenceName);\r\n\r\n const transactionsHistory = transactions.sort(byEventDateTime).map((item, index, self) => {\r\n const previousTransaction = withCalculatedFields(self[index - 1]);\r\n const currentTransaction = withCalculatedFields(item);\r\n\r\n // Do not check first version to avoid showing changes for newly created transaction\r\n const diff: Difference = item.version > 0\r\n ? originatingTransactionDiffer(previousTransaction, currentTransaction)\r\n : {};\r\n\r\n return {\r\n version: item.version,\r\n versionTitle: `${item.version === self.length ? 'Curr.: ' : ''}V.${item.version}`,\r\n versionTitleFull: `${item.version === self.length ? 'Current: ' : ''}V.${item.version}`,\r\n eventDateTime: item.eventDateTime,\r\n transaction: {\r\n ...currentTransaction,\r\n syndicateContacts: [],\r\n isDetailsLoaded: false,\r\n },\r\n diff,\r\n } as PipelineHistoryItem;\r\n }).reverse();\r\n\r\n const allHistoryClassesList = uniqBy(\r\n flatten(transactionsHistory.map(item => item.transaction.classes)), 'name'\r\n ).map(c => {\r\n const rating = formatRating(c);\r\n return {\r\n text: `Class ${c.name} ${rating ? `(${rating})` : ''}`,\r\n searchTerm: `Class ${c.name}`,\r\n synonyms: [\r\n `Tranche ${c.name}`,\r\n c.rating || '',\r\n c.expectedRatingSnP || '',\r\n c.expectedRatingDbrs || '',\r\n c.expectedRatingFitch || '',\r\n c.expectedRatingKbra || '',\r\n c.expectedRatingMoodys || '',\r\n c.expectedRatingSnP || '',\r\n ],\r\n };\r\n });\r\n\r\n yield put(amrTransactionHistoryActions.transactionHistoryResponse(RequestState.success, transactionsHistory, allHistoryClassesList));\r\n } catch (e) {\r\n yield put(amrTransactionHistoryActions.transactionHistoryResponse(RequestState.failure));\r\n }\r\n}\r\n\r\nfunction* watchLoadTransactionDetails(action: ActionType) {\r\n const {\r\n version,\r\n dealReferenceName,\r\n transactionReferenceName,\r\n companyReferenceName,\r\n } = action.payload;\r\n\r\n try {\r\n yield put(amrPipelineDetailedActions.transactionDetailsRequesting(true));\r\n\r\n if (!companyReferenceName) {\r\n yield put(amrTransactionHistoryActions.storeTransactionDetais(version, { syndicateContacts: [] }));\r\n return;\r\n }\r\n\r\n const syndicateContacts: Contact[] = yield call(\r\n amrPipelineService.getSyndicateContactsByArranger,\r\n dealReferenceName,\r\n transactionReferenceName,\r\n companyReferenceName\r\n );\r\n\r\n yield put(amrTransactionHistoryActions.storeTransactionDetais(version, { syndicateContacts }));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(amrPipelineDetailedActions.transactionDetailsRequesting(false));\r\n }\r\n}\r\n\r\nfunction* watchTransactionFieldsUpdated(action: ActionType) {\r\n const { dealReferenceName, transactionReferenceName, classReferenceName } = action.payload;\r\n\r\n try {\r\n const transactions: OriginatingTransactionClassFieldsDiff[] = yield call(\r\n amrPipelineService.getTransactionHistory,\r\n dealReferenceName,\r\n transactionReferenceName,\r\n { classesOnly: true }\r\n );\r\n\r\n const history = transactions.sort(byEventDateTime).map((item, index, self) => {\r\n const difference = originatingTransactionClassFieldsDiffer(\r\n self[index - 1],\r\n item\r\n );\r\n\r\n return {\r\n difference,\r\n eventDateTime: item.eventDateTime,\r\n };\r\n });\r\n\r\n const fieldsLastUpdated = history.reduce((acc: LastUpdatedFields, next) => {\r\n const { guidance, subscription } = acc;\r\n const { difference, eventDateTime } = next;\r\n\r\n if (!difference.classes) {\r\n return acc;\r\n }\r\n\r\n const classWithChangedGuidance = difference.classes.find(({ difference }) => {\r\n const specificClassCondition = classReferenceName\r\n ? difference?.referenceName?.derivedValue === classReferenceName\r\n : true;\r\n\r\n return specificClassCondition && difference?.guidance?.type !== DifferenceType.Unchanged;\r\n });\r\n\r\n const classWithChangedSubscription = difference.classes.find(({ difference }) => {\r\n const specificClassCondition = classReferenceName\r\n ? difference?.referenceName?.derivedValue === classReferenceName\r\n : true;\r\n\r\n return specificClassCondition && difference?.subscription?.type !== DifferenceType.Unchanged;\r\n });\r\n\r\n return {\r\n guidance: classWithChangedGuidance ? eventDateTime : guidance,\r\n subscription: classWithChangedSubscription ? eventDateTime : subscription,\r\n };\r\n }, { });\r\n\r\n yield put(amrTransactionHistoryActions.transactionFieldsUpdatedResponse(\r\n RequestState.success,\r\n fieldsLastUpdated\r\n ));\r\n } catch (e) {\r\n yield put(amrTransactionHistoryActions.transactionFieldsUpdatedResponse(RequestState.failure));\r\n }\r\n}\r\n\r\nexport function* watchTransactionHistory() {\r\n yield takeLatest(getType(amrTransactionHistoryActions.transactionHistoryRequest), watchFetchTransactionHistory);\r\n yield takeLatest(getType(amrTransactionHistoryActions.loadTransactionDetais), watchLoadTransactionDetails);\r\n yield takeLatest(getType(amrTransactionHistoryActions.transactionFieldsUpdatedRequest), watchTransactionFieldsUpdated);\r\n}\r\n","import moment from \"moment\";\r\nimport { all, delay, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { ActionType, getType } from \"typesafe-actions\";\r\nimport { apiOperationActions, errorActions } from \"../actions\";\r\nimport { logger } from \"../logging/logger\";\r\nimport { ApiOperation } from \"../types/api-operation/ApiOperation\";\r\nimport { ApiOperationResult, TOperationResult } from \"../types/api-operation/ApiOperationResult\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { apiUtils } from \"../utils/api.utils\";\r\nimport { isRequesting } from \"../utils/request-state.utils\";\r\nimport { pushNotificationService } from \"../services/push-notification.service\";\r\nimport { user } from \"../user/user\";\r\nimport { jsonUtils } from \"../utils/json.utils\";\r\n\r\nfunction* watchApiOperationResult(action: TOperationResult) {\r\n const { result } = action.payload;\r\n const pending: ApiOperation | undefined = yield select((state: AppState) =>\r\n state.apiOperation.requests.find(r => r.token === result.token && r.event === result.event));\r\n\r\n logger.trace(`API response token: ${result.token}, status: ${result.statusCode}`);\r\n\r\n if (pending == null) {\r\n logger.trace(`Api operation result token: ${result.token} event: ${result.event} has no corresponding request`);\r\n return;\r\n }\r\n\r\n if (apiUtils.isRequestSuccess(result.statusCode)) {\r\n yield put(apiOperationActions.success(result));\r\n } else {\r\n if ([403, 404].some(e => e === result.statusCode)) {\r\n yield put(errorActions.criticalError({ status: result.statusCode }));\r\n } else {\r\n if (pending.errorToastDisabled || [409, 410].some(e => e === result.statusCode)) {\r\n yield put(apiOperationActions.error(result));\r\n } else {\r\n yield put(apiOperationActions.error(result));\r\n yield put(errorActions.unexpectedError({\r\n status: result.statusCode,\r\n message: result.response\r\n }));\r\n }\r\n }\r\n }\r\n\r\n if (pending.autoRemove) {\r\n yield put(apiOperationActions.remove(pending.token));\r\n }\r\n}\r\n\r\nfunction* watchEarlyOperationResult(action: ActionType) {\r\n const responses: ApiOperationResult[] = yield select((s: AppState) => s.apiOperation.responses);\r\n\r\n logger.trace(\"Waiting for API operation response\", action.payload.requests.map(r => r.token))\r\n\r\n yield all(\r\n responses\r\n .filter(r => action.payload.requests.some(req => req.token === r.token))\r\n .map(r => put(apiOperationActions.earlyResult(r)))\r\n );\r\n}\r\n\r\nfunction* watchStuckOperations() {\r\n const timeout = 15; // seconds\r\n\r\n logger.trace(`Push fallback: Start looking for stuck async operations every ${timeout} seconds`);\r\n\r\n while (true) {\r\n if (pushNotificationService.isConnected()) {\r\n if (!user.isAuthenticated()) {\r\n logger.trace('Push fallback: Stop looking for stuck async operations')\r\n break;\r\n }\r\n\r\n const stuck: ApiOperation[] = yield select((s: AppState) =>\r\n s.apiOperation.requests.filter(r =>\r\n isRequesting(r.state) &&\r\n moment().diff(r.createdDate, 'seconds') >= timeout)\r\n );\r\n\r\n if (stuck.length) {\r\n logger.trace(`Push fallback: Found ${stuck.length} stuck async operation(s)`, stuck);\r\n yield resolveStuckOprtations(stuck);\r\n }\r\n }\r\n\r\n yield delay(15 * 1000);\r\n }\r\n}\r\n\r\nfunction* resolveStuckOprtations(operations: ApiOperation[]) {\r\n try {\r\n const pushDataCache: string[] = yield pushNotificationService.send(\"GetPushDataMessages\");\r\n if (!user.isAuthenticated()) return;\r\n\r\n if (!pushDataCache?.length) {\r\n logger.trace('Push data cache is empty');\r\n return;\r\n }\r\n\r\n const operationTokenByResult = new Map();\r\n operations.forEach(o => operationTokenByResult.set(o.token, undefined));\r\n\r\n pushDataCache\r\n .reverse()\r\n .forEach(x => {\r\n if ([...operationTokenByResult.values()].some(x => !x)) { // Stop if all stuck operation results are found\r\n const jsonData = jsonUtils.tryParse(x);\r\n if (\r\n jsonData != null &&\r\n jsonData.token &&\r\n jsonData.statusCode &&\r\n operationTokenByResult.has(jsonData?.token)) {\r\n const apiOperationResult = jsonData as ApiOperationResult;\r\n logger.trace('Push fallback: Found stuck async operation result', apiOperationResult.token);\r\n operationTokenByResult.set(apiOperationResult.token, apiOperationResult);\r\n }\r\n }\r\n });\r\n\r\n const apiOperationTokensWithoutResponse =\r\n [...operationTokenByResult.entries()]\r\n .filter(([, response]) => !response)\r\n .map(([token]) => token);\r\n\r\n if (apiOperationTokensWithoutResponse.length) {\r\n logger.trace('Push fallback: Cannot find async operation response in push data cache', apiOperationTokensWithoutResponse);\r\n }\r\n\r\n const stuckApiResponses = [...operationTokenByResult.values()].filter(x => x);\r\n if (stuckApiResponses.length) {\r\n yield all(\r\n stuckApiResponses.map(r => put(apiOperationActions.result(r!)))\r\n )\r\n }\r\n } catch (e) {\r\n console.log('Push fallback: Failed to handle cached push data', e);\r\n }\r\n}\r\n\r\nexport function* watchApiOperation() {\r\n yield takeEvery([getType(apiOperationActions.result), getType(apiOperationActions.earlyResult)], watchApiOperationResult);\r\n yield takeEvery(getType(apiOperationActions.waitResult), watchEarlyOperationResult);\r\n yield takeEvery(getType(apiOperationActions.trackStuckOperations), watchStuckOperations);\r\n}","import { call, put, takeEvery } from \"redux-saga/effects\";\r\nimport { getType } from \"typesafe-actions\";\r\nimport { errorActions } from \"../actions\";\r\nimport { assetManagerActions } from '../actions/asset-manager.actions';\r\nimport { RequestState } from \"../constants/request-state\";\r\nimport { companiesService } from '../services/companies.service';\r\nimport { CompanySlim } from \"../types/company/CompanySlim\";\r\n\r\nfunction* watchRequest() {\r\n try {\r\n const accounts: CompanySlim[] = yield call(companiesService.getActiveAssetManagers);\r\n yield put(assetManagerActions.requestResult(\r\n RequestState.success,\r\n accounts.sort((a, b) => a.name.localeCompare(b.name)))\r\n );\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n yield put(assetManagerActions.requestResult(RequestState.failure));\r\n }\r\n}\r\n\r\nexport function* watchAssetManager() {\r\n yield takeEvery(getType(assetManagerActions.request), watchRequest);\r\n}\r\n","import moment from 'moment';\r\nimport { ActionType, getType } from \"typesafe-actions\";\r\nimport { all, call, put, select, takeLatest } from \"redux-saga/effects\";\r\nimport { errorActions } from \"../actions\";\r\nimport { banksActions } from '../actions/banks.actions';\r\nimport { BwicBank } from '../types/banks/Bank';\r\nimport { BankDetailed } from '../types/banks/BankDetailed';\r\nimport { banksService } from '../services/banks.service';\r\nimport { ManagersTransaction } from '../types/banks/ManagersTransaction';\r\nimport { ManagersTransactionCountFilterValues } from '../types/banks/ManagersTransactionCountFilterValues';\r\nimport { arrayUtils } from '../utils/array.utils';\r\nimport { ManagersTransactionAggregated } from '../types/banks/ManagersTransactionAggregated';\r\nimport { compact, map, mapValues, pick, sumBy, toPairs, trim, values } from 'lodash';\r\nimport { TransactionType } from '../types/amr-pipeline/enums/TransactionType';\r\nimport { defaultFilterValues } from '../constants/banks/managerTransactionsFilter';\r\nimport { AppState } from '../types/state/AppState';\r\nimport { constants, roles, routes } from '../constants';\r\nimport { Company } from \"../types/amr-pipeline/models/Company\";\r\nimport { CompanyEvent } from '../types/banks/CompanyEvent';\r\nimport { BankSave } from '../types/banks/BankSave';\r\nimport { formatUtils, stringUtils } from '../utils';\r\nimport { companiesService } from '../services';\r\nimport { BrokerDealerCompanySlim } from '../types/company/BrokerDealerCompanySlim';\r\nimport { BrokerDealerContact } from '../types/amr-pipeline/models/BrokerDealerContact';\r\nimport { BrokerDealerSave } from '../types/banks/BrokerDealerSave';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { user } from '../user';\r\nimport { combineBanks, isBrokerDealersOwnCompany } from '../utils/amr-pipeline.utils';\r\nimport { HeadOfTrading } from '../types/company/HeadOfTrading';\r\nimport { BankClientActivity, BankProfileView, BankSession, BankSessions } from '../types/amr-pipeline/models/BankSession';\r\nimport { history } from \"../history\";\r\nimport { BankAccessType } from '../types/amr-pipeline/enums/BankAccessType';\r\nimport { groupDocsWithAccessType, transformToTreeSelect } from '../utils/analytics.utils';\r\nimport { compareDates } from '../utils/compare.utils';\r\nimport { BankAnalytics } from '../types/banks/BankAnalytics';\r\nimport { BankSyndicateContacts } from '../types/banks/BankSyndicateContacts';\r\nimport { SubscriptionFeature } from '../types/billing/SubscriptionFeature';\r\nimport saveAs from \"file-saver\";\r\nimport { ContactType } from '../types/amr-pipeline/enums/ContactType';\r\nimport { amrCompaniesService } from '../services/amr-companies.service';\r\n\r\nconst UserAccessTypes = [\r\n BankAccessType.ContactsEventsTab,\r\n BankAccessType.PrimaryTab,\r\n BankAccessType.SecondaryTab,\r\n];\r\n\r\nfunction groupSessionsByAccessType(sessions: BankSession[]) {\r\n return sessions\r\n .reduce((acc: BankProfileView[], session: BankSession) => {\r\n const views = mapValues(session.tabsViews, x => x.length);\r\n const documents = groupDocsWithAccessType(session.documents);\r\n\r\n return [\r\n ...acc,\r\n {\r\n ...session,\r\n views,\r\n documents,\r\n } as BankProfileView\r\n ];\r\n }, [])\r\n .sort((a, b) => compareDates(b.accessDateTime, a.accessDateTime));\r\n}\r\n\r\nfunction groupSessionsByDate(sessions: BankSession[]) {\r\n return sessions.reduce((acc: BankClientActivity[], session: BankSession) => {\r\n const grouped = toPairs(session.tabsViews);\r\n const documents = groupDocsWithAccessType(session.documents);\r\n\r\n return [\r\n ...acc,\r\n ...grouped.map(([accessType, entries]) => ({\r\n ...session,\r\n accessType,\r\n numberOfAccess: entries.length,\r\n documents,\r\n } as BankClientActivity)),\r\n ];\r\n }, []);\r\n}\r\n\r\nconst MandatoryContactFields = [\r\n 'firstName',\r\n 'lastName',\r\n 'email',\r\n 'officePhoneNumber',\r\n 'mobilePhoneNumber',\r\n 'distributionListEmail',\r\n];\r\n\r\nconst createEmptyContact = (primaryDesk: boolean): BrokerDealerSave => ({\r\n id: 0,\r\n primaryDesk,\r\n order: 0,\r\n firstName: undefined,\r\n lastName: undefined,\r\n email: '',\r\n officePhoneNumber: '',\r\n mobilePhoneNumber: '',\r\n distributionListEmail: '',\r\n});\r\n\r\nconst createDistributionList = (email: string, primaryDesk: boolean): BrokerDealerContact => ({\r\n id: 0,\r\n primaryDesk,\r\n order: 0,\r\n type: ContactType.DistributionList,\r\n firstName: undefined,\r\n lastName: undefined,\r\n email,\r\n officePhoneNumber: '',\r\n mobilePhoneNumber: '',\r\n});\r\n\r\nconst notEmptyEvent = (event: CompanyEvent) => !stringUtils.isHTMLEmpty(event.description);\r\n\r\nconst isContactEmpty = (contact?: BrokerDealerSave) => {\r\n // Grab only mandatory fields from an object\r\n // Compact them and see the length of resulting array\r\n const withNeededValues = pick(contact, MandatoryContactFields);\r\n return !compact(values(withNeededValues)).length;\r\n};\r\n\r\nconst isHeadOfTradingEmpty = (headOfTrading?: HeadOfTrading) => {\r\n // Get values of all object properties and trim them\r\n // (there was a bug with strings full of whitespaces)\r\n // Compact and see length of resulting array\r\n return !compact(map(values(headOfTrading), trim)).length;\r\n};\r\n\r\n// Checks if all andatory fields of a contacts are empty,\r\n// and if yes - returns a default empty contact, otherwise\r\n// returns passed contact as is\r\nconst contactOrDefault = (contact?: BrokerDealerSave, primaryDesk = false) => {\r\n return isContactEmpty(contact) ? createEmptyContact(primaryDesk) : contact;\r\n};\r\n\r\nconst splitIntoHeadAndDistributionList = (brokerDealer?: BrokerDealerSave) => {\r\n if (!brokerDealer) {\r\n return {}\r\n }\r\n\r\n const { distributionListEmail, ...headContact } = brokerDealer;\r\n\r\n const distributionList = distributionListEmail\r\n ? createDistributionList(distributionListEmail, true)\r\n : undefined;\r\n\r\n return {\r\n headContact: isContactEmpty(headContact)\r\n ? undefined\r\n : headContact,\r\n distributionList,\r\n }\r\n}\r\n\r\nconst convertToBankSyndicateContacts = (\r\n contacts: BrokerDealerContact[],\r\n headOfDeskAndDistributionList?: BrokerDealerSave,\r\n headOfTradingAndDistributionList?: BrokerDealerSave\r\n): BankSyndicateContacts => {\r\n const primary = contacts.filter(x => x.primaryDesk);\r\n const secondary = contacts.filter(x => !x.primaryDesk);\r\n\r\n const {\r\n headContact: headOfDesk,\r\n distributionList: primaryDistributionList\r\n } = splitIntoHeadAndDistributionList(headOfDeskAndDistributionList);\r\n\r\n const {\r\n headContact: headOfTrading,\r\n distributionList: secondaryDistributionList\r\n } = splitIntoHeadAndDistributionList(headOfTradingAndDistributionList);\r\n\r\n return {\r\n primaryContacts: {\r\n items: compact([...primary, headOfDesk, primaryDistributionList]),\r\n numberOfHiddenItems: 0,\r\n },\r\n secondaryContacts: {\r\n items: compact([...secondary, headOfTrading, secondaryDistributionList]),\r\n numberOfHiddenItems: 0,\r\n },\r\n };\r\n};\r\n\r\nfunction aggregateManagerTransactions(\r\n managerTransactions: ManagersTransaction[],\r\n filter: ManagersTransactionCountFilterValues = defaultFilterValues\r\n) {\r\n const filtered = managerTransactions.filter(managerTransaction => {\r\n return managerTransaction.year === filter.year\r\n && (filter.currency !== constants.allListItem\r\n ? managerTransaction.currencyCode=== filter.currency\r\n : true)\r\n && (filter.collateralType !== constants.allListItem\r\n ? managerTransaction.collateralType === filter.collateralType\r\n : true\r\n );\r\n });\r\n\r\n const groupedManager = arrayUtils.groupBy(filtered, x => x.companyReferenceName);\r\n\r\n return Array.from(groupedManager.values()).reduce((acc: ManagersTransactionAggregated[], group: ManagersTransaction[]) => {\r\n const [firstEntry] = group;\r\n\r\n const newIssueCount = sumBy(group.filter(x => x.transactionType === TransactionType.newIssue), x => x.count);\r\n const refinancingCount = sumBy(group.filter(x => x.transactionType === TransactionType.refi), x => x.count);\r\n const resetCount = sumBy(group.filter(x => x.transactionType === TransactionType.reset), x => x.count);\r\n\r\n return [\r\n ...acc,\r\n {\r\n collateralManager: firstEntry.companyLegalName,\r\n companyReferenceName: firstEntry.companyReferenceName,\r\n newIssueCount,\r\n refinancingCount,\r\n resetCount,\r\n totalCount: newIssueCount + refinancingCount + resetCount,\r\n } as ManagersTransactionAggregated\r\n ]\r\n }, []);\r\n}\r\n\r\nfunction* getSyndicateContacts(referenceName: string, canViewContactsAndEvents: boolean) {\r\n let syndicateContacts: BankSyndicateContacts;\r\n let brokerDealer: BrokerDealerCompanySlim;\r\n\r\n [\r\n syndicateContacts,\r\n brokerDealer,\r\n ] = yield all([\r\n call(banksService.getSyndicateContacts, referenceName),\r\n call(companiesService.getBrokerDealer, referenceName),\r\n ]);\r\n\r\n // Just in case check that Head Of Trading contact is empty.\r\n // Potentially the object can be defined, but with empty fields\r\n const headOfTrading: BrokerDealerContact | undefined = !isHeadOfTradingEmpty(brokerDealer?.headOfTrading) ? {\r\n id: 0,\r\n title: 'Head of Trading',\r\n firstName: brokerDealer.headOfTrading.firstName,\r\n lastName: brokerDealer.headOfTrading.lastName,\r\n email: brokerDealer.headOfTrading.email,\r\n officePhoneNumber: trim(brokerDealer.headOfTrading.office),\r\n mobilePhoneNumber: trim(brokerDealer.headOfTrading.mobile),\r\n primaryDesk: false,\r\n headOfTrading: true,\r\n order: 0,\r\n } : undefined;\r\n\r\n const secondaryDistributionList: BrokerDealerContact | undefined = brokerDealer?.distributionList ? {\r\n id: 0,\r\n title: 'Distribution List',\r\n email: brokerDealer.distributionList,\r\n officePhoneNumber: '',\r\n mobilePhoneNumber: '',\r\n primaryDesk: false,\r\n headOfTrading: true,\r\n type: ContactType.DistributionList,\r\n order: 0,\r\n } : undefined;\r\n\r\n const bwicContacts = compact([\r\n headOfTrading,\r\n secondaryDistributionList,\r\n ]);\r\n\r\n const mergedContacts: BankSyndicateContacts = {\r\n ...syndicateContacts,\r\n // Merge head of trading and secondary desk distribution list into secondary list\r\n secondaryContacts: {\r\n items: [\r\n ...syndicateContacts.secondaryContacts.items,\r\n ...bwicContacts\r\n ],\r\n // When access is limited, number of hidden items is a summary\r\n // of number of hidden items from AMR and BWIC contacts - 1\r\n // (only two contacts from BWIC, so one should be hidden), but not\r\n // less than 0\r\n numberOfHiddenItems: canViewContactsAndEvents\r\n ? syndicateContacts.secondaryContacts.numberOfHiddenItems\r\n : syndicateContacts.secondaryContacts.numberOfHiddenItems + +(brokerDealer.distributionListExists || false),\r\n }\r\n };\r\n\r\n return mergedContacts;\r\n}\r\n\r\nfunction* watchGetBanks(action: ActionType) {\r\n const { userCompanyReferenceName } = action.payload;\r\n\r\n try {\r\n const [amrData, bwicData]: [amrData: Company[], bwicData: BwicBank[]] =\r\n yield all([\r\n call(amrCompaniesService.getBanksList),\r\n call(banksService.getBwicBanksList),\r\n ]);\r\n\r\n const banks = combineBanks(amrData, bwicData, userCompanyReferenceName);\r\n yield put(banksActions.getBanksResult(banks));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchGetBankDetails(action: ActionType) {\r\n try {\r\n const { referenceName } = action.payload;\r\n\r\n const userCompany: Company = yield select((state: AppState) => state.issuanceMonitor.amrPipelineCommon.userCompany);\r\n\r\n let bank: BankDetailed;\r\n let syndicateContacts: BankSyndicateContacts;\r\n let companyEvents: CompanyEvent[];\r\n\r\n const isNotBrokerDealer = user.hasRoles(...roles.getAllRolesExclude(...roles.bd()));\r\n const ownCompany = isBrokerDealersOwnCompany({ referenceName }, userCompany);\r\n const hasEventsFeature = user.hasFeatures(SubscriptionFeature.DealerProfileBankEvents);\r\n\r\n const canViewContactsAndEvents = ownCompany || (isNotBrokerDealer && hasEventsFeature);\r\n\r\n [\r\n bank,\r\n syndicateContacts,\r\n companyEvents,\r\n ] = yield all([\r\n call(banksService.getBankDetails, referenceName),\r\n call(getSyndicateContacts, referenceName, canViewContactsAndEvents),\r\n canViewContactsAndEvents ? call(banksService.getEvents, referenceName) : [],\r\n ]);\r\n\r\n const managerTransactions = aggregateManagerTransactions(bank.managersTransactions);\r\n\r\n yield put(banksActions.getBankDetailsResult(\r\n referenceName,\r\n bank,\r\n managerTransactions,\r\n syndicateContacts,\r\n companyEvents,\r\n ));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchManagersTransactionCountFilter(action: ActionType) {\r\n try {\r\n const managerTransactions: ManagersTransaction[] = yield select(\r\n (state: AppState) => state.banks.selectedBank?.details?.managersTransactions\r\n );\r\n\r\n const managerTransactionsAggregated = aggregateManagerTransactions(managerTransactions, action.payload);\r\n\r\n yield put(banksActions.managersTransactionCountFilterResult(managerTransactionsAggregated));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchExportTransactionCountRequest(action: ActionType) {\r\n const { legalName, referenceName, params } = action.payload;\r\n\r\n try {\r\n const fileName = `${legalName} Managers Transaction Count - ${moment().format(constants.dateFormat)}.xlsx`;\r\n const file: { blob: Blob } = yield call(banksService.exportBankManagersTrans, referenceName, params);\r\n saveAs(file.blob, fileName);\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(banksActions.exportTransactionCountResponse());\r\n }\r\n}\r\n\r\nfunction* watchUpdateBank(action: ActionType) {\r\n try {\r\n const { referenceName, formData } = action.payload;\r\n\r\n const { dataItems, isValid } = yield select((state: AppState) => state.grid);\r\n\r\n const events = formData.events.filter(notEmptyEvent).reverse();\r\n\r\n const contacts = (dataItems as any[]).reduce((acc: BrokerDealerContact[], contact: any, index: number) => {\r\n return contact.draft ? acc : [\r\n ...acc,\r\n {\r\n ...contact,\r\n order: index + 1,\r\n linkedIn: formatUtils.formatUrlWithProtocol(contact.linkedIn),\r\n } as BrokerDealerContact\r\n ]\r\n }, []);\r\n\r\n if (!isValid && contacts.length) {\r\n yield put(banksActions.updateBankResult(RequestState.failure));\r\n return;\r\n }\r\n\r\n const headOfDesk = contactOrDefault(formData.headOfDesk, true);\r\n const headOfTrading = contactOrDefault(formData.headOfTrading);\r\n\r\n const bankToSave: BankSave = {\r\n events,\r\n contacts,\r\n headOfDesk,\r\n headOfTrading,\r\n };\r\n\r\n yield call(banksService.updateBank, referenceName, bankToSave);\r\n\r\n const syndicateContacts = convertToBankSyndicateContacts(contacts, headOfDesk, headOfTrading)\r\n\r\n const companyEvents: CompanyEvent[] = yield call(banksService.getEvents, referenceName);\r\n\r\n yield put(banksActions.updateBankResult(RequestState.success, {\r\n syndicateContacts,\r\n events: companyEvents\r\n }));\r\n\r\n yield call(history.push, routes.manageBanksUrl(referenceName));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchLogUserActivity(action: ActionType) {\r\n const { companyReferenceName, accessType } = action.payload;\r\n try {\r\n yield call(banksService.logUserActivity, companyReferenceName, accessType);\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\n\r\nfunction* watchAnalyticsInit(action: ActionType) {\r\n try {\r\n const { companyReferenceName } = action.payload;\r\n\r\n const { items, numberOfHiddenItems }: BankSessions = yield call(banksService.getProfileViewHistory, companyReferenceName);\r\n const analytics: BankAnalytics = yield call(banksService.getAnalytics, companyReferenceName);\r\n\r\n const profileViews = groupSessionsByDate(items);\r\n\r\n const users = transformToTreeSelect(profileViews, UserAccessTypes);\r\n\r\n yield put(banksActions.analyticsInitResponse({ users, analytics, numberOfHiddenItems }));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchClientsActivityRequest(action: ActionType) {\r\n try {\r\n const { companyReferenceName, startDate, endDate } = action.payload;\r\n\r\n const { items, numberOfHiddenItems }: BankSessions = yield call(\r\n banksService.getProfileViewHistory,\r\n companyReferenceName,\r\n startDate ? moment(startDate).startOf('day').toDate() : undefined,\r\n endDate ? moment(endDate).endOf('day').toDate() : undefined,\r\n );\r\n\r\n const bankClientsActivity = groupSessionsByDate(items)\r\n .filter(x => UserAccessTypes.includes(x.accessType));\r\n\r\n yield put(banksActions.clientsActivityResponse(bankClientsActivity, numberOfHiddenItems));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchProfileViewHistoryRequest(action: ActionType) {\r\n try {\r\n const { companyReferenceName, startDate, endDate } = action.payload;\r\n\r\n const alignedStartDate = startDate ? moment(startDate).startOf('day').toDate() : undefined;\r\n const alignedEndDate = endDate ? moment(endDate).endOf('day').toDate() : undefined;\r\n\r\n const { items, numberOfHiddenItems }: BankSessions = yield call(\r\n banksService.getProfileViewHistory,\r\n companyReferenceName,\r\n alignedStartDate,\r\n alignedEndDate\r\n );\r\n\r\n const profileViewHistory = groupSessionsByAccessType(items);\r\n\r\n yield put(banksActions.profileViewHistoryResponse(profileViewHistory, numberOfHiddenItems));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchProfileViewHistoryFiltrByBar(action: ActionType) {\r\n const { companyReferenceName, date } = action.payload;\r\n\r\n yield put(\r\n banksActions.profileViewHistoryRequest(\r\n companyReferenceName,\r\n date,\r\n date\r\n )\r\n );\r\n}\r\n\r\nexport function* watchBanks() {\r\n yield takeLatest(getType(banksActions.getBanks), watchGetBanks);\r\n yield takeLatest(getType(banksActions.getBankDetails), watchGetBankDetails);\r\n yield takeLatest(getType(banksActions.managersTransactionCountFilter), watchManagersTransactionCountFilter);\r\n yield takeLatest(getType(banksActions.updateBank), watchUpdateBank);\r\n yield takeLatest(getType(banksActions.logUserActivity), watchLogUserActivity);\r\n yield takeLatest(getType(banksActions.analyticsInit), watchAnalyticsInit);\r\n yield takeLatest(getType(banksActions.clientsActivityRequest), watchClientsActivityRequest);\r\n yield takeLatest(getType(banksActions.profileViewHistoryRequest), watchProfileViewHistoryRequest);\r\n yield takeLatest(getType(banksActions.profileViewHistoryFilterByBar), watchProfileViewHistoryFiltrByBar);\r\n yield takeLatest(getType(banksActions.exportTransactionCountRequest), watchExportTransactionCountRequest);\r\n}\r\n","import { getType } from 'typesafe-actions';\r\nimport { saveAs } from 'file-saver';\r\nimport { AnyAction } from 'redux';\r\nimport { cloneDeep, isNil, noop } from 'lodash';\r\nimport { call, all, put, select, takeEvery, takeLatest, take } from 'redux-saga/effects';\r\nimport { bdInventoryActions } from '../actions/bd-inventory.actions';\r\nimport { errorActions } from '../actions';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { PageConfigType } from '../types/page-config/PageConfigType';\r\nimport { AppState } from '../types/state/AppState';\r\nimport { inventoryService } from '../services/inventory.service';\r\nimport { accountActions } from '../constants';\r\nimport { UserConfigFilter } from '../types/user-config/UserConfigFilter';\r\nimport { arrayUtils, isRequestNone, shouldRequest } from '../utils';\r\nimport { InventoryPositionStatus } from '../types/inventory/InventoryPositionStatus';\r\nimport { InventoryPosition } from '../types/inventory/InventoryPosition';\r\nimport { InventoryListFilterState } from '../types/state/BdInventoryState';\r\nimport {\r\n InventorySecurityOrderByColumn,\r\n InventorySecuritySortOrder\r\n} from '../types/inventory/InventorySecurityOrderByColumn';\r\nimport { accountService } from '../services';\r\nimport { user } from '../user';\r\nimport { selectedDateOptions } from '../utils/amr-pipeline-filter.utils';\r\nimport {\r\n ratings, inventoryStatuses, identifiers, dateFrom, dateTo, multipleCurrencies, collateralTypes, collateralManagers,\r\n esg, euCompliance, staticDeals, reinvestmentEndFrom, reinvestmentEndTo, nonCallEndFrom, nonCallEndTo, currentInventory,\r\n mixedDateRange, trustees, amr, outOfNC, outOfRI\r\n} from '../utils/filtering/serializers/serializer.definitions';\r\nimport { QueryStringArgumentSerializer } from '../utils/filtering/serializers/QueryStringArgumentSerializer';\r\nimport { Rating } from '../types/enums/Rating';\r\nimport { queryStringSerializer } from '../utils/filtering/query-string-serializer';\r\nimport { searchSecuritiesActions } from '../actions';\r\nimport { getInventoryPositionStatusByTitle } from '../components/inventory/inventory-position-status-title';\r\nimport { Currency } from '../types/enums/Currency';\r\nimport { bdInventoryFilters } from '../components/inventory/bd/filter/bdInventoryFilters';\r\nimport { createFilterActions } from '../actions/filter.actions';\r\nimport { BwicFilterType, TFilter } from '../types/filters/FilterState';\r\nimport { CollateralType } from '../types/amr-pipeline/enums/CollateralType';\r\nimport { dateRangeFilterOptions } from '../constants/date-range.filter';\r\nimport { convertToApiCriteria, getDateOptionByRange, getYearsRange } from '../utils/filtering/filter.utils';\r\nimport { Company } from '../types/amr-pipeline/models/Company';\r\nimport { DeserializeCommandHandler } from '../utils/filtering/serializers/DeserializeCommand';\r\nimport { SubscriptionFeature } from '../types/billing/SubscriptionFeature';\r\nimport { history } from '../history';\r\n\r\nconst filterActions = createFilterActions(BwicFilterType.BDInventory);\r\n\r\nfunction* watchInit() {\r\n yield put(bdInventoryActions.requestInventoryExistFlag());\r\n yield put(bdInventoryActions.loadBdInventory());\r\n\r\n yield take(getType(bdInventoryActions.requestResult));\r\n\r\n const queryString: string | undefined = history.location.search?.trim();\r\n const managers: Company[] = yield select((state: AppState) => state.entities.collateralManagers.items);\r\n\r\n const filter: TFilter = yield select((s: AppState) => s.filters.bdInventory.filter);\r\n // Call init after all dynamic filters (managers, broker-dealers) have already been loaded.\r\n\r\n const initialFilter = cloneDeep(filter);\r\n const inventories: InventoryPosition[] = yield select((s: AppState) => s.entities.inventory.items)\r\n const allTrusteeNames = inventories.map(s => ({ legalName: s.trustee?.legalName, referenceName: s.trustee?.referenceName }));\r\n const trusteeFilterItems = arrayUtils\r\n .distinct(allTrusteeNames, d => d.referenceName)\r\n .filter(name => !!name.legalName)\r\n .sort((a, b) => String(a.legalName).localeCompare(String(b.legalName)))\r\n .map(d => ({ value: d.referenceName, text: d.legalName, selected: false, visible: true, disabled: false }));\r\n initialFilter.trustees = { ...initialFilter.trustees, filter: trusteeFilterItems };\r\n yield put(filterActions.init({ ...initialFilter, date: bdInventoryFilters.defaultFilter.date }));\r\n\r\n const filtersConfig: UserConfigFilter[] = yield select((s: AppState) => s.entities.pageConfig.configs?.[PageConfigType.Inventory]?.filters);\r\n const canUseAdvancedFilters = user.hasFeatures(SubscriptionFeature.InventoryAvancedFilters);\r\n const defaultConfigFilter = canUseAdvancedFilters ? (filtersConfig || []).find(filter => filter.default): undefined;\r\n\r\n if (queryString) {\r\n const [ncEndSerializers, getNcEndDeserializeResult] = mixedDateRange('nonCallEndFrom', 'nonCallEndTo');\r\n const [riEndSerializers, getRiEndDeserializeResult] = mixedDateRange('reinvestmentEndFrom', 'reinvestmentEndTo');\r\n\r\n let from: Date | undefined | null = undefined;\r\n let to: Date | undefined | null = undefined;\r\n\r\n let statusOptions: (InventoryPositionStatus | undefined)[] = [];\r\n let ratingsOptions: Rating[] = [];\r\n let identifierList: string[] = [];\r\n let currencyOptions: Currency[] = [];\r\n let collateralTypeOptions: CollateralType[] = [];\r\n let collateralManagersReferenceNames: string[] = [];\r\n let isEsg: boolean | undefined = undefined;\r\n let isEuCompilance: boolean | undefined = undefined;\r\n let isStaticDeals: boolean | undefined = undefined;\r\n let maturityFrom: Date | null = null;\r\n let maturityTo: Date | null = null;\r\n let vintageFrom: Date | null = null;\r\n let vintageTo: Date | null = null;\r\n let closingFrom: Date | null = null;\r\n let closingTo: Date | null = null;\r\n let trusteesValues: string[] = [];\r\n let amrValue: boolean | undefined = undefined;\r\n let isOutofRI: boolean | undefined = undefined;\r\n let isOutOfNC: boolean | undefined = undefined;\r\n\r\n const serializers: QueryStringArgumentSerializer[] = [\r\n dateFrom(parsedDate => from = parsedDate),\r\n dateTo(parsedDate => to = parsedDate),\r\n inventoryStatuses(parsedStatuses =>\r\n statusOptions = parsedStatuses.map(s => getInventoryPositionStatusByTitle(s))\r\n ),\r\n identifiers(list => identifierList = list),\r\n ratings(parsedRatings => ratingsOptions = parsedRatings.map(r => Rating[r as keyof typeof Rating])),\r\n multipleCurrencies(parsedCurrency => currencyOptions = parsedCurrency.map(c => Currency[c as keyof typeof Currency])),\r\n\r\n collateralTypes(parsedCollateralTypes => collateralTypeOptions = parsedCollateralTypes as CollateralType[]),\r\n collateralManagers(values => collateralManagersReferenceNames = values, managers.map(m => m.referenceName)),\r\n esg(value => isEsg = value),\r\n euCompliance(parsedEuCompilance => isEuCompilance = parsedEuCompilance),\r\n staticDeals(parsedStaticDeals => isStaticDeals = parsedStaticDeals),\r\n outOfNC(value => isOutOfNC = value),\r\n outOfRI(value => isOutofRI = value),\r\n ...ncEndSerializers,\r\n ...riEndSerializers,\r\n dateFrom(value => maturityFrom = value, 'maturityFrom'),\r\n dateTo(value => maturityTo = value, 'maturityTo'),\r\n dateFrom(value => vintageFrom = value, 'vintageFrom'),\r\n dateTo(value => vintageTo = value, 'vintageTo'),\r\n dateFrom(value => closingFrom = value, 'closingFrom'),\r\n dateTo(value => closingTo = value, 'closingTo'),\r\n trustees(values => trusteesValues = values),\r\n amr(value => amrValue = value),\r\n ];\r\n\r\n queryStringSerializer.deserialize(queryString, serializers);\r\n\r\n const dateOption = getDateOptionByRange(dateRangeFilterOptions.CurrentInventory, from, to);\r\n // Set nonCallEnd and reinvestmentEnd values\r\n const ncEndDeserializeResult = getNcEndDeserializeResult();\r\n const riEndDeserializeResult = getRiEndDeserializeResult();\r\n\r\n const datesCommand = {\r\n canExecute: () =>\r\n canUseAdvancedFilters ||\r\n dateOption.key === dateRangeFilterOptions.CurrentInventory.key,\r\n execute: function* () {\r\n if (dateOption.key !== dateRangeFilterOptions.All.key) {\r\n yield put(filterActions.filterDateSelectOption(dateOption, 'date'));\r\n }\r\n\r\n if (from || to) {\r\n yield put(filterActions.filterDateSelectCustomRange({ from, to }, 'date'));\r\n }\r\n }\r\n };\r\n\r\n const ratingsCommand = {\r\n execute: function* () {\r\n yield all(ratingsOptions.map((r: Rating) => {\r\n const ratingOption = bdInventoryFilters.defaultFilter.ratings.filter.filter(rating => String(rating.value) === r)[0];\r\n return put(filterActions.filterSelectChange(ratingOption.value, 'ratings'))\r\n }));\r\n }\r\n };\r\n\r\n const identifiersCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !!identifierList.length,\r\n execute: function* () {\r\n yield all(identifierList.map(i => put(searchSecuritiesActions.addSearchItem(i))));\r\n }\r\n }\r\n\r\n const statusesCommand = {\r\n execute: function* () {\r\n yield all(statusOptions.map((s: InventoryPositionStatus | undefined) => {\r\n const statusOption = bdInventoryFilters.defaultFilter.statuses.filter.filter(status => Number(status.value) === s)[0];\r\n return put(filterActions.filterSelectChange(statusOption.value, 'statuses'));\r\n }));\r\n }\r\n }\r\n\r\n const currenciesCommand = {\r\n shouldExecute: () => !!currencyOptions.length,\r\n execute: function* () {\r\n yield all(currencyOptions.map(\r\n c =>\r\n put(filterActions.filterSelectChange(c.toString(), 'currency'))\r\n ));\r\n }\r\n }\r\n\r\n const collateralTypesCommand = {\r\n shouldExecute: () => !!collateralTypeOptions.length,\r\n execute: function* () {\r\n yield all(collateralTypeOptions.map((collateralTypeOption: CollateralType) => put(filterActions.filterSelectChange(collateralTypeOption, 'collateralType'))));\r\n }\r\n }\r\n\r\n const esgCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(isEsg),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('esg'));\r\n yield put(filterActions.filterRadioChange(isEsg!, 'esg'));\r\n }\r\n }\r\n\r\n const euCompilanceCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(isEuCompilance),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('euCompliance'));\r\n yield put(filterActions.filterRadioChange(isEuCompilance!, 'euCompliance'));\r\n }\r\n }\r\n const staticDealsCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(isStaticDeals),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('staticDeal'));\r\n yield put(filterActions.filterRadioChange(isStaticDeals!, 'staticDeal'));\r\n }\r\n }\r\n const outOfNCCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(isOutOfNC),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('outOfNC'));\r\n yield put(filterActions.filterRadioChange(isOutOfNC!, 'outOfNC'));\r\n }\r\n }\r\n const outofRICommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(isOutofRI),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('outOfRI'));\r\n yield put(filterActions.filterRadioChange(isOutofRI!, 'outOfRI'));\r\n }\r\n }\r\n\r\n const nonCallEndCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !!ncEndDeserializeResult?.dates || !!ncEndDeserializeResult?.years,\r\n execute: function* () {\r\n yield put(filterActions.filterDateQueryStringDeserialized('nonCallEnd', ncEndDeserializeResult))\r\n }\r\n };\r\n const reinvestmentEndCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !!riEndDeserializeResult?.dates || !!riEndDeserializeResult?.years,\r\n execute: function* () {\r\n yield put(filterActions.filterDateQueryStringDeserialized('reinvestmentEnd', riEndDeserializeResult));\r\n }\r\n };\r\n\r\n const collateralManagersReferenceNamesCommand = {\r\n shouldExecute: () => !!collateralManagersReferenceNames.length,\r\n execute: function* () {\r\n yield all(collateralManagersReferenceNames.map((cm: string) => {\r\n return put(filterActions.filterSelectChange(cm, 'managers'));\r\n }));\r\n }\r\n }\r\n\r\n const trusteesValuesCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !!trusteesValues.length,\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('trustees'));\r\n yield all(trusteesValues.map(name => put(filterActions.filterSelectChange(name, 'trustees'))));\r\n }\r\n }\r\n\r\n const maturityCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(maturityFrom) || !isNil(maturityTo),\r\n execute: function* () {\r\n yield put(filterActions.makeFilterVisible('maturity'));\r\n const filterOption = getDateOptionByRange(dateRangeFilterOptions.ThisWeek, maturityFrom, maturityTo);\r\n yield put(filterActions.filterDateSelectOption(filterOption, 'maturity'));\r\n yield put(\r\n filterActions.filterDateSelectCustomRange({ from: maturityFrom, to: maturityTo }, 'maturity'),\r\n );\r\n }\r\n }\r\n\r\n const vintageCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(vintageFrom) || !isNil(vintageTo),\r\n execute: function* () {\r\n yield put(filterActions.makeFilterVisible('vintage'));\r\n const filterOption = getDateOptionByRange(dateRangeFilterOptions.ThisWeek, vintageFrom, vintageTo);\r\n yield put(filterActions.filterDateSelectOption(filterOption, 'vintage'));\r\n yield put(\r\n filterActions.filterDateSelectCustomRange({ from: vintageFrom, to: vintageTo }, 'vintage'),\r\n );\r\n }\r\n }\r\n\r\n const closingCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(closingFrom) || !isNil(closingTo),\r\n execute: function* () {\r\n yield put(filterActions.makeFilterVisible('closing'));\r\n const filterOption = getDateOptionByRange(dateRangeFilterOptions.ThisWeek, closingFrom, closingTo);\r\n yield put(filterActions.filterDateSelectOption(filterOption, 'closing'));\r\n yield put(\r\n filterActions.filterDateSelectCustomRange({ from: closingFrom, to: closingTo }, 'closing'),\r\n );\r\n }\r\n }\r\n\r\n const amrValueCommand = {\r\n canExecute: () => canUseAdvancedFilters,\r\n shouldExecute: () => !isNil(amrValue),\r\n execute: function* () {\r\n yield put(filterActions.filterVisibilityChange('amr'));\r\n yield put(filterActions.filterRadioChange(amrValue!, 'amr'));\r\n }\r\n }\r\n\r\n const isAllCommandsExecuted: boolean =\r\n yield new DeserializeCommandHandler()\r\n .addCommand(datesCommand)\r\n .addCommand(identifiersCommand)\r\n .addCommand(statusesCommand)\r\n .addCommand(ratingsCommand)\r\n .addCommand(currenciesCommand)\r\n .addCommand(collateralTypesCommand)\r\n .addCommand(esgCommand)\r\n .addCommand(euCompilanceCommand)\r\n .addCommand(staticDealsCommand)\r\n .addCommand(outOfNCCommand)\r\n .addCommand(outofRICommand)\r\n .addCommand(nonCallEndCommand)\r\n .addCommand(reinvestmentEndCommand)\r\n .addCommand(collateralManagersReferenceNamesCommand)\r\n .addCommand(trusteesValuesCommand)\r\n .addCommand(maturityCommand)\r\n .addCommand(vintageCommand)\r\n .addCommand(closingCommand)\r\n .addCommand(amrValueCommand)\r\n .processGenerator()\r\n\r\n if (!isAllCommandsExecuted) {\r\n yield put(bdInventoryActions.advancedFilterBlocked(true));\r\n return;\r\n }\r\n\r\n } else if (defaultConfigFilter) {\r\n yield put(filterActions.selectFilterFromConfig(defaultConfigFilter))\r\n if(!canUseAdvancedFilters) {\r\n yield put(filterActions.filterDateSelectOption(dateRangeFilterOptions.CurrentInventory, 'date'));\r\n }\r\n } else {\r\n yield put(filterActions.filterDateSelectOption(dateRangeFilterOptions.CurrentInventory, 'date'));\r\n }\r\n yield put(bdInventoryActions.applyFilter());\r\n}\r\n\r\nfunction* watchRedirectWithFilterArguments() {\r\n const { filter } = yield select((state: AppState) => state.filters.bdInventory);\r\n const { searchTermItems } = yield select((state: AppState) => state.searchSecurities);\r\n const criteria = getFilterCriteria(filter, searchTermItems);\r\n const serializers: QueryStringArgumentSerializer[] = [\r\n identifiers(),\r\n inventoryStatuses(),\r\n ratings(),\r\n dateFrom(),\r\n dateTo(),\r\n multipleCurrencies(),\r\n collateralTypes(),\r\n collateralManagers(),\r\n esg(),\r\n euCompliance(),\r\n staticDeals(),\r\n nonCallEndFrom(),\r\n nonCallEndTo(),\r\n reinvestmentEndFrom(),\r\n reinvestmentEndTo(),\r\n currentInventory(),\r\n dateFrom(noop, 'maturityFrom'),\r\n dateTo(noop, 'maturityTo'),\r\n dateFrom(noop, 'vintageFrom'),\r\n dateTo(noop, 'vintageTo'),\r\n dateFrom(noop, 'closingFrom'),\r\n dateTo(noop, 'closingTo'),\r\n trustees(),\r\n amr(),\r\n outOfNC(),\r\n outOfRI()\r\n ];\r\n\r\n const queryString = queryStringSerializer.serialize(criteria, serializers);\r\n\r\n if (queryString) {\r\n yield call(history.replace, history.location.pathname + '?' + queryString);\r\n }\r\n yield put(filterActions.applyFilter());\r\n}\r\n\r\nfunction getFilterCriteria(filter: InventoryListFilterState, isinCusipsAndTickers: string[]) {\r\n const nonCallEndYears = getYearsRange(filter.nonCallEnd);\r\n const reinvestmentEndYears = getYearsRange(filter.reinvestmentEnd);\r\n\r\n const nonCallEndDateRange = selectedDateOptions(filter.nonCallEnd);\r\n const reinvestmentEndDateRange = selectedDateOptions(filter.reinvestmentEnd);\r\n\r\n const defaultDateRange = { dateFrom: undefined, dateTo: undefined };\r\n\r\n const maturityRange = filter.maturity.filter.selectedOption\r\n ? convertToApiCriteria(filter.maturity.filter.selectedOption, filter.maturity.filter.options)\r\n : defaultDateRange;\r\n const vintageRange = filter.vintage.filter.selectedOption\r\n ? convertToApiCriteria(filter.vintage.filter.selectedOption, filter.vintage.filter.options)\r\n : defaultDateRange;\r\n const closingRange = filter.closing.filter.selectedOption\r\n ? convertToApiCriteria(filter.closing.filter.selectedOption, filter.closing.filter.options)\r\n : defaultDateRange;\r\n\r\n return {\r\n isinCusipsAndTickers,\r\n statuses: filter.statuses.filter.filter(s => s.selected).map(s => s.text),\r\n currency: filter.currency.filter.filter(s => s.selected).map(s => s.text),\r\n ratings: filter.ratings.filter.filter(r => r.selected).map(r => r.value),\r\n collateralTypes: filter.collateralType.filter.filter(r => r.selected).map(r => r.value),\r\n collateralManagers: filter.managers.filter.filter(c => c.selected).map(c => c.value),\r\n nonCallEndFrom: nonCallEndYears.from ?? nonCallEndDateRange.from,\r\n nonCallEndTo: nonCallEndYears.to ?? nonCallEndDateRange.to,\r\n reinvestmentEndFrom: reinvestmentEndYears.from ?? reinvestmentEndDateRange.from,\r\n reinvestmentEndTo: reinvestmentEndYears.to ?? reinvestmentEndDateRange.to,\r\n esg: filter.esg.filter.selectedOption,\r\n euCompliance: filter.euCompliance.filter.selectedOption,\r\n staticDeals: filter.staticDeal.filter.selectedOption,\r\n outOfNC: filter.outOfNC.filter.selectedOption,\r\n outOfRI: filter.outOfRI.filter.selectedOption,\r\n ...convertToApiCriteria(filter.date.filter.selectedOption ? filter.date.filter.selectedOption : dateRangeFilterOptions.CurrentInventory, filter.date.filter.options),\r\n maturityFrom: maturityRange.dateFrom,\r\n maturityTo: maturityRange.dateTo,\r\n vintageFrom: vintageRange.dateFrom,\r\n vintageTo: vintageRange.dateTo,\r\n closingFrom: closingRange.dateFrom,\r\n closingTo: closingRange.dateTo,\r\n trustees: filter.trustees?.filter.filter(f => f.selected).map(f => f.value),\r\n amr: filter.amr?.filter.selectedOption\r\n };\r\n}\r\n\r\nfunction* watchRequestInventoryExist() {\r\n try {\r\n const exist: boolean = yield call(inventoryService.getInventoryExistFlag);\r\n yield put(bdInventoryActions.inventoryExistFlag(exist));\r\n } catch (e) {\r\n yield put(bdInventoryActions.inventoryExistFlag(true));\r\n }\r\n}\r\n\r\nfunction* watchLoadBdInventory() {\r\n const requestState: RequestState = yield select((state: AppState) => state.entities.inventory.requestState);\r\n\r\n if (shouldRequest(requestState)) {\r\n yield put(bdInventoryActions.request());\r\n try {\r\n const response: { inventorySecurities: InventoryPosition[]; lockModifiedDate: Date; } = yield call(inventoryService.getBdInventory);\r\n yield put(bdInventoryActions.requestResult(RequestState.success, response));\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchExportInventory(action: AnyAction) {\r\n const { sortField, sortDirection } = action.payload;\r\n const filter: InventoryListFilterState = yield select((state: AppState) => state.filters.bdInventory.lastAppliedFilter);\r\n const searchSecurities: string[] = yield select((state: AppState) => state.searchSecurities.searchTermItems);\r\n const dateRange = filter.date.filter.selectedOption\r\n ? convertToApiCriteria(filter.date.filter.selectedOption, filter.date.filter.options)\r\n : { dateFrom: undefined, dateTo: undefined };\r\n const maturityDateRange = filter.maturity.filter.selectedOption\r\n ? convertToApiCriteria(filter.maturity.filter.selectedOption, filter.maturity.filter.options)\r\n : { dateFrom: undefined, dateTo: undefined };\r\n const vintageDateRange = filter.vintage.filter.selectedOption\r\n ? convertToApiCriteria(filter.vintage.filter.selectedOption, filter.vintage.filter.options)\r\n : { dateFrom: undefined, dateTo: undefined };\r\n const closingDateRange = filter.closing.filter.selectedOption\r\n ? convertToApiCriteria(filter.closing.filter.selectedOption, filter.closing.filter.options)\r\n : { dateFrom: undefined, dateTo: undefined };\r\n const ratings = filter.ratings.filter.filter(r => r.selected).map(r => String(r.value));\r\n const statuses = filter.statuses.filter.filter(f => f.selected).map(f => Number(f.value));\r\n const managers = filter.managers.filter.filter(m => m.selected).map(m => String(m.value));\r\n const collateralTypes = filter.collateralType.filter.filter(r => r.selected).map(r => r.value);\r\n const collateralManagers = filter.managers.filter.filter(c => c.selected).map(c => c.value);\r\n const selectedCurrencies = filter.currency.filter.filter(c => c.selected).map(c => c.value);\r\n const currency = selectedCurrencies.length && selectedCurrencies.length === 1 ? selectedCurrencies[0] : undefined;\r\n const esg = filter.esg.filter.selectedOption;\r\n const euCompliance = filter.euCompliance.filter.selectedOption;\r\n const staticDeals = filter.staticDeal.filter.selectedOption;\r\n const trustees = filter.trustees.filter.filter(c => c.selected).map(c => c.value);\r\n const amr = filter.amr.filter.selectedOption;\r\n const outOfNC = filter.outOfNC.filter.selectedOption;\r\n const outOfRI = filter.outOfRI.filter.selectedOption;\r\n\r\n const nonCallEndYears = getYearsRange(filter.nonCallEnd);\r\n const reinvestmentEndYears = getYearsRange(filter.reinvestmentEnd);\r\n const nonCallEndDateRange = selectedDateOptions(filter.nonCallEnd);\r\n const reinvestmentEndDateRange = selectedDateOptions(filter.reinvestmentEnd);\r\n\r\n const normalizedDateOptions = {\r\n dateFrom: dateRange?.dateFrom ? dateRange.dateFrom : undefined,\r\n dateTo: dateRange?.dateTo ? dateRange.dateTo : undefined,\r\n currentItems: dateRange?.isCurrentInventory\r\n }\r\n const normalizedMaturityDateOptions = {\r\n maturityFrom: maturityDateRange?.dateFrom ?? undefined,\r\n maturityTo: maturityDateRange?.dateTo ?? undefined\r\n }\r\n const normalizedVintageDateOptions = {\r\n vintageFrom: vintageDateRange?.dateFrom ?? undefined,\r\n vintageTo: vintageDateRange?.dateTo ?? undefined\r\n };\r\n const normalizedClosingDateOptions = {\r\n closingFrom: closingDateRange?.dateFrom ?? undefined,\r\n closingTo: closingDateRange?.dateTo ?? undefined\r\n }\r\n\r\n const requestParams = {\r\n identifiers: searchSecurities,\r\n statuses,\r\n ratings,\r\n managers,\r\n collateralTypes,\r\n collateralManagers,\r\n nonCallEndFromYear: nonCallEndYears.from,\r\n nonCallEndToYear: nonCallEndYears.to,\r\n reinvestmentEndFromYear: reinvestmentEndYears.from,\r\n reinvestmentEndToYear: reinvestmentEndYears.to,\r\n nonCallEndFromDate: nonCallEndDateRange.from,\r\n nonCallEndToDate: nonCallEndDateRange.to,\r\n reinvestmentEndFromDate: reinvestmentEndDateRange.from,\r\n reinvestmentEndToDate: reinvestmentEndDateRange.to,\r\n esg,\r\n euCompliance,\r\n staticDeals,\r\n currency,\r\n dealers: null,\r\n outOfNC,\r\n outOfRI,\r\n orderByColumn: Number(InventorySecurityOrderByColumn[sortField]) || undefined,\r\n sortOrder: Number(InventorySecuritySortOrder[sortDirection]) || undefined,\r\n trustees,\r\n amr,\r\n ...normalizedDateOptions,\r\n ...normalizedMaturityDateOptions,\r\n ...normalizedVintageDateOptions,\r\n ...normalizedClosingDateOptions,\r\n\r\n };\r\n try {\r\n const file: { blob: Blob, name: string } = yield call(inventoryService.exportInventoryList, requestParams);\r\n saveAs(file.blob, file.name);\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(bdInventoryActions.exportInventoryResponse())\r\n }\r\n}\r\n\r\nfunction* watchRequestSendEmail(action: { type: string, payload: { selectedDealerEmail: boolean, selectedBloombergEmail: boolean } }) {\r\n try {\r\n const params = action.payload;\r\n yield call(inventoryService.sendEmail, params);\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchAddBloombergEmailRequest(action: { type: string, payload: { email: string } }) {\r\n try {\r\n const { email } = action.payload;\r\n yield call(accountService.saveBloombergEmail, email);\r\n user.setBloombergEmail(email);\r\n yield put(bdInventoryActions.toggleVisibleAddBloombergEmailForm());\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(bdInventoryActions.addBloombergEmailResponse());\r\n }\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(bdInventoryActions.reset());\r\n yield put(bdInventoryActions.resetEntities());\r\n}\r\n\r\nfunction* watchPushInventory() {\r\n const isPageActive: boolean = yield select((s: AppState) => !isRequestNone(s.bdInventory.requestStateInventoryExist));\r\n\r\n if (isPageActive) {\r\n yield put(bdInventoryActions.requestInventoryExistFlag());\r\n }\r\n}\r\n\r\nexport function* watchBdInventory() {\r\n yield takeLatest(getType(bdInventoryActions.init), watchInit);\r\n yield takeLatest(getType(bdInventoryActions.requestInventoryExistFlag), watchRequestInventoryExist);\r\n yield takeEvery(getType(bdInventoryActions.loadBdInventory), watchLoadBdInventory);\r\n yield takeLatest(getType(bdInventoryActions.exportInventoryRequest), watchExportInventory);\r\n yield takeLatest(getType(bdInventoryActions.requestSendEmail), watchRequestSendEmail);\r\n yield takeLatest(getType(bdInventoryActions.addBloombergEmailRequest), watchAddBloombergEmailRequest);\r\n yield takeLatest(\r\n [\r\n getType(bdInventoryActions.applyFilter),\r\n getType(bdInventoryActions.clearFilter)\r\n ],\r\n watchRedirectWithFilterArguments\r\n );\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n yield takeEvery(getType(bdInventoryActions.pushInventory), watchPushInventory);\r\n}\r\n","import { call, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { getType } from \"typesafe-actions\";\r\nimport { apiOperationActions, bidOnBehalfActions, errorActions, notificationActions } from \"../actions\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { BidOnBehalfState, EditBidOnBehalfState, getEditKey, parseKey } from \"../types/state/BidOnBehalfState\";\r\nimport { bidOnBehalfService } from '../services';\r\nimport { BwicPosition } from \"../types/bwic/BwicPosition\";\r\nimport { BulkSaveBidOnBehalf, SaveBidOnBehalf } from '../types/bid-on-behalf/BulkSaveBidOnBehalf';\r\nimport { arrayUtils, bidOnBehalfUtils, formatUtils, jsonUtils } from \"../utils\";\r\nimport { BidApiOperationResult, TOperationResult } from \"../types/api-operation/ApiOperationResult\";\r\nimport { ApiOperationType } from \"../types/api-operation/ApiOperationType\";\r\nimport { Bid } from \"../types/bidding/Bid\";\r\nimport { BidOnBehalfConflict } from \"../types/bid-on-behalf/BidOnBehalfConflict\";\r\nimport { RequestState } from \"../constants/request-state\";\r\nimport { CompanySlim } from \"../types/company/CompanySlim\";\r\nimport { accountActions, pushDataActions } from \"../constants\";\r\nimport { CompanyHiddenState } from \"../types/state/DealerListPanelState\";\r\nimport { FavoriteCompanyState } from \"../types/state/FavoriteBrokerDealersState\";\r\nimport { getSellerBiddingCompanies } from \"../selectors\";\r\nimport { TradeStatus } from \"../types/trades/TradeStatus\";\r\nimport { CompanyStatus } from \"../types/company/CompanyStatus\";\r\nimport { SettlementAgentAgreement } from \"../types/bid-as-dealer/SettlementAgentAgreement\";\r\nimport { Bwic } from \"../types/bwic/Bwic\";\r\nimport { BwicProcessType } from \"../types/models/Process\";\r\n\r\nfunction* watchBidOnBehalfCompaniesRequest() {\r\n const state: BidOnBehalfState = yield select((state: AppState) => state.bidOnBehalf);\r\n const bwic: Bwic = yield select((state: AppState) => state.bidding.bwic);\r\n\r\n if (state.isRequesting || !bwic) {\r\n return;\r\n }\r\n\r\n yield put(bidOnBehalfActions.setCompainesRequesting(true));\r\n\r\n try {\r\n const companies: CompanySlim[] = yield call(bidOnBehalfService.getCompanies, bwic.referenceName);\r\n companies.sort((a, b) => a.name.localeCompare(b.name));\r\n yield put(bidOnBehalfActions.storeCompanies(companies));\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(bidOnBehalfActions.setCompainesRequesting(false));\r\n }\r\n}\r\n\r\nfunction* watchOperationError(action: TOperationResult) {\r\n const { result } = action.payload;\r\n if (result.event === ApiOperationType.submitBidsOnBehalf) {\r\n if (result.statusCode === 409) {\r\n const conflicts: BidOnBehalfConflict[] | undefined = result.response && jsonUtils.tryParse(result.response);\r\n if (conflicts != null && conflicts.length) {\r\n yield put(bidOnBehalfActions.storeConflicts(conflicts));\r\n yield put(bidOnBehalfActions.conflictsPopupVisible(true));\r\n }\r\n } else if (result.statusCode === 410 && result.positionId) {\r\n const bidSumitResult = result as BidApiOperationResult;\r\n if (bidSumitResult.companyId) {\r\n const company: CompanySlim | undefined = yield select((s: AppState) => s.bidOnBehalf.companies.find(c => c.id === bidSumitResult.companyId));\r\n const editingBid: EditBidOnBehalfState | undefined =\r\n yield select((s: AppState) => s.bidOnBehalf.editState[getEditKey(result.positionId!, bidSumitResult.companyId!)])\r\n if (company && editingBid) {\r\n\r\n yield put(bidOnBehalfActions.resetBidEdit(result.positionId, bidSumitResult.companyId));\r\n const bid = editingBid.pass ? 'PASS' : formatUtils.formatBid(Number(editingBid.value));\r\n yield put(notificationActions.notificationAddErrorMessage(`Bid ${bid} can’t be saved for ${company.code}`));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\ntype TSaveAction = { type: string, payload: { resolveConflicts?: boolean } }\r\nfunction* watchBidOnBehalfBulkSave(action: TSaveAction) {\r\n const isSubmitting: boolean = yield select((state: AppState) => state.bidOnBehalf.isSubmitting);\r\n if (isSubmitting) return;\r\n\r\n const bwicReferenceName: string = yield select((state: AppState) => state.bidding.bwic && state.bidding.bwic.referenceName);\r\n if (!bwicReferenceName) return;\r\n\r\n const isConflictsPopupVisible: boolean = yield select((state: AppState) => state.bidOnBehalf.isConflictsPpopupVisible);\r\n if (isConflictsPopupVisible && !action.payload.resolveConflicts) return; // Stop auto-save when conflicts popup is shown\r\n\r\n const waitingResult: boolean = yield select((state: AppState) =>\r\n state.apiOperation.requests.some(r =>\r\n r.event === ApiOperationType.submitBidsOnBehalf &&\r\n r.state === RequestState.request\r\n )\r\n );\r\n\r\n const bwic: Bwic = yield select((s: AppState) => s.bidding.bwic);\r\n const positions: BwicPosition[] = yield select((state: AppState) => state.sellerBidding.securities);\r\n\r\n if (waitingResult || !bwic || !positions?.length) return;\r\n \r\n const editState: { [key: string]: EditBidOnBehalfState } = yield select((state: AppState) => state.bidOnBehalf.editState);\r\n const bidsByCompany = new Map();\r\n const bids = getBidsToSubmit(positions, editState);\r\n const conflicts: BidOnBehalfConflict[] = action.payload.resolveConflicts\r\n ? yield select((state: AppState) => state.bidOnBehalf.conflicts)\r\n : [];\r\n\r\n bids.forEach(({ positionId, companyId, bid }) => {\r\n const position = positions.find(p => p.id === positionId);\r\n if (position) {\r\n if (!bidsByCompany.has(companyId)) {\r\n bidsByCompany.set(companyId, []);\r\n }\r\n\r\n const conflictBidLock = conflicts.find(c => c.positionId === position.id && c.companyId === companyId)?.modifiedDate\r\n const companyBidLock = position.bidLocks?.find(b => b.companyId === companyId)?.bidLock;\r\n const bidLock = conflictBidLock && companyBidLock\r\n ? arrayUtils.max([conflictBidLock, companyBidLock], date => new Date(date).getTime())\r\n : conflictBidLock ?? companyBidLock;\r\n\r\n const bids = position.bids || []\r\n const companyBids = bids.filter(b => b.company.id === companyId);\r\n const latestBid: Bid | undefined = arrayUtils.max(companyBids, bid => bid.id);\r\n\r\n bidsByCompany\r\n .get(companyId)\r\n ?.push({\r\n positionId,\r\n bidLock,\r\n size: position.size,\r\n value: bid.value ? +bid.value : latestBid?.value,\r\n axed: bid.axed == null ? !!latestBid?.axed : bid.axed,\r\n final: bid.final == null ? !!latestBid?.final : bid.final,\r\n pass: !!bid.pass,\r\n stagedBiddingStatus: bwic.process.stagedBiddingStatus\r\n });\r\n }\r\n });\r\n\r\n const bulkList: BulkSaveBidOnBehalf[] = [...bidsByCompany.entries()]\r\n .map(([companyId, bids]) => ({\r\n brokerDealerCompanyId: companyId,\r\n bids\r\n }));\r\n\r\n\r\n if (!bulkList.length) return;\r\n\r\n if (action.payload.resolveConflicts) {\r\n yield put(bidOnBehalfActions.conflictsPopupVisible(false));\r\n }\r\n\r\n yield put(bidOnBehalfActions.submitProgress(true));\r\n\r\n try {\r\n const tokens: string[] = yield call(bidOnBehalfService.submitBidsBulk, bwicReferenceName, bulkList);\r\n if (tokens && tokens.length) {\r\n yield put(apiOperationActions.waitResult(\r\n ...tokens.map(token => ({\r\n token,\r\n event: ApiOperationType.submitBidsOnBehalf,\r\n state: RequestState.request,\r\n autoRemove: true,\r\n createdDate: new Date()\r\n }))\r\n ));\r\n }\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(bidOnBehalfActions.submitProgress(false));\r\n }\r\n}\r\n\r\nfunction getBidsToSubmit(\r\n positions: BwicPosition[],\r\n editState: { [key: string]: EditBidOnBehalfState }) {\r\n\r\n if (!positions || !positions.length) return [];\r\n\r\n return Object\r\n .keys(editState)\r\n .filter((key: string) => {\r\n const { positionId, companyId } = parseKey(key);\r\n const edit = editState[key];\r\n\r\n if (!edit.error && !edit.editing) {\r\n const position = positions.find(s => s.id === positionId);\r\n if (position) {\r\n const companyBids = position.bids?.filter(b => b.company.id === companyId) ?? [];\r\n const latestBid: Bid | undefined = arrayUtils.max(companyBids, bid => bid.id);\r\n\r\n return bidOnBehalfUtils.isBidChanged(edit, latestBid);\r\n }\r\n }\r\n\r\n return false;\r\n })\r\n .map((key: string) => {\r\n const { positionId, companyId } = parseKey(key);\r\n\r\n return {\r\n positionId,\r\n companyId,\r\n bid: editState[key]\r\n };\r\n });\r\n}\r\n\r\ntype TNewBidAction = { type: string, bwicReferenceName: string, positionId: number, bid: Bid };\r\nfunction* watchNewBid(action: TNewBidAction) {\r\n const bwicReferenceName: string = yield select((state: AppState) => state.bidding.bwic && state.bidding.bwic.referenceName);\r\n if (!bwicReferenceName ||\r\n !action.bwicReferenceName ||\r\n !action.positionId ||\r\n !action.bid ||\r\n bwicReferenceName !== action.bwicReferenceName) return;\r\n\r\n const edit: EditBidOnBehalfState | undefined =\r\n yield select((state: AppState) => state.bidOnBehalf.editState[getEditKey(action.positionId, action.bid.company.id)]);\r\n\r\n if (edit && !bidOnBehalfUtils.isBidChanged(edit, action.bid)) {\r\n yield put(bidOnBehalfActions.resetBidEdit(action.positionId, action.bid.company.id));\r\n }\r\n}\r\n\r\n\r\nfunction* watchMoveNextBid(action: { type: string, payload: { companyId: number, positionId: number } }) {\r\n const securities: BwicPosition[] = yield select((state: AppState) => state.sellerBidding.securities);\r\n const participants: CompanySlim[] = yield select((state: AppState) => state.bidding.bwic.companies);\r\n const processType: BwicProcessType = yield select((state: AppState) => state.bidding.bwic.process?.type) ?? BwicProcessType.Standard;\r\n const offPlatformCompanies: CompanySlim[] = yield select((state: AppState) => state.bidOnBehalf.companies);\r\n const hiddenState: CompanyHiddenState = yield select((state: AppState) => state.dealerListPanel.companyHiddenState);\r\n const favorites: FavoriteCompanyState = yield select((state: AppState) => state.favoriteBrokerDealers.favorites);\r\n const agreements: SettlementAgentAgreement[] = yield select((state: AppState) => state.entities.settlementAgentAgreements.items);\r\n const companies = getSellerBiddingCompanies({ participants, offPlatformCompanies, hiddenState, favorites, processType, agreements, securities });\r\n\r\n if (!companies.length) return;\r\n\r\n const isTraded = (p: BwicPosition) =>\r\n p.trade != null &&\r\n (p.trade.status === TradeStatus.pending || p.trade.status === TradeStatus.affirmed);\r\n\r\n const isOnPlatform = (c: CompanySlim) => c.status === CompanyStatus.active;\r\n\r\n const currentPositionIndex = securities.findIndex(p => p.id === action.payload.positionId);\r\n if (currentPositionIndex < 0) return;\r\n let nextPositionId: number | undefined = securities.find((p, i) => !isTraded(p) && i > currentPositionIndex)?.id;\r\n\r\n let nextCompanyId: number | undefined = action.payload.companyId;\r\n if (!nextPositionId) { //last position is focused move to the next company\r\n const currentCompanyIndex = companies.findIndex(c => c.id === action.payload.companyId);\r\n if (currentCompanyIndex < 0) return;\r\n\r\n nextCompanyId = companies.find((c, i) => !isOnPlatform(c) && i > currentCompanyIndex)?.id;\r\n if (nextCompanyId == null) nextCompanyId = companies.find(c => !isOnPlatform(c))?.id;\r\n }\r\n\r\n if (!nextPositionId) {\r\n // move to the first not traded position\r\n nextPositionId = securities.find(p => !isTraded(p))?.id;\r\n }\r\n\r\n if (nextPositionId && nextCompanyId) {\r\n yield put(bidOnBehalfActions.setNextBidIdentifiers(nextCompanyId, nextPositionId));\r\n }\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(bidOnBehalfActions.reset())\r\n}\r\n\r\nexport function* watchBidOnBehalf() {\r\n yield takeEvery(getType(bidOnBehalfActions.requestCompanies), watchBidOnBehalfCompaniesRequest);\r\n yield takeEvery(getType(bidOnBehalfActions.submit), watchBidOnBehalfBulkSave);\r\n yield takeEvery(getType(apiOperationActions.error), watchOperationError);\r\n yield takeEvery(pushDataActions.PUSH_DATA_NEW_BID, watchNewBid);\r\n yield takeEvery(getType(bidOnBehalfActions.moveNextBid), watchMoveNextBid);\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n}\r\n","import { call, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { ActionType, getType } from \"typesafe-actions\";\r\nimport { pushBwicActions } from \"../actions\";\r\nimport { apiOperationActions } from \"../actions/api-operation.actions\";\r\nimport { blastMessageActions } from \"../actions/blast-message.actions\";\r\nimport { errorActions } from \"../actions/error.actions\";\r\nimport { feedbackTypes } from \"../constants/bidding\";\r\nimport { RequestState } from \"../constants/request-state\";\r\nimport { getSecuritiesWithLatestBids } from \"../selectors/latest-bids.selector\";\r\nimport { blastMessageService } from \"../services/blast-message.service\";\r\nimport { ApiOperationType } from \"../types/api-operation/ApiOperationType\";\r\nimport { Bid } from \"../types/bidding/Bid\";\r\nimport { BidRequestType } from \"../types/bidding/BidRequest\";\r\nimport { BlastMessage } from \"../types/blast-message/BlastMessage\";\r\nimport { BwicPosition } from \"../types/bwic/BwicPosition\";\r\nimport { CompanySlim } from \"../types/company/CompanySlim\";\r\nimport { OpenBiddingStatus } from \"../types/enums/OpenBiddingStatus\";\r\nimport { BwicProcessType, Process } from \"../types/models/Process\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { BlastMessageRecipientLevelState, BlastMessageRecipientsState, BlastMessageState, BlastMessageTypes } from \"../types/state/BlastMessageState\";\r\nimport { isActiveTrade, TradeStatus } from \"../types/trades/TradeStatus\";\r\nimport { apiUtils } from \"../utils/api.utils\";\r\nimport { BidCompanyIdentifierParseResult, biddingUtils } from \"../utils/bidding.utils\";\r\nimport { calculateStage2Participants } from \"../utils/stage2-participants-calculator\";\r\n\r\nexport function* watchMessageChange() {\r\n yield updateRecipients();\r\n}\r\n\r\nexport function* watchBwicChange() {\r\n yield updateRecipients(true);\r\n}\r\n\r\nfunction* updateRecipients(keepSelection = false) {\r\n const panelVisible: boolean = yield select((s: AppState) => s.blastMessage.panelVisible);\r\n const bwicParticipants: CompanySlim[] = yield select((s: AppState) => s.bidding.bwic?.companies);\r\n const process: Process = yield select((s: AppState) => s.bidding.bwic?.process);\r\n const securities: BwicPosition[] = yield select((s: AppState) => getSecuritiesWithLatestBids({ securities: s.sellerBidding.securities }));\r\n\r\n if (!panelVisible || !bwicParticipants || !bwicParticipants.length || !securities || !securities.length || !process) return;\r\n\r\n const isSelectAllRecipients: boolean = yield select((s: AppState) => s.blastMessage.isSelectAllRecipients);\r\n const messageType: number = yield select((s: AppState) => s.blastMessage.messageType);\r\n const recipientLevel: BlastMessageRecipientLevelState = yield select((s: AppState) => s.blastMessage.recipientLevel);\r\n const recipients: BlastMessageRecipientsState = yield getRecipients(messageType, recipientLevel, bwicParticipants, securities, process);\r\n\r\n if (keepSelection) {\r\n const currentRecipients: BlastMessageRecipientsState = yield select((s: AppState) => s.blastMessage.recipients);\r\n Object\r\n .keys(recipients)\r\n .forEach((key: string) => {\r\n if (currentRecipients.hasOwnProperty(key)) {\r\n recipients[key] = currentRecipients[key];\r\n }\r\n });\r\n }\r\n\r\n yield put(blastMessageActions.storeRecipients(recipients));\r\n yield updateSelectAllRecipientsState(recipients, isSelectAllRecipients);\r\n}\r\n\r\nfunction* getRecipients(\r\n messageType: number,\r\n recipientLevel: BlastMessageRecipientLevelState = BlastMessageRecipientLevelState.Top3,\r\n bwicParticipants: CompanySlim[],\r\n securities: BwicPosition[],\r\n process: Process) {\r\n const biddingSecurities = securities.filter(s => s.trade == null || s.trade.status === TradeStatus.rejected);\r\n\r\n switch (messageType) {\r\n case BlastMessageTypes.submitFinal: return (yield getSubmitFinalRecipients(biddingSecurities, recipientLevel, process)) as BlastMessageRecipientsState\r\n case BlastMessageTypes.stage1AboutToEndTimeout: return (yield getStage1AboutToEndTimeoutRecipients(biddingSecurities)) as BlastMessageRecipientsState\r\n default: return getBidOrPassRecipients(biddingSecurities, bwicParticipants);\r\n }\r\n}\r\n\r\nfunction* getSubmitFinalRecipients(securities: BwicPosition[], recipientLevel: BlastMessageRecipientLevelState, process: Process) {\r\n const isAllToAll: boolean = yield select((s: AppState) => s.bidding.bwic?.isAllToAll);\r\n let recipients: BlastMessageRecipientsState = {};\r\n const withBids = securities.filter(s => s.bids?.length);\r\n\r\n for (const position of withBids) {\r\n let positionRecipients: BlastMessageRecipientsState = {};\r\n\r\n switch (process.type) {\r\n case BwicProcessType.TopX:\r\n case BwicProcessType.JumpBall:\r\n positionRecipients = (yield getStagedProcessRecipients(position, process, isAllToAll)) as BlastMessageRecipientsState;\r\n break;\r\n default: positionRecipients = getStandardProcessRecipients(position, recipientLevel, isAllToAll);\r\n }\r\n\r\n recipients = {\r\n ...recipients,\r\n ...positionRecipients\r\n };\r\n }\r\n\r\n return recipients;\r\n}\r\n\r\nfunction getDefaultSelectedState(isAllToAll: boolean, isBuyside: boolean){\r\n return isAllToAll || !isBuyside;\r\n}\r\n\r\nfunction getStage1AboutToEndTimeoutRecipients(securities: BwicPosition[]) {\r\n let recipients: BlastMessageRecipientsState = {};\r\n const withBids = securities.filter(s => s.bids?.length);\r\n\r\n for (const position of withBids) {\r\n position.bids.forEach(b => { recipients[biddingUtils.getBidCompanyIdentifier(b)] = true });\r\n }\r\n\r\n return recipients;\r\n}\r\n\r\nfunction getStandardProcessRecipients(position: BwicPosition, recipientLevel: BlastMessageRecipientLevelState, isAllToAll: boolean) {\r\n const getTopImproverCount = () => {\r\n if (recipientLevel === BlastMessageRecipientLevelState.Top3) return 3;\r\n if (recipientLevel === BlastMessageRecipientLevelState.Top5) return 5;\r\n return undefined;\r\n }\r\n\r\n const recipients: BlastMessageRecipientsState = {};\r\n\r\n // Calculate for selected level\r\n const topX = getTopImproverCount();\r\n const targetBids: Bid[] = topX\r\n ? biddingUtils.groupBidsByLevel(position.bids).slice(0, topX).flat()\r\n : position.bids;\r\n\r\n targetBids.forEach(b => { recipients[biddingUtils.getBidCompanyIdentifier(b)] = getDefaultSelectedState(isAllToAll, !!b.buyerPseudoOrderNumber) });\r\n\r\n return recipients;\r\n}\r\n\r\nfunction* getStagedProcessRecipients(position: BwicPosition, process: Process, isAllToAll: boolean) {\r\n const recipients: BlastMessageRecipientsState = {};\r\n const allBids: Bid[] | undefined = yield select((state: AppState) => state.sellerBidding.securities.find(x => x.id === position.id)?.bids);\r\n\r\n if (allBids?.length) {\r\n const stage2Participants = calculateStage2Participants(allBids, process);\r\n Object.keys(stage2Participants).forEach((identifier: string) => {\r\n if ( // Jump Ball: Skip participants who already submitted Stage 2 bid\r\n process.type !== BwicProcessType.JumpBall ||\r\n !allBids.some(b =>\r\n b.stagedBiddingStatus === OpenBiddingStatus.stage1Ended &&\r\n biddingUtils.getBidCompanyIdentifier(b) === identifier)) {\r\n const parseResult = biddingUtils.parseBidCompanyIdentifier(identifier) as BidCompanyIdentifierParseResult;\r\n recipients[identifier] = getDefaultSelectedState(isAllToAll, parseResult.buyerPseudoOrderNumber != null);\r\n }\r\n });\r\n }\r\n\r\n return recipients;\r\n}\r\n\r\nfunction getBidOrPassRecipients(securities: BwicPosition[], bwicParticipants: CompanySlim[]) {\r\n const participants = bwicParticipants.filter(p =>\r\n securities.some(s =>\r\n !s.bids\r\n ?.filter(b => !b.buyerPseudoOrderNumber)\r\n .some(b => b.company.id === p.id))\r\n );\r\n return apiUtils.normalize(participants, p => String(p.id), () => true);\r\n}\r\n\r\nfunction* watchRecpientSelectedChange(action: ActionType) {\r\n const recipients: BlastMessageRecipientsState = yield select((s: AppState) => s.blastMessage.recipients);\r\n const isSelectAllRecipients: boolean = yield select((s: AppState) => s.blastMessage.isSelectAllRecipients);\r\n\r\n if (recipients[action.payload.companyIdentifier] !== isSelectAllRecipients) {\r\n yield updateSelectAllRecipientsState(recipients, isSelectAllRecipients);\r\n }\r\n}\r\n\r\nfunction* updateSelectAllRecipientsState(\r\n recipients: BlastMessageRecipientsState,\r\n isSelectAllRecipients: boolean) {\r\n const shouldToggleSelectAll =\r\n Object\r\n .keys(recipients)\r\n .every((key: string) => recipients[key] === !isSelectAllRecipients);\r\n if (shouldToggleSelectAll) {\r\n yield put(blastMessageActions.toggleSelectAllParticipantsFlag());\r\n }\r\n}\r\n\r\nexport function* watchSend(action: ActionType) {\r\n const bwicReferenceName: string = yield select((s: AppState) => s.bidding.bwic?.referenceName);\r\n const { messageType, recipientLevel, stage1AboutToEndTimeout }: BlastMessageState = yield select((s: AppState) => s.blastMessage);\r\n const process: Process = yield select((s: AppState) => s.bidding.bwic?.process);\r\n const { blastMessageRecipients, bwicParticipants, securities } = action.payload;\r\n\r\n const recipients = Object\r\n .keys(blastMessageRecipients)\r\n .filter((key: string) => blastMessageRecipients[key]);\r\n\r\n if (!bwicReferenceName ||\r\n !bwicParticipants ||\r\n !bwicParticipants.length ||\r\n !securities ||\r\n !securities.length ||\r\n !recipients.length ||\r\n !messageType) return;\r\n\r\n const recipientsByPosition: Map = new Map();\r\n const unsold = securities.filter(s => !isActiveTrade(s.trade))\r\n\r\n for (var s of unsold) {\r\n const recipients: BlastMessageRecipientsState = yield getRecipients(messageType, recipientLevel, bwicParticipants, [s], process);\r\n recipientsByPosition.set(s.id, recipients);\r\n }\r\n\r\n function getFeedbackType(messageType: number) {\r\n switch (messageType) {\r\n case BlastMessageTypes.stage1AboutToEndTimeout: return feedbackTypes.stage1AboutToEndTimeout\r\n case BlastMessageTypes.submitFinal: return feedbackTypes.submitFinal\r\n default: return undefined\r\n }\r\n }\r\n\r\n const model: BlastMessage = {\r\n companyMessages: recipients\r\n .map(identifier => ({ identifier, ...biddingUtils.parseBidCompanyIdentifier(identifier) }))\r\n .filter(({ brokerDealerCompanyId }) => brokerDealerCompanyId != null)\r\n .map(({ identifier, brokerDealerCompanyId, buyerPseudoOrderNumber }) => ({\r\n brokerDealerCompanyId: brokerDealerCompanyId ?? 0,\r\n buyerPseudoOrderNumber,\r\n positionMessages: unsold.filter(s => {\r\n const recipients = recipientsByPosition.get(s.id);\r\n return recipients && recipients.hasOwnProperty(identifier) && blastMessageRecipients[identifier];\r\n }).map(s => ({\r\n positionId: s.id,\r\n bidRequestType: messageType === BidRequestType.BidOrPass ? messageType : undefined,\r\n feedbackType: getFeedbackType(messageType),\r\n stage1AboutToEndTimeout: messageType === BlastMessageTypes.stage1AboutToEndTimeout ? stage1AboutToEndTimeout : undefined,\r\n feedbackBidId: messageType === BlastMessageTypes.submitFinal || messageType === BlastMessageTypes.stage1AboutToEndTimeout\r\n ? s.bids?.find(b => biddingUtils.getBidCompanyIdentifier(b) === identifier)?.id\r\n : undefined\r\n }))\r\n })).filter(cm => cm.positionMessages.length > 0)\r\n };\r\n\r\n if (!model.companyMessages.length) {\r\n yield put(blastMessageActions.hide());\r\n return;\r\n }\r\n\r\n yield put(blastMessageActions.sending(true));\r\n try {\r\n const tokens: string[] = yield call(blastMessageService.send, bwicReferenceName, model);\r\n if (tokens && tokens.length) {\r\n yield put(apiOperationActions.waitResult(\r\n ...tokens.map(token => ({\r\n token,\r\n event: ApiOperationType.BlastMessage,\r\n state: RequestState.request,\r\n autoRemove: true,\r\n createdDate: new Date()\r\n }))\r\n ));\r\n }\r\n yield put(blastMessageActions.hide());\r\n } catch (e) {\r\n yield put(errorActions.unexpectedError(e));\r\n } finally {\r\n yield put(blastMessageActions.sending(false));\r\n }\r\n}\r\n\r\nexport function* watchBlastMessage() {\r\n yield takeEvery([\r\n getType(blastMessageActions.show),\r\n getType(blastMessageActions.messageTypeChange),\r\n getType(blastMessageActions.recipientLevelChange)], watchMessageChange);\r\n yield takeEvery(getType(blastMessageActions.recipientSelectedChange), watchRecpientSelectedChange);\r\n yield takeEvery(getType(pushBwicActions.newBid), watchBwicChange);\r\n yield takeEvery(getType(pushBwicActions.tradeAction), watchBwicChange);\r\n yield takeEvery(getType(blastMessageActions.send), watchSend);\r\n}\r\n","import { takeEvery, takeLatest, select, call, put, all } from 'redux-saga/effects';\r\nimport { saveAs } from 'file-saver';\r\nimport { getType } from 'typesafe-actions';\r\nimport {\r\n blotterHasTradesFailure,\r\n blotterHasTradesRequest,\r\n blotterHasTradesSuccess,\r\n blotterSearchFailure,\r\n blotterSearchRequest,\r\n blotterSearchSuccess,\r\n blotterExportRequest,\r\n blotterExportSuccess,\r\n blotterExportFailure,\r\n blotterInit,\r\n blotterFiltersReset,\r\n blotterSetCurrency,\r\n blotterTogglePending,\r\n blotterToggleConfirmed,\r\n blotterToggleRejected,\r\n blotterToggleFilterBuy,\r\n blotterToggleFilterSell,\r\n blotterToggleFilterClient,\r\n blotterToggleFilterDesc,\r\n blotterDateFilterChange,\r\n blotterCustomDateFilterChange,\r\n blotterSetVconRequest,\r\n blotterSetVconSuccess,\r\n blotterSetVconFailure,\r\n blotterSetBookedRequest,\r\n blotterSetBookedSuccess,\r\n blotterSetBookedFailure,\r\n blotterToggleVcon,\r\n blotterToggleBooked,\r\n blotterToggleAllocationStatusSettled,\r\n blotterToggleAllocationStatusUnsettled,\r\n blotterToggleAllocationStatusPendingAllocation,\r\n blotterToggleAllocationStatusPendingSettlement,\r\n blotterSettlementDateFilterChange,\r\n blotterSettlementCustomDateFilterChange,\r\n blotterSetFilterDefaults, blotterToggleAllocationStatusPendingProceeds, blotterSearchRequestNextPage\r\n} from '../actions/blotter.actions';\r\n\r\nimport { tradingService } from '../services';\r\nimport { tradeStatuses } from '../constants/bidding';\r\nimport { bwicDateFilterOptions, pushDataActions, roles, routes } from '../constants';\r\nimport { RequestState } from '../constants/request-state';\r\nimport {\r\n identifiers,\r\n multipleCurrencies,\r\n tradesStatuses,\r\n tradeSide,\r\n tradeType,\r\n dateFrom,\r\n dateTo,\r\n settlementStatuses\r\n} from '../utils/filtering/serializers/serializer.definitions';\r\nimport { queryStringSerializer } from '../utils/filtering/query-string-serializer';\r\nimport { errorActions, searchSecuritiesActions } from '../actions';\r\nimport { getDateRangeOption, getSearchDateRange, isRequestSuccess } from '../utils';\r\nimport { TradeSide } from '../types/trades/TradeSide';\r\nimport { TradeType, tradeTypeTitle } from '../types/trades/TradeType';\r\nimport { user } from '../user';\r\nimport { tradeSettlementStatusTitle, TradeSettlementStatus } from '../types/settlement/TradeSettlementStatus';\r\nimport { companyDetailsActions } from '../actions/company-details.actions';\r\nimport { history } from '../history';\r\n\r\nfunction* watchBlotterInit() {\r\n const qs = history.location.search?.trim();\r\n if (qs) {\r\n applyQueryStringFilter(qs);\r\n } else {\r\n yield put(blotterSetFilterDefaults());\r\n }\r\n}\r\n\r\nfunction* applyQueryStringFilter(queryString) {\r\n yield put(blotterFiltersReset());\r\n\r\n let identifierOptions = [];\r\n let statusOptions = [];\r\n let sellementStatusOptions = [];\r\n let currencyOptions = [];\r\n let tradeSideOptions = [];\r\n let tradeTypeOptions = [];\r\n let from = undefined;\r\n let to = undefined;\r\n let settlementFrom;\r\n let settlementTo;\r\n\r\n const serializers = [\r\n identifiers(parsedIdentifiers => identifierOptions = parsedIdentifiers),\r\n tradesStatuses(parsedStatuses => statusOptions = parsedStatuses),\r\n settlementStatuses(parsedStatuses => sellementStatusOptions = parsedStatuses),\r\n multipleCurrencies(parsedCurrency => currencyOptions = parsedCurrency),\r\n tradeSide(parsed => tradeSideOptions = parsed),\r\n tradeType(parsed => tradeTypeOptions = parsed),\r\n dateFrom(parsedDate => from = parsedDate),\r\n dateTo(parsedDate => to = parsedDate),\r\n dateFrom(parsedDate => settlementFrom = parsedDate, 'settlFrom'),\r\n dateTo(parsedDate => settlementTo = parsedDate, 'settlTo')\r\n ];\r\n\r\n queryStringSerializer.deserialize(queryString, serializers);\r\n\r\n yield all(identifierOptions.map(item => put(searchSecuritiesActions.addSearchItem(item))));\r\n yield all(currencyOptions.map(item => put(blotterSetCurrency(item))));\r\n yield all(statusOptions.map(statusTitle => {\r\n if (statusTitle === tradeStatuses.pending.title) return put(blotterTogglePending());\r\n if (statusTitle === tradeStatuses.affirmed.title) return put(blotterToggleConfirmed());\r\n if (statusTitle === tradeStatuses.rejected.title) return put(blotterToggleRejected());\r\n return null;\r\n }));\r\n yield all(sellementStatusOptions.map(statusTitle => {\r\n if (statusTitle === tradeSettlementStatusTitle[TradeSettlementStatus.Unsettled]) return put(blotterToggleAllocationStatusUnsettled());\r\n if (statusTitle === tradeSettlementStatusTitle[TradeSettlementStatus.PendingSettlement]) return put(blotterToggleAllocationStatusPendingSettlement());\r\n if (statusTitle === tradeSettlementStatusTitle[TradeSettlementStatus.PendingAllocation]) return put(blotterToggleAllocationStatusPendingAllocation());\r\n if (statusTitle === tradeSettlementStatusTitle[TradeSettlementStatus.PendingProceeds]) return put(blotterToggleAllocationStatusPendingProceeds());\r\n if (statusTitle === tradeSettlementStatusTitle[TradeSettlementStatus.Settled]) return put(blotterToggleAllocationStatusSettled());\r\n return null;\r\n }));\r\n yield all(tradeSideOptions.map(side => {\r\n if (side === TradeSide.Buy) return put(blotterToggleFilterBuy());\r\n if (side === TradeSide.Sell) return put(blotterToggleFilterSell());\r\n return null;\r\n }));\r\n yield all(tradeTypeOptions.map(side => {\r\n if (side === tradeTypeTitle[TradeType.Client]) return put(blotterToggleFilterClient());\r\n if (side === tradeTypeTitle[TradeType.Desk]) return put(blotterToggleFilterDesc());\r\n return null;\r\n }));\r\n\r\n // trade date\r\n const { option, customRange } = getDateRangeOption(from, to);\r\n\r\n yield put(blotterDateFilterChange(option.key === bwicDateFilterOptions.todayAndUpcoming.key ? bwicDateFilterOptions.today : option));\r\n\r\n if (option.key === bwicDateFilterOptions.custom.key) {\r\n yield put(blotterCustomDateFilterChange(customRange));\r\n }\r\n\r\n // settl date\r\n const settlementDateOptions = getDateRangeOption(settlementFrom, settlementTo);\r\n\r\n yield put(blotterSettlementDateFilterChange(\r\n settlementDateOptions.option.key === bwicDateFilterOptions.todayAndUpcoming.key\r\n ? bwicDateFilterOptions.today\r\n : settlementDateOptions.option)\r\n );\r\n\r\n if (settlementDateOptions.option.key === bwicDateFilterOptions.custom.key) {\r\n yield put(blotterSettlementCustomDateFilterChange(settlementDateOptions.customRange));\r\n }\r\n}\r\n\r\nfunction* loadOwnTradesExistenceInfo(ownTrades) {\r\n if (ownTrades.requestState !== RequestState.request) {\r\n try {\r\n yield put(blotterHasTradesRequest());\r\n const response = yield call(tradingService.doesExist);\r\n yield put(blotterHasTradesSuccess(JSON.parse(response)));\r\n } catch (e) {\r\n yield put(blotterHasTradesFailure(e));\r\n }\r\n }\r\n}\r\n\r\nfunction* watchBlotterSearchRequest(action) {\r\n try {\r\n const { blotter, searchSecurities } = yield select(state => state);\r\n const { searchTermItems } = searchSecurities;\r\n const { filters, orderByColumn, orderByDirection, page, pageSize } = blotter;\r\n const { ownTrades } = blotter;\r\n const nextPage = action.payload?.page ?? page;\r\n\r\n const searchParams = {\r\n ...getSearchParams(searchTermItems, filters),\r\n orderByColumn,\r\n sortOrder: orderByDirection,\r\n page: nextPage,\r\n pageSize\r\n };\r\n\r\n const [response] = yield all([\r\n call(tradingService.search, searchParams),\r\n call(loadOwnTradesExistenceInfo, ownTrades)\r\n ]);\r\n\r\n if (!action.payload?.page) { // Left company details panel opened for next page request\r\n yield put(companyDetailsActions.hide());\r\n }\r\n\r\n yield put(blotterSearchSuccess(response));\r\n\r\n const pathname = history.location.pathname;\r\n if (pathname === routes.blotter) {\r\n searchParams.currency = filters.currency;\r\n searchParams.side = getSideFilters(filters);\r\n searchParams.type = getTypeFilter(filters).map(type => tradeTypeTitle[type]);\r\n\r\n yield put(redirectWithFilterArguments(searchParams));\r\n }\r\n } catch (e) {\r\n yield put(errorActions.criticalError(e))\r\n yield put(blotterSearchFailure(e.message));\r\n }\r\n}\r\n\r\nfunction redirectWithFilterArguments(searchParams) {\r\n return () => {\r\n const serializers = [\r\n identifiers(),\r\n tradesStatuses(),\r\n settlementStatuses(),\r\n multipleCurrencies(),\r\n tradeSide(),\r\n tradeType(),\r\n dateFrom(),\r\n dateTo(),\r\n dateFrom(undefined, 'settlFrom'),\r\n dateTo(undefined, 'settlTo')\r\n ];\r\n\r\n searchParams.statuses = searchParams.statuses\r\n ? searchParams.statuses.map(key => tradeStatuses.getByKey(key).title)\r\n : [];\r\n searchParams.settlementStatuses = searchParams.settlementStatuses\r\n ? searchParams.settlementStatuses.map(s => tradeSettlementStatusTitle[s])\r\n : [];\r\n\r\n const queryString = queryStringSerializer.serialize(searchParams, serializers);\r\n\r\n if (queryString) {\r\n history.replace(history.location.pathname + '?' + queryString);\r\n } else {\r\n history.replace(history.location.pathname);\r\n }\r\n };\r\n}\r\n\r\nfunction getTradeStatusFilter(filters) {\r\n const statuses = [];\r\n if (filters.confirmed) statuses.push(tradeStatuses.affirmed.key);\r\n if (filters.pending) statuses.push(tradeStatuses.pending.key);\r\n if (filters.rejected) statuses.push(tradeStatuses.rejected.key);\r\n\r\n return statuses;\r\n}\r\n\r\nfunction getSettlementStatusFilter(filters) {\r\n const statuses = [];\r\n\r\n if (filters.allocationStatus.unsettled) statuses.push(TradeSettlementStatus.Unsettled);\r\n if (filters.allocationStatus.pendingSettlement) statuses.push(TradeSettlementStatus.PendingSettlement);\r\n if (filters.allocationStatus.pendingAllocation) statuses.push(TradeSettlementStatus.PendingAllocation);\r\n if (filters.allocationStatus.pendingProceeds) statuses.push(TradeSettlementStatus.PendingProceeds);\r\n if (filters.allocationStatus.settled) statuses.push(TradeSettlementStatus.Settled);\r\n\r\n return statuses;\r\n}\r\n\r\nfunction getSideFilters(filters) {\r\n const side = [];\r\n if (filters.sellSide) side.push(TradeSide.Sell);\r\n if (filters.buySide) side.push(TradeSide.Buy);\r\n return side;\r\n}\r\n\r\nfunction getTypeFilter(filters) {\r\n const type = [];\r\n if (filters.client) type.push(TradeType.Client);\r\n if (filters.desc) type.push(TradeType.Desk);\r\n return type;\r\n}\r\n\r\nfunction getSearchParams(searchTermItems, filters) {\r\n const searchParams = {};\r\n\r\n const tradeStatuses = getTradeStatusFilter(filters);\r\n if (tradeStatuses.length) searchParams.statuses = tradeStatuses;\r\n\r\n const settlementStatuses = getSettlementStatusFilter(filters);\r\n if (settlementStatuses.length) searchParams.settlementStatuses = settlementStatuses;\r\n\r\n const side = getSideFilters(filters);\r\n if (side.length === 1) {\r\n searchParams.side = side[0];\r\n }\r\n\r\n const type = getTypeFilter(filters);\r\n if (type.length === 1) {\r\n searchParams.type = type[0];\r\n }\r\n\r\n if (searchTermItems.length) {\r\n searchParams.isinCusipsAndTickers = searchTermItems;\r\n }\r\n\r\n if (filters.currency.length === 1) {\r\n searchParams.currency = filters.currency[0];\r\n }\r\n\r\n const dateRange = getSearchDateRange(filters);\r\n const settlementDateRange = getSearchDateRange({\r\n selectedDateOption: filters.settlementSelectedDateOption,\r\n customDateRange: filters.settlementCustomDateRange\r\n });\r\n\r\n return {\r\n ...searchParams,\r\n ...dateRange,\r\n settlFrom: settlementDateRange.dateFrom,\r\n settlTo: settlementDateRange.dateTo\r\n };\r\n}\r\n\r\nfunction* watchBlotterPushDataTrade(action) {\r\n const requestStateSecurities = yield select(state => state.blotter.requestStateSecurities);\r\n\r\n if (isRequestSuccess(requestStateSecurities)) {\r\n const filters = yield select(state => state.blotter.filters);\r\n const statusFilters = getTradeStatusFilter(filters);\r\n const isPendingStatusActive = !statusFilters.length || statusFilters.some(s => s === tradeStatuses.pending.key);\r\n const status = action.trade && action.trade.status;\r\n\r\n if (status === tradeStatuses.pending.key && isPendingStatusActive) {\r\n yield put(blotterSearchRequest());\r\n }\r\n }\r\n}\r\n\r\nfunction* watchBlotterPushDataTradedAway() {\r\n const requestStateSecurities = yield select(state => state.blotter.requestStateSecurities);\r\n\r\n if (user.hasRoles(...roles.bd()) && isRequestSuccess(requestStateSecurities)) {\r\n yield put(blotterSearchRequest());\r\n }\r\n}\r\n\r\nfunction* watchExportRequest() {\r\n const searchTermItems = yield select(state => state.searchSecurities.searchTermItems);\r\n const { filters, orderByColumn, orderByDirection } = yield select(state => state.blotter);\r\n\r\n const searchParams = {\r\n ...getSearchParams(searchTermItems, filters),\r\n orderByColumn,\r\n sortOrder: orderByDirection\r\n };\r\n\r\n try {\r\n const file = yield call(tradingService.blotterExport, searchParams);\r\n saveAs(file.blob, file.name);\r\n yield put(blotterExportSuccess());\r\n } catch (e) {\r\n yield put(blotterExportFailure());\r\n }\r\n}\r\n\r\nfunction* watchBlotterSetVconRequest(action) {\r\n const { tradeId, isBuyTrade, value } = action.payload;\r\n try {\r\n yield put(blotterSetVconRequest(tradeId, isBuyTrade));\r\n yield call(tradingService.setVcon, action.payload);\r\n yield put(blotterSetVconSuccess(tradeId, isBuyTrade, value));\r\n } catch (e) {\r\n yield put(blotterSetVconFailure(tradeId, isBuyTrade));\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nfunction* watchBlotterSetBookedRequest(action) {\r\n const { tradeId, isBuyTrade, value } = action.payload;\r\n try {\r\n yield put(blotterSetBookedRequest(tradeId, isBuyTrade));\r\n yield call(tradingService.setBooked, action.payload);\r\n yield put(blotterSetBookedSuccess(tradeId, isBuyTrade, value));\r\n } catch (e) {\r\n yield put(blotterSetBookedFailure(tradeId, isBuyTrade));\r\n yield put(errorActions.unexpectedError(e));\r\n }\r\n}\r\n\r\nexport function* watchBlotter() {\r\n yield takeLatest(getType(blotterInit), watchBlotterInit);\r\n yield takeLatest(getType(blotterSearchRequest), watchBlotterSearchRequest);\r\n yield takeLatest(getType(blotterSearchRequestNextPage), watchBlotterSearchRequest);\r\n yield takeLatest(getType(blotterExportRequest), watchExportRequest);\r\n yield takeEvery(pushDataActions.PUSH_DATA_TRADE, watchBlotterPushDataTrade);\r\n yield takeEvery(pushDataActions.PUSH_DATA_TRADED_AWAY, watchBlotterPushDataTradedAway);\r\n yield takeEvery(blotterToggleVcon, watchBlotterSetVconRequest);\r\n yield takeEvery(blotterToggleBooked, watchBlotterSetBookedRequest);\r\n}\r\n","import { all, call, put, select, takeEvery } from \"redux-saga/effects\";\r\nimport { round } from \"lodash\";\r\nimport { getType } from \"typesafe-actions\";\r\nimport { brokerDealerBiddingActions, bidPlacementActions, pushBwicActions } from \"../actions\";\r\nimport { apiOperationActions } from \"../actions/api-operation.actions\";\r\nimport { bidAsDealerRequestService, biddingService } from \"../services\";\r\nimport { apiUtils, biddingUtils, jsonUtils, numericUtils } from \"../utils\";\r\nimport { Bwic } from \"../types/bwic/Bwic\";\r\nimport { AppState } from \"../types/state/AppState\";\r\nimport { BidsConfirmationState, EditBidState, SubmitBidConfurmationState } from \"../types/state/BrokerDealerBiddingState\";\r\nimport { SubmitBidModel } from '../types/bidding/SubmitBidModel';\r\nimport { SubmitBidAttributesModel } from '../types/bidding/SubmitBidAttributesModel';\r\nimport { ApiOperationType } from \"../types/api-operation/ApiOperationType\";\r\nimport { RequestState } from \"../constants/request-state\";\r\nimport { ApiOperationResult, TApiCallResponse, TOperationResult } from \"../types/api-operation/ApiOperationResult\";\r\nimport { BidConflict } from \"../types/bidding/BidConflict\";\r\nimport { ActionType } from \"../types/ActionType\";\r\nimport { constants } from \"../constants\";\r\nimport { BwicBase } from \"../types/bwic/BwicBase\";\r\nimport { BwicPosition } from \"../types/bwic/BwicPosition\";\r\nimport { bidConfirmationActions } from \"../actions/bid-confirmation.actions\";\r\nimport { SettlementAgentAgreement } from \"../types/bid-as-dealer/SettlementAgentAgreement\";\r\nimport { user } from \"../user\";\r\nimport { isActiveTrade } from \"../types/trades/TradeStatus\";\r\nimport { BwicProcessType } from \"../types/models/Process\";\r\n\r\nfunction* watchSubmitBids(action: ActionType<{ positionId?: number, bids: BidsConfirmationState }>) {\r\n const submitInProgress: boolean =\r\n yield select((s: AppState) => s.brokerDealerBidding.submitBidsConfirmation.submitInProgress);\r\n\r\n if (submitInProgress) return;\r\n\r\n yield put(bidConfirmationActions.submitInProgress(true, action.payload.positionId));\r\n\r\n const bwic: Bwic = yield select((s: AppState) => s.bidding.bwic);\r\n const { submitResult }: SubmitBidConfurmationState = yield select((s: AppState) => s.brokerDealerBidding.submitBidsConfirmation);\r\n const securities: BwicPosition[] = yield select((state: AppState) =>\r\n state.brokerDealerBidding.securities.filter(s =>\r\n !s.trade &&\r\n !s.isTradedAway &&\r\n state.brokerDealerBidding.submitBidsConfirmation.securities?.some(id => id === s.id))\r\n );\r\n\r\n if (!bwic || !securities || !securities.length) return;\r\n\r\n const targetSecurities = securities.filter(s => action.payload.positionId == null || s.id === action.payload.positionId);\r\n\r\n const bids = targetSecurities\r\n .filter(s => {\r\n const { bid, currentBid } = action.payload.bids[s.id];\r\n return (\r\n bid.pass ||\r\n currentBid == null ||\r\n (bid.value && Number(bid.value) !== Number(currentBid.value)) ||\r\n (bwic.isAllToAll && bid.commission && numericUtils.numberOrDefault(bid.commission) !== numericUtils.numberOrDefault(currentBid?.commission))\r\n );\r\n }).map(s => {\r\n const { bid, currentBid } = action.payload.bids[s.id];\r\n\r\n const model: SubmitBidModel = {\r\n positionId: s.id,\r\n rating: s.rating,\r\n bidLock: s.bidLock,\r\n size: +s.size,\r\n value: Boolean(bid.pass) ? undefined : Number(bid.value ?? currentBid?.value),\r\n axed: Boolean(bid.axed ?? currentBid?.axed),\r\n final: Boolean(bid.final ?? currentBid?.final),\r\n pass: Boolean(bid.pass),\r\n acceptBiddingOverThemself: Boolean(submitResult[s.id]?.isBidOverThemself),\r\n stagedBiddingStatus: bwic.process.stagedBiddingStatus\r\n };\r\n\r\n return addConflictBidLock(model) as SubmitBidModel;\r\n });\r\n\r\n const bidAttributes = targetSecurities\r\n .filter(s => {\r\n const { bid, currentBid } = action.payload.bids[s.id];\r\n return (\r\n bid &&\r\n currentBid &&\r\n !bids.some(b => b.positionId === s.id) && (\r\n Boolean(bid.axed) !== Boolean(currentBid.axed) ||\r\n Boolean(bid.final) !== Boolean(currentBid.final)\r\n )\r\n );\r\n }).map(s => {\r\n const { bid, currentBid } = action.payload.bids[s.id];\r\n const model: SubmitBidAttributesModel = {\r\n positionId: s.id,\r\n bidId: currentBid!.id,\r\n axed: Boolean(bid.axed ?? currentBid?.axed),\r\n final: Boolean(bid.final ?? currentBid?.final),\r\n bidLock: s.bidLock,\r\n stagedBiddingStatus: bwic.process.stagedBiddingStatus\r\n };\r\n\r\n return addConflictBidLock(model);\r\n });\r\n\r\n let submitBidsSuccess = false;\r\n let submitBidAttributesSuccess = false;\r\n\r\n [submitBidsSuccess, submitBidAttributesSuccess] = yield all([\r\n bids.length && (\r\n bwic.isAllToAll\r\n ? submitBidRequest(bids)\r\n : resolveApiCall(biddingService.submitBids, ApiOperationType.SubmitBid, bwic.referenceName, bids)\r\n ),\r\n bidAttributes.length && resolveApiCall(biddingService.updateBidAttributes, ApiOperationType.SubmitAxedFinal, bidAttributes)\r\n ]);\r\n\r\n if (bids.length) {\r\n yield put(bidConfirmationActions.submitResults(\r\n apiUtils.normalize(\r\n bids,\r\n b => b.positionId,\r\n () => ({ requestState: submitBidsSuccess ? RequestState.request : RequestState.failure })\r\n )\r\n ));\r\n }\r\n if (bidAttributes.length) {\r\n yield put(bidConfirmationActions.submitResults(\r\n apiUtils.normalize(\r\n bidAttributes,\r\n b => b.positionId,\r\n () => ({ requestState: submitBidAttributesSuccess ? RequestState.request : RequestState.failure })\r\n )\r\n ));\r\n }\r\n\r\n yield put(bidConfirmationActions.submitInProgress(false));\r\n\r\n function addConflictBidLock(model: SubmitBidModel | SubmitBidAttributesModel) {\r\n const conflict = submitResult[model.positionId]?.conflict;\r\n if (conflict) {\r\n model.bidLock = conflict.modifiedDate;\r\n }\r\n\r\n return model;\r\n }\r\n\r\n function* submitBidRequest(bids: SubmitBidModel[]) {\r\n const agreement: SettlementAgentAgreement = yield select((s: AppState) => s.entities.settlementAgentAgreements.items[0]);\r\n if (!agreement) return false;\r\n\r\n const state = action.payload.bids;//[bid.positionId]!.bid;\r\n\r\n const bidRequests = bids.map(b => ({\r\n positionId: b.positionId,\r\n brokerDealerId: user.current()!.companyId,\r\n commission:\r\n state[b.positionId]?.bid.commission ??\r\n state[b.positionId]?.currentBid?.commission ??\r\n agreement.commissions[b.rating],\r\n value: Number(b.value),\r\n axed: b.axed,\r\n final: b.final,\r\n size: b.size,\r\n salesCoverage: [],\r\n bidLock: b.bidLock,\r\n acceptBiddingOverThemself: b.acceptBiddingOverThemself,\r\n stagedBiddingStatus: bwic.process.stagedBiddingStatus\r\n }));\r\n\r\n const result: boolean = yield resolveApiCall(\r\n bidAsDealerRequestService.submit,\r\n ApiOperationType.SubmitBidRequest,\r\n bwic.referenceName,\r\n bidRequests\r\n );\r\n return result;\r\n }\r\n\r\n function* resolveApiCall(\r\n func: (...args: any[]) => Promise,\r\n apiOperationType: ApiOperationType,\r\n ...args: any[]) {\r\n try {\r\n const tokens: TApiCallResponse[] = yield call(func, ...args);\r\n\r\n yield put(apiOperationActions.waitResult(\r\n ...tokens.map(({ token }) => ({\r\n token,\r\n event: apiOperationType,\r\n state: RequestState.request,\r\n autoRemove: true,\r\n errorToastDisabled: true,\r\n createdDate: new Date()\r\n }))\r\n ));\r\n\r\n return true;\r\n }\r\n catch {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nfunction* watchSubmitSuccess(action: TOperationResult) {\r\n const result = action.payload.result;\r\n const shouldHandle: boolean = yield shouldHandleApiOperationResult(result);\r\n\r\n if (shouldHandle && result.positionId) {\r\n yield put(bidConfirmationActions.submitResults({\r\n [result.positionId]: { requestState: RequestState.success }\r\n }));\r\n }\r\n}\r\n\r\nfunction* watchSubmitError(action: TOperationResult) {\r\n const result = action.payload.result;\r\n const shouldHandle: boolean = yield shouldHandleApiOperationResult(result);\r\n\r\n if (shouldHandle && result.positionId) {\r\n yield put(bidConfirmationActions.submitResults({\r\n [result.positionId]: {\r\n requestState: RequestState.failure,\r\n isBidOverThemself: result.statusCode === 300,\r\n isLoggedOut: result.statusCode === 401,\r\n stageTransitionConflict: parseOpenBiddingStageTransitionConflict(result),\r\n conflict: parseConflict(result),\r\n validationError: parseValidationError(result)\r\n }\r\n }));\r\n }\r\n}\r\n\r\nfunction parseConflict(result: ApiOperationResult) {\r\n if (hasStatusResponse(409, result)) {\r\n const conflicts: BidConflict[] | null = jsonUtils.tryParse(result.response);\r\n return conflicts?.find(c => c.positionId === result.positionId);\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction parseOpenBiddingStageTransitionConflict(result: ApiOperationResult) {\r\n return hasStatusResponse(410, result)\r\n ? jsonUtils.tryParse(result.response)\r\n : undefined;\r\n}\r\n\r\nfunction parseValidationError(result: ApiOperationResult) {\r\n if (hasStatusResponse(400, result) && result.response) {\r\n return apiUtils.parseErrorMessage(result.response);\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction hasStatusResponse(status: number, result: ApiOperationResult) {\r\n return status === result.statusCode && result.positionId != null && result.response != null;\r\n}\r\n\r\nfunction* shouldHandleApiOperationResult(result: ApiOperationResult) {\r\n const isOperationApplicable = (\r\n result.event === ApiOperationType.SubmitBid ||\r\n result.event === ApiOperationType.SubmitBidRequest ||\r\n result.event === ApiOperationType.SubmitAxedFinal) &&\r\n result.positionId != null;\r\n\r\n if (isOperationApplicable) {\r\n const securities: number[] | undefined =\r\n yield select((s: AppState) => s.brokerDealerBidding.submitBidsConfirmation.securities);\r\n\r\n return securities && securities.length && securities.some(positionId => positionId === result.positionId);\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction* watchCanSubmitChange(action: { type: string, bwicReferenceName: string, positionId: number }) {\r\n const bwic: BwicBase | undefined = yield select((s: AppState) => s.bidding.bwic);\r\n const position: BwicPosition | undefined = yield select((s: AppState) => s.brokerDealerBidding.securities.find(s => s.id === action.positionId));\r\n\r\n if (bwic?.referenceName === action.bwicReferenceName && position) {\r\n yield put(bidPlacementActions.setBidCanSubmit(position.id));\r\n }\r\n}\r\n\r\nfunction* watchSetBidCanSubmit(action: ActionType<{ positionId: number }>) {\r\n const positionId = action.payload.positionId;\r\n\r\n const position: BwicPosition | undefined =\r\n yield select((s: AppState) => s.brokerDealerBidding.securities.find(s => s.id === positionId));\r\n const editState: EditBidState | undefined =\r\n yield select((s: AppState) => s.brokerDealerBidding.editBid[positionId]);\r\n const isAllToAll: boolean = yield select((s: AppState) => s.bidding.bwic?.isAllToAll);\r\n const agreement: SettlementAgentAgreement = yield select((s: AppState) => s.entities.settlementAgentAgreements.items[0]);\r\n\r\n if (!position) return;\r\n if (!editState || (editState.errors && Object.keys(editState.errors).length)) {\r\n yield put(bidPlacementActions.storeCanSubmitPositionFlag(positionId, false));\r\n return;\r\n }\r\n\r\n const isColorDistribution: boolean = yield select((s: AppState) => s.bidding.bwic?.isColorDistribution) ?? false;\r\n const currentBid = biddingUtils.getCurrentBid(position.bids);\r\n const currentBidValue = Number(currentBid?.value ?? 0);\r\n\r\n const bidExists = numericUtils.numberOrDefault(editState.value, currentBid?.value ?? 0) > 0 || editState.pass;\r\n const bidChanged =\r\n editState.value &&\r\n numericUtils.numberOrDefault(editState.value) > 0 &&\r\n +editState.value !== currentBidValue &&\r\n round((+editState.value - currentBidValue), 4) >= constants.bidMinStep;\r\n const axedChanged = (editState.axed != null && Boolean(currentBid?.axed) !== Boolean(editState.axed));\r\n const finalChanged = (editState.final != null && Boolean(currentBid?.final) !== Boolean(editState.final));\r\n const passChanged = (editState.pass != null && Boolean(currentBid?.pass) !== Boolean(editState.pass));\r\n\r\n let isCommissionValid = true;\r\n if (isAllToAll) {\r\n if (editState.commission && !numericUtils.isNumber(editState.commission)) {\r\n isCommissionValid = false;\r\n } else {\r\n const currentCommission = currentBid?.commission ?? agreement?.commissions[position.rating];\r\n const commission = editState.commission ?? currentCommission;\r\n const minValue = currentCommission ?? constants.commissionRange.min;\r\n const maxValue = constants.commissionRange.max;\r\n\r\n isCommissionValid = Number(commission) >= minValue && Number(commission) <= maxValue;\r\n }\r\n }\r\n\r\n const canSubmit = bidExists &&\r\n (bidChanged || axedChanged || finalChanged || passChanged) &&\r\n isCommissionValid &&\r\n !position.isTradedAway &&\r\n !isActiveTrade(position.trade) &&\r\n !isColorDistribution;\r\n\r\n yield put(bidPlacementActions.storeCanSubmitPositionFlag(positionId, canSubmit));\r\n}\r\n\r\nfunction* watchTrated(action: ReturnType) {\r\n yield put(bidPlacementActions.revert(action.positionId))\r\n}\r\n\r\nfunction* watchStage2Started(action: ActionType) {\r\n const bwic: BwicBase | undefined = yield select((s: AppState) => s.bidding.bwic);\r\n\r\n if (bwic?.process.type === BwicProcessType.BestFootForward) {\r\n yield put(bidPlacementActions.revertAll());\r\n }\r\n}\r\n\r\nexport function* watchBrokerDealerBidding() {\r\n yield takeEvery(getType(brokerDealerBiddingActions.submitBids), watchSubmitBids);\r\n yield takeEvery(getType(apiOperationActions.success), watchSubmitSuccess);\r\n yield takeEvery(getType(apiOperationActions.error), watchSubmitError);\r\n yield takeEvery(getType(pushBwicActions.newBid), watchCanSubmitChange);\r\n yield takeEvery(getType(pushBwicActions.axedFinalChange), watchCanSubmitChange);\r\n yield takeEvery(getType(bidPlacementActions.setBidCanSubmit), watchSetBidCanSubmit);\r\n yield takeEvery(getType(pushBwicActions.tradeAction), watchTrated)\r\n yield takeEvery(getType(pushBwicActions.stagedBiddingStartStage2), watchStage2Started);\r\n}\r\n","import { call, put, takeEvery } from \"redux-saga/effects\";\r\nimport { brokerDealerContactListActions } from '../actions/broker-dealer-contact-list.actions';\r\nimport { getType } from 'typesafe-actions';\r\nimport { contactsService } from '../services';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { errorActions } from '../actions';\r\nimport { accountActions } from '../constants';\r\nimport { Contact } from '../types/company/Contact';\r\n\r\nfunction* watchBrokerDealerFetchContacts() {\r\n try {\r\n const contacts: Contact[] = yield call(contactsService.getContacts);\r\n yield put(brokerDealerContactListActions.requestResult(RequestState.success, contacts))\r\n } catch (e) {\r\n yield put(brokerDealerContactListActions.requestResult(RequestState.failure));\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(brokerDealerContactListActions.resetEntities())\r\n}\r\n\r\nexport function* watchBrokerDealerContactList() {\r\n yield takeEvery(getType(brokerDealerContactListActions.request), watchBrokerDealerFetchContacts);\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n}\r\n","import { getType } from \"typesafe-actions\";\r\nimport { takeEvery, call, put } from \"redux-saga/effects\";\r\nimport { BrokerDealerCompanySlim } from \"../types/company/BrokerDealerCompanySlim\";\r\nimport { brokerDealerListActions } from \"../actions/broker-dealer-list.actions\";\r\nimport { accountActions } from \"../constants\";\r\nimport { companiesService } from \"../services\";\r\nimport { errorActions } from \"../actions\";\r\nimport { RequestState } from \"../constants/request-state\";\r\n\r\nfunction* watchRequestBrokerDealers() {\r\n try {\r\n const brokerDealers: BrokerDealerCompanySlim[] = yield call(companiesService.getBrokerDealers);\r\n yield put(brokerDealerListActions.requestResult(RequestState.success, brokerDealers));\r\n } catch (e) {\r\n yield put(brokerDealerListActions.requestResult(RequestState.failure));\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(brokerDealerListActions.resetEntities());\r\n}\r\n\r\nexport function* watchBrokerDealerList() {\r\n yield takeEvery(getType(brokerDealerListActions.request), watchRequestBrokerDealers);\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n}\r\n","import { call, put, takeEvery } from \"redux-saga/effects\";\r\nimport { getType } from 'typesafe-actions';\r\nimport { usersService } from '../services';\r\nimport { RequestState } from '../constants/request-state';\r\nimport { errorActions } from '../actions';\r\nimport { accountActions } from '../constants';\r\nimport { brokerDealerUserListActions } from '../actions/broker-dealer-user-list.actions';\r\nimport { UserSlim } from '../types/account/UserSlim';\r\n\r\nfunction* watchBrokerDealerFetchContacts() {\r\n try {\r\n const contacts: UserSlim[] = yield call(usersService.getActiveBrokerDealers);\r\n yield put(brokerDealerUserListActions.requestResult(RequestState.success, contacts))\r\n } catch (e) {\r\n yield put(brokerDealerUserListActions.requestResult(RequestState.failure));\r\n yield put(errorActions.criticalError(e));\r\n }\r\n}\r\n\r\nfunction* watchLogout() {\r\n yield put(brokerDealerUserListActions.resetEntities())\r\n}\r\n\r\nexport function* watchBrokerDealerUserList() {\r\n yield takeEvery(getType(brokerDealerUserListActions.request), watchBrokerDealerFetchContacts);\r\n yield takeEvery(accountActions.LOGOUT, watchLogout);\r\n}\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { ActionType, getType } from 'typesafe-actions';\r\nimport { saveAs } from 'file-saver';\r\nimport { bwicService, dashboardService } from '../services';\r\nimport { bwicLogActions } from '../actions/bwic-log.actions';\r\nimport { SecurityBwicStatisticsSummary } from '../types/security/SecurityBwicStatisticsSummary';\r\n\r\nfunction* watchBwicLogInit(action: ActionType) {\r\n try {\r\n const { security } = action.payload;\r\n const statistics: SecurityBwicStatisticsSummary = yield call(bwicService.getSecurityBwicStatistics, security.securityId);\r\n\r\n yield put(bwicLogActions.bwicLogInitSuccess(statistics));\r\n } catch (e) {\r\n yield put(bwicLogActions.bwicLogInitFailure(e));\r\n }\r\n}\r\n\r\nfunction* watchBwicLogExport(action: ActionType) {\r\n try {\r\n const { securityId } = action.payload;\r\n const { blob, name } = yield call(dashboardService.exportBwicStatistic, securityId);\r\n saveAs(blob, name);\r\n yield put(bwicLogActions.bwicLogExportDataSuccess())\r\n } catch (e) {\r\n yield put(bwicLogActions.bwicLogExportDataFailure(e))\r\n }\r\n}\r\n\r\nexport function* watchBwicLog() {\r\n yield takeLatest(getType(bwicLogActions.bwicLogInitRequest), watchBwicLogInit);\r\n yield takeLatest(getType(bwicLogActions.bwicLogExportDataRequest), watchBwicLogExport);\r\n}\r\n"],"names":["watchAddSecurityToPortfolio","_marked2","_regeneratorRuntime","mark","watchAddToPortfolio","action","portfolio","_action$payload$posit","securityId","isinCusip","ticker","rating","securityModel","newPortfolioName","error","wrap","_context","prev","next","select","s","addToPortfolio","selectedPortfolio","sent","payload","position","size","put","addToPortfolioActions","setSubmittingProgress","call","portfolioService","createNewPortfolio","saveSecurityPosition","id","reset","portfolioListActions","t0","jsonUtils","tryParse","message","storeError","errorActions","unexpectedError","finish","stop","_marked","_context2","takeLatest","getType","addSecurityToPortfolio","watchLoadCountries","watchLoadStates","_marked3","watchLoadCities","_marked4","watchAddress","countries","addressService","getCountries","addressActions","loadCountriesResponse","countryId","states","getStates","loadStatesResponse","_action$payload","stateId","cities","_context3","getCities","loadCitiesResponse","_context4","loadCountries","loadStates","loadCities","watchLoadBrokerDealerInventory","watchLogout","watchAdminInventoryEdit","requestState","_yield$all","_yield$all2","response","_company","state","entities","adminInventoryEdit","shouldRequest","adminInventoryEditActions","requestInventory","all","inventoryService","getAdminEditInventory","companyId","companiesService","getCompany","undefined","_slicedToArray","company","requestInventorySuccess","inventorySecurities","lockModifiedDate","status","requestInventoryError","criticalError","takeEvery","loadInventory","accountActions","LOGOUT","watchBwicStatusChange","watchAllBwics","originalBwic","freshBwic","bidsToUpdate","_s$allBWICS$bwics","allBWICS","bwics","find","b","referenceName","bwicReferenceName","isMy","isParticipant","bwicService","getByReferenceName","securities","filter","_s$bids","bids","length","map","positionId","allBWICSActions","addPositionBids","pushBwicActions","bwicStatusChanged","setFilterFromSearchString","checkIfArrangerPipelineExist","watchArrangerPipelineRequest","_marked5","watchExport","_marked6","watchDealsRequest","_marked7","watchApplyFilterAndSearch","_marked8","watchSummaryRequest","_marked9","watchInitFilter","_marked10","initFilter","_marked11","watchResetFilter","_marked12","watchEdit","_marked13","watchDeleteArrangerPipeline","_marked14","watchSubmit","_marked15","watchChangeDealReferenceName","_marked16","watchUpdateFields","_marked17","watchChangeDealLegalName","_marked18","watchArrangerPipelineSaga","filterActions","createFilterActions","PipelineType","ArrangerPipeline","convertGridDataItemToArrangerPipeline","gridDataItem","dealReferenceName","collateralManagerReferenceName","arrangerReferenceName","dealLegalName","collateralType","type","nonCallPeriodEnd","reinvestmentPeriodEnd","expectedTiming","dealStage","euCompliance","anchor","equity","disclosureFile","disclosureFileReferenceName","getFilterCriteria","collateralManagerReferenceNames","selectedSelectGroupOptions","managers","arrangerReferenceNames","arrangers","collateralTypes","selectedBooleanOption","selectedRangeOptions","riEnd","ncEnd","equities","selectedRadioOption","filterExistingOptions","optionsNames","optionFilter","o","f","value","queryString","dealLegalNames","collateralManagersSerializer","arrangersSerializer","serializers","selectOptionFilter","filterName","filterSelectChange","history","location","search","abrupt","collateralManagers","dealsLegalNames","legalNames","queryStringSerializer","deserialize","resetFiltersAndUnselectSavedFilter","resetFiltersVisibility","manager","arranger","amrArrangerPipelineActions","selectDealsFromSearch","replace","pathname","onePipeline","anyPipelineExists","amrArrangerPipelineService","getArrangerPipelines","count","setAnyPipelineExists","_yield$select","_yield$select$deals","sortBy","sortDirection","selectedDealsLegalNames","offset","lastAppliedFilter","filterCriteria","sortCriteria","pipelines","nonVisiblePipelinesCount","arrangerPipelineDeals","issuanceMonitor","amrArrangerPipeline","deals","_objectSpread","constants","defaultTransactionsSearchCriteria","mergeSortCriteria","defaultArrangerPipelineOrderCriteria","user","hasFeatures","SubscriptionFeature","IssuanceMonitorFullAccess","getArrangerPipelinesCount","getDealsLegalNames","dealsSearchResponse","RequestState","success","arrangerPipelinesResponse","failure","setEditLoadingStatus","_yield$select2","_yield$select2$deals","file","_context5","exportLoad","exportArrangerPipelines","saveAs","blob","concat","moment","format","issuanceMonitorExportDateFormat","_context6","dealsService","getDealsList","searchTerm","changeDealReferenceName","dealsResponse","_context7","resetPipelines","applyFilter","arrangerPipelinesRequest","arrangerPipelineStatisticRequest","resetFilter","_yield$select3","summary","_context8","getArrangerPipelinesStatistic","arrangerPipelineStatisticResponse","pipelineType","filterSelector","imFilterState","_arrangers","_context9","issuanceMonitorFilterSelector","initialFilter","storeFilterData","request","filterType","amrCompaniesService","getManagersList","HavingDealType","CmHavingAllPublishedDeals","getArrangersList","data","sort","a","legalName","localeCompare","m","selected","disabled","visible","text","code","defaultFilter","_context10","init","IssuanceMonitorFiltersEmailAlerts","imUserConfig","filtersConfig","ApFilter","default","selectFilterFromConfig","_context11","userCompany","isBD","_pipelines$map","dataItems","_arrangers2","managerColumn","arrangerGridColumn","arrangerColumn","dealNameColumn","columns","gridInit","gridValidate","_context13","amrPipelineCommon","hasRoles","apply","_toConsumableArray","roles","bd","gridRowsLimit","category","Category","i","p","_p$arranger","collateralManager","submitArrangerPipelineStatus","gridActions","gridColumns","required","selectSourceItemsCallback","key","title","compareStrings","Administrator","DataEntry","name","dealName","lookup","compareCallback","lookupItem","toLowerCase","startsWith","fetchCallback","_fetchCallback","_asyncToGenerator","_callee","abortSignal","_context12","store","dispatch","getDealsNamesList","d","_x","_x2","arguments","onLookupItemSelected","deal","changeDealLegalName","updateFields","arrangerPipeline","c","validate","t1","_context14","deleteArrangerPipeline","_dataItems$reduce","arrangerPipelineState","gridDataItems","arrangerPipelines","deletedPipelines","_context15","arrangerPipelineDealsSelector","grid","g","draft","isValid","reduce","acc","pipeline","_pipeline$arranger","some","removed","pipelineEditItem","added","createOrUpdateArrangerPipeline","_yield$select4","editingPipeline","insertDataItems","_context16","index","replaceDataItem","_yield$select5","_context17","editingGrid","applyEdit","_context18","editing","applyOrCancelEdit","_context19","applyFilterAndSearch","edit","exportPipelines","dealsRequest","submitArrangerPipeline","watchLoadUserCompany","registerUser","watchRedirectInvitedClientToTransactionDetails","watchAmrPipelineCommon","getCurrentUserCompany","amrPipelineCommonActions","loadUserCompanyResponse","amrPipelineService","loadUserCompanyError","transactions","transaction","getTransactionsList","items","push","routes","transactionDetailUrl","issuanceMonitorWithNoData","loadUserCompanyRequest","redirectInvitedClientToTransactionDetails","watchInit","watchClientsActivityRequest","watchTransactionHistoryActivityRequest","watchTransactionHistoryActivityFiltrByBar","watchAmrTransactionAnalytics","UserAccessTypes","TransactionAccessType","Overview","Structure","TargetPortfolio","Documents","Iois","ComparableDeals","groupByAccessCountAndVersion","sessions","versions","session","_versions$find","grouped","toPairs","tabsViews","documents","groupDocsWithAccessType","versionDate","v","version","dateTime","_ref","_ref2","accessType","entries","accessDateTime","startOf","toDate","numberOfAccess","compareDates","groupByViewsAndVersion","_versions$find2","views","mapValues","x","documentsList","transactionReferenceName","endDate","startDate","transactionViewHistory","recentTransactionViewHistory","documentDownloadsDto","daysInMarket","documentDownloads","totalDocumentsDownloads","recentTransactionViews","totalTransactionViews","clientsActivity","users","Date","getTime","setDate","getDate","getTransactionViewHistory","getDocumentsDownloads","getDaysInTheMarket","getTransactionVersions","withDate","sumBy","dt","numberOfDocuments","transformToTreeSelect","amrTransactionAnalyticsActions","analyticsInitResponse","_action$payload2","transactionSessions","amrPipelineDetailed","analytics","endOf","includes","clientsActivityResponse","_action$payload3","alignedStartDate","alignedEndDate","transactionHistoryActivity","transactionViewHistoryResponse","_action$payload4","date","transactionViewHistoryRequest","analyticsInit","clientsActivityRequest","transactionViewHistoryFilterByBar","watchFetchTransactionHistory","watchLoadTransactionDetails","watchTransactionFieldsUpdated","watchTransactionHistory","byEventDateTime","eventDateTime","unix","originatingTransactionDiffer","Differ","syndicateContacts","traverse","Traverse","Skip","classes","iteratee","issuer","Shallow","collateralQualityTests","originatingTransactionClassFieldsDiffer","formatRating","transactionClass","isNil","expectedRatingMoodys","expectedRatingSnP","expectedRatingFitch","expectedRatingKbra","expectedRatingDbrs","amrFormatUtils","countZeroAsNull","fn","arg","calculatedValue","classWithCalculatedFields","coupon","formatInventoryCoupon","floaterIndex","margin","ratingString","priceNumber","price","parseFloat","withCalculatedFields","calculatedTargetPar","dealStructureUtils","calcTargetPar","calculatedBidPrice","calcBidPrice","calculatedAskPrice","calcAskPrice","transactionsHistory","allHistoryClassesList","getTransactionHistory","item","self","previousTransaction","currentTransaction","diff","versionTitle","versionTitleFull","isDetailsLoaded","reverse","uniqBy","flatten","synonyms","amrTransactionHistoryActions","transactionHistoryResponse","companyReferenceName","amrPipelineDetailedActions","transactionDetailsRequesting","storeTransactionDetais","getSyndicateContactsByArranger","classReferenceName","fieldsLastUpdated","classesOnly","difference","guidance","subscription","_difference$reference","_difference$guidance","derivedValue","DifferenceType","Unchanged","_difference$reference2","_difference$subscript","transactionFieldsUpdatedResponse","transactionHistoryRequest","loadTransactionDetais","transactionFieldsUpdatedRequest","watchApiOperationResult","watchEarlyOperationResult","watchStuckOperations","resolveStuckOprtations","watchApiOperation","result","pending","apiOperation","requests","r","token","event","logger","trace","statusCode","apiUtils","isRequestSuccess","apiOperationActions","e","errorToastDisabled","autoRemove","remove","responses","req","earlyResult","timeout","stuck","pushNotificationService","isConnected","isAuthenticated","isRequesting","createdDate","delay","operations","pushDataCache","operationTokenByResult","apiOperationTokensWithoutResponse","stuckApiResponses","send","Map","forEach","set","values","jsonData","has","apiOperationResult","_ref3","console","log","waitResult","trackStuckOperations","watchRequest","watchAssetManager","accounts","getActiveAssetManagers","assetManagerActions","requestResult","getSyndicateContacts","watchGetBanks","watchGetBankDetails","watchManagersTransactionCountFilter","watchExportTransactionCountRequest","watchUpdateBank","watchLogUserActivity","watchAnalyticsInit","watchProfileViewHistoryRequest","watchProfileViewHistoryFiltrByBar","watchBanks","BankAccessType","ContactsEventsTab","PrimaryTab","SecondaryTab","groupSessionsByDate","MandatoryContactFields","notEmptyEvent","stringUtils","isHTMLEmpty","description","isContactEmpty","contact","withNeededValues","pick","compact","isHeadOfTradingEmpty","headOfTrading","trim","contactOrDefault","primaryDesk","order","firstName","lastName","email","officePhoneNumber","mobilePhoneNumber","distributionListEmail","createEmptyContact","splitIntoHeadAndDistributionList","brokerDealer","headContact","_objectWithoutProperties","_excluded","distributionList","ContactType","DistributionList","convertToBankSyndicateContacts","contacts","headOfDeskAndDistributionList","headOfTradingAndDistributionList","primary","secondary","_splitIntoHeadAndDist","headOfDesk","primaryDistributionList","_splitIntoHeadAndDist2","secondaryDistributionList","primaryContacts","numberOfHiddenItems","secondaryContacts","aggregateManagerTransactions","managerTransactions","defaultFilterValues","filtered","managerTransaction","year","currency","allListItem","currencyCode","groupedManager","arrayUtils","groupBy","Array","from","group","firstEntry","newIssueCount","transactionType","TransactionType","newIssue","refinancingCount","refi","resetCount","companyLegalName","totalCount","canViewContactsAndEvents","_brokerDealer","_brokerDealer2","bwicContacts","mergedContacts","banksService","getBrokerDealer","office","mobile","distributionListExists","userCompanyReferenceName","_yield$all3","_yield$all4","amrData","bwicData","banks","getBanksList","getBwicBanksList","combineBanks","banksActions","getBanksResult","bank","companyEvents","isNotBrokerDealer","ownCompany","hasEventsFeature","_yield$all5","_yield$all6","getAllRolesExclude","isBrokerDealersOwnCompany","DealerProfileBankEvents","getBankDetails","getEvents","managersTransactions","getBankDetailsResult","managerTransactionsAggregated","_state$banks$selected","_state$banks$selected2","selectedBank","details","managersTransactionCountFilterResult","params","fileName","dateFormat","exportBankManagersTrans","exportTransactionCountResponse","formData","events","bankToSave","linkedIn","formatUtils","formatUrlWithProtocol","updateBankResult","updateBank","manageBanksUrl","logUserActivity","_yield$call","profileViews","getProfileViewHistory","getAnalytics","_yield$call2","bankClientsActivity","_action$payload5","_yield$call3","profileViewHistory","profileViewHistoryResponse","_action$payload6","profileViewHistoryRequest","getBanks","managersTransactionCountFilter","profileViewHistoryFilterByBar","exportTransactionCountRequest","watchRedirectWithFilterArguments","watchRequestInventoryExist","watchLoadBdInventory","watchExportInventory","watchRequestSendEmail","watchAddBloombergEmailRequest","watchPushInventory","watchBdInventory","BwicFilterType","BDInventory","_history$location$sea","inventories","allTrusteeNames","trusteeFilterItems","canUseAdvancedFilters","defaultConfigFilter","_mixedDateRange","_mixedDateRange2","ncEndSerializers","getNcEndDeserializeResult","_mixedDateRange3","_mixedDateRange4","riEndSerializers","getRiEndDeserializeResult","to","statusOptions","ratingsOptions","identifierList","currencyOptions","collateralTypeOptions","collateralManagersReferenceNames","isEsg","isEuCompilance","isStaticDeals","maturityFrom","maturityTo","vintageFrom","vintageTo","closingFrom","closingTo","trusteesValues","amrValue","isOutofRI","isOutOfNC","dateOption","ncEndDeserializeResult","riEndDeserializeResult","datesCommand","ratingsCommand","identifiersCommand","statusesCommand","currenciesCommand","collateralTypesCommand","esgCommand","euCompilanceCommand","staticDealsCommand","outOfNCCommand","outofRICommand","nonCallEndCommand","reinvestmentEndCommand","collateralManagersReferenceNamesCommand","trusteesValuesCommand","maturityCommand","vintageCommand","closingCommand","amrValueCommand","_context20","bdInventoryActions","requestInventoryExistFlag","loadBdInventory","take","filters","bdInventory","cloneDeep","inventory","_s$trustee","_s$trustee2","trustee","distinct","String","trustees","bdInventoryFilters","_s$entities$pageConfi","_s$entities$pageConfi2","pageConfig","configs","PageConfigType","Inventory","InventoryAvancedFilters","mixedDateRange","dateFrom","parsedDate","dateTo","inventoryStatuses","parsedStatuses","getInventoryPositionStatusByTitle","identifiers","list","ratings","parsedRatings","Rating","multipleCurrencies","parsedCurrency","Currency","parsedCollateralTypes","esg","parsedEuCompilance","staticDeals","parsedStaticDeals","outOfNC","outOfRI","amr","getDateOptionByRange","dateRangeFilterOptions","CurrentInventory","canExecute","execute","All","filterDateSelectOption","filterDateSelectCustomRange","ratingOption","shouldExecute","searchSecuritiesActions","addSearchItem","statusOption","statuses","Number","toString","collateralTypeOption","filterVisibilityChange","filterRadioChange","dates","years","filterDateQueryStringDeserialized","cm","filterOption","makeFilterVisible","ThisWeek","DeserializeCommandHandler","addCommand","processGenerator","advancedFilterBlocked","searchTermItems","criteria","_context21","searchSecurities","nonCallEndFrom","nonCallEndTo","reinvestmentEndFrom","reinvestmentEndTo","currentInventory","noop","serialize","isinCusipsAndTickers","_nonCallEndYears$from","_nonCallEndYears$to","_reinvestmentEndYears","_reinvestmentEndYears2","_filter$trustees","_filter$amr","nonCallEndYears","getYearsRange","nonCallEnd","reinvestmentEndYears","reinvestmentEnd","nonCallEndDateRange","selectedDateOptions","reinvestmentEndDateRange","defaultDateRange","maturityRange","maturity","selectedOption","convertToApiCriteria","options","vintageRange","vintage","closingRange","closing","staticDeal","exist","_context22","getInventoryExistFlag","inventoryExistFlag","_context23","getBdInventory","_maturityDateRange$da","_maturityDateRange$da2","_vintageDateRange$dat","_vintageDateRange$dat2","_closingDateRange$dat","_closingDateRange$dat2","sortField","dateRange","maturityDateRange","vintageDateRange","closingDateRange","selectedCurrencies","normalizedDateOptions","normalizedMaturityDateOptions","normalizedVintageDateOptions","normalizedClosingDateOptions","requestParams","_context24","currentItems","isCurrentInventory","nonCallEndFromYear","nonCallEndToYear","reinvestmentEndFromYear","reinvestmentEndToYear","nonCallEndFromDate","nonCallEndToDate","reinvestmentEndFromDate","reinvestmentEndToDate","dealers","orderByColumn","InventorySecurityOrderByColumn","sortOrder","InventorySecuritySortOrder","exportInventoryList","exportInventoryResponse","_context25","sendEmail","_context26","accountService","saveBloombergEmail","setBloombergEmail","toggleVisibleAddBloombergEmailForm","addBloombergEmailResponse","_context27","resetEntities","_context28","isRequestNone","requestStateInventoryExist","_context29","exportInventoryRequest","requestSendEmail","addBloombergEmailRequest","clearFilter","pushInventory","watchBidOnBehalfCompaniesRequest","watchOperationError","watchBidOnBehalfBulkSave","watchNewBid","watchMoveNextBid","watchBidOnBehalf","bwic","companies","bidOnBehalf","bidding","bidOnBehalfActions","setCompainesRequesting","bidOnBehalfService","getCompanies","storeCompanies","conflicts","bidSumitResult","editingBid","bid","ApiOperationType","submitBidsOnBehalf","storeConflicts","conflictsPopupVisible","editState","getEditKey","resetBidEdit","pass","formatBid","notificationActions","notificationAddErrorMessage","waitingResult","positions","bidsByCompany","bulkList","tokens","isSubmitting","isConflictsPpopupVisible","resolveConflicts","sellerBidding","getBidsToSubmit","_conflicts$find","_position$bidLocks","_position$bidLocks$fi","_bidsByCompany$get","conflictBidLock","modifiedDate","companyBidLock","bidLocks","bidLock","max","companyBids","latestBid","get","axed","final","stagedBiddingStatus","process","brokerDealerCompanyId","submitProgress","submitBidsBulk","Object","keys","_parseKey","parseKey","_position$bids$filter","_position$bids","bidOnBehalfUtils","isBidChanged","_parseKey2","_select","_securities$find","participants","processType","offPlatformCompanies","hiddenState","favorites","agreements","isTraded","isOnPlatform","currentPositionIndex","nextPositionId","nextCompanyId","_companies$find","_companies$find2","currentCompanyIndex","_securities$find2","_state$bidding$bwic$p","BwicProcessType","Standard","dealerListPanel","companyHiddenState","favoriteBrokerDealers","settlementAgentAgreements","getSellerBiddingCompanies","trade","TradeStatus","affirmed","CompanyStatus","active","findIndex","setNextBidIdentifiers","requestCompanies","submit","pushDataActions","PUSH_DATA_NEW_BID","moveNextBid","watchMessageChange","watchBwicChange","getSubmitFinalRecipients","getStagedProcessRecipients","watchRecpientSelectedChange","updateSelectAllRecipientsState","watchSend","watchBlastMessage","updateRecipients","keepSelection","panelVisible","bwicParticipants","isSelectAllRecipients","messageType","recipientLevel","recipients","currentRecipients","blastMessage","_s$bidding$bwic","_s$bidding$bwic2","getSecuritiesWithLatestBids","getRecipients","hasOwnProperty","blastMessageActions","storeRecipients","BlastMessageRecipientLevelState","Top3","_callee2","biddingSecurities","rejected","BlastMessageTypes","submitFinal","stage1AboutToEndTimeout","getStage1AboutToEndTimeoutRecipients","getBidOrPassRecipients","isAllToAll","withBids","_iterator","_step","positionRecipients","_s$bidding$bwic3","_createForOfIteratorHelper","n","done","TopX","JumpBall","getStandardProcessRecipients","getDefaultSelectedState","isBuyside","_step2","_s$bids2","_iterator2","biddingUtils","getBidCompanyIdentifier","err","topX","Top5","groupBidsByLevel","slice","flat","buyerPseudoOrderNumber","allBids","stage2Participants","_state$sellerBidding$","calculateStage2Participants","identifier","OpenBiddingStatus","stage1Ended","parseResult","parseBidCompanyIdentifier","_s$bids3","normalize","companyIdentifier","every","toggleSelectAllParticipantsFlag","blastMessageRecipients","recipientsByPosition","unsold","_iterator3","_step3","_recipients","getFeedbackType","model","feedbackTypes","_s$bidding$bwic4","_s$bidding$bwic5","isActiveTrade","companyMessages","positionMessages","_s$bids4","_s$bids4$find","bidRequestType","BidRequestType","BidOrPass","feedbackType","feedbackBidId","hide","sending","blastMessageService","BlastMessage","show","messageTypeChange","recipientLevelChange","recipientSelectedChange","newBid","tradeAction","watchBlotterInit","applyQueryStringFilter","loadOwnTradesExistenceInfo","watchBlotterSearchRequest","watchBlotterPushDataTrade","watchBlotterPushDataTradedAway","watchExportRequest","watchBlotterSetVconRequest","watchBlotterSetBookedRequest","watchBlotter","qs","blotterSetFilterDefaults","identifierOptions","sellementStatusOptions","tradeSideOptions","tradeTypeOptions","settlementFrom","settlementTo","_getDateRangeOption","option","customRange","settlementDateOptions","blotterFiltersReset","parsedIdentifiers","tradesStatuses","settlementStatuses","tradeSide","parsed","tradeType","blotterSetCurrency","statusTitle","tradeStatuses","blotterTogglePending","blotterToggleConfirmed","blotterToggleRejected","tradeSettlementStatusTitle","TradeSettlementStatus","Unsettled","blotterToggleAllocationStatusUnsettled","PendingSettlement","blotterToggleAllocationStatusPendingSettlement","PendingAllocation","blotterToggleAllocationStatusPendingAllocation","PendingProceeds","blotterToggleAllocationStatusPendingProceeds","Settled","blotterToggleAllocationStatusSettled","side","TradeSide","Buy","blotterToggleFilterBuy","Sell","blotterToggleFilterSell","tradeTypeTitle","TradeType","Client","blotterToggleFilterClient","Desk","blotterToggleFilterDesc","getDateRangeOption","blotterDateFilterChange","bwicDateFilterOptions","todayAndUpcoming","today","custom","blotterCustomDateFilterChange","blotterSettlementDateFilterChange","blotterSettlementCustomDateFilterChange","ownTrades","blotterHasTradesRequest","tradingService","doesExist","blotterHasTradesSuccess","JSON","parse","blotterHasTradesFailure","_action$payload$page","blotter","orderByDirection","page","pageSize","nextPage","searchParams","getSearchParams","companyDetailsActions","blotterSearchSuccess","getSideFilters","getTypeFilter","redirectWithFilterArguments","blotterSearchFailure","getByKey","getTradeStatusFilter","confirmed","sellSide","buySide","client","desc","allocationStatus","unsettled","pendingSettlement","pendingAllocation","pendingProceeds","settled","getSettlementStatusFilter","getSearchDateRange","settlementDateRange","selectedDateOption","settlementSelectedDateOption","customDateRange","settlementCustomDateRange","settlFrom","settlTo","requestStateSecurities","statusFilters","isPendingStatusActive","blotterSearchRequest","blotterExport","blotterExportSuccess","blotterExportFailure","tradeId","isBuyTrade","blotterSetVconRequest","setVcon","blotterSetVconSuccess","blotterSetVconFailure","blotterSetBookedRequest","setBooked","blotterSetBookedSuccess","blotterSetBookedFailure","blotterInit","blotterSearchRequestNextPage","blotterExportRequest","PUSH_DATA_TRADE","PUSH_DATA_TRADED_AWAY","blotterToggleVcon","blotterToggleBooked","watchSubmitBids","watchSubmitSuccess","watchSubmitError","shouldHandleApiOperationResult","watchCanSubmitChange","watchSetBidCanSubmit","watchTrated","watchStage2Started","watchBrokerDealerBidding","submitResult","targetSecurities","bidAttributes","submitBidsSuccess","submitBidAttributesSuccess","addConflictBidLock","submitBidRequest","resolveApiCall","func","apiOperationType","_len","args","_key","_args2","agreement","bidRequests","_state$b$positionId$b","_state$b$positionId","_state$b$positionId2","_state$b$positionId2$","brokerDealerId","current","commission","currentBid","commissions","salesCoverage","acceptBiddingOverThemself","bidAsDealerRequestService","SubmitBidRequest","_submitResult$model$p","conflict","brokerDealerBidding","submitBidsConfirmation","submitInProgress","bidConfirmationActions","_state$brokerDealerBi","isTradedAway","_action$payload$bids$","numericUtils","numberOrDefault","_bid$value","_bid$axed","_bid$final","_submitResult$s$id","_action$payload$bids$2","Boolean","isBidOverThemself","_action$payload$bids$3","_bid$axed2","_bid$final2","_action$payload$bids$4","bidId","biddingService","submitBids","SubmitBid","updateBidAttributes","SubmitAxedFinal","submitResults","_defineProperty","isLoggedOut","stageTransitionConflict","parseOpenBiddingStageTransitionConflict","parseConflict","validationError","parseValidationError","hasStatusResponse","parseErrorMessage","bidPlacementActions","setBidCanSubmit","_currentBid$value","_currentBid$value2","isColorDistribution","currentBidValue","bidExists","bidChanged","axedChanged","finalChanged","passChanged","isCommissionValid","_currentBid$commissio","_editState$commission","currentCommission","minValue","maxValue","canSubmit","editBid","errors","storeCanSubmitPositionFlag","getCurrentBid","round","bidMinStep","isNumber","commissionRange","min","revert","BestFootForward","revertAll","brokerDealerBiddingActions","axedFinalChange","stagedBiddingStartStage2","watchBrokerDealerFetchContacts","watchBrokerDealerContactList","contactsService","getContacts","brokerDealerContactListActions","watchRequestBrokerDealers","watchBrokerDealerList","brokerDealers","getBrokerDealers","brokerDealerListActions","watchBrokerDealerUserList","usersService","getActiveBrokerDealers","brokerDealerUserListActions","watchBwicLogInit","watchBwicLogExport","watchBwicLog","security","statistics","getSecurityBwicStatistics","bwicLogActions","bwicLogInitSuccess","bwicLogInitFailure","dashboardService","exportBwicStatistic","bwicLogExportDataSuccess","bwicLogExportDataFailure","bwicLogInitRequest","bwicLogExportDataRequest"],"sourceRoot":""}