예제 #1
0
        public async Task <ActionResult <CollectionViewModel <ChildSectionsSearchResultDto> > > GetChileSectionData(
            string company,
            EntitySearchRequest searchRequest)
        {
            long   sectionId  = 0;
            string sectionRef = null;

            foreach (var clause in searchRequest.Clauses.Clauses)
            {
                if (clause.FieldId == 0)
                {
                    sectionId = long.Parse(clause.Value1, CultureInfo.InvariantCulture);
                }
                else
                {
                    sectionRef = clause.Value1;
                }
            }

            IEnumerable <ChildSectionsSearchResultDto> tradeReportContracts = await _sectionQueries.GetTradeChildSectionDataAsync(company, sectionId, sectionRef);

            var response = new CollectionViewModel <ChildSectionsSearchResultDto>(tradeReportContracts.ToList());

            return(Ok(response));
        }
예제 #2
0
        public async Task <IEnumerable <PhysicalDocumentSearchResultDto> > GetPhysicalDocumentsAsync(
            string company, EntitySearchRequest searchRequest)
        {
            var grideCode = "physicalDocumentList";

            var grid = await _gridQueries.GetGrid(grideCode, company);

            if (grid == null)
            {
                throw new AtlasTechnicalException($"No grid configuration found for {grideCode}.");
            }

            if (grid.MaxNumberOfRecords.HasValue && grid.MaxNumberOfRecords < searchRequest.Limit)
            {
                searchRequest.Limit = grid.MaxNumberOfRecords;
            }

            var dynamicQueryDefinition = _mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = _mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            var companyDate = await _systemDateTimeService.GetCompanyDate(company);

            var buildQueryResult = DynamicQueryBuilder.BuildQuery(company, _identityService.GetUserName(), dynamicQueryDefinition, "[Configuration].[Vw_PhysicalDocumentListAndSearch]", columnConfiguration, companyDate);

            var documentResults = await ExecuteDynamicQueryAsync <PhysicalDocumentSearchResultDto>(buildQueryResult.Sql, buildQueryResult.Parameters);

            return(documentResults.ToList());
        }
예제 #3
0
        public async Task <IEnumerable <PhysicalDocumentSearchResultDto> > SearchPhysicalDocumentsAsync(
            string company, EntitySearchRequest searchRequest)
        {
            var grideCode = "DocumentListAndSearchGrid";

            var grid = await _gridQueries.GetGrid(grideCode, company);

            if (grid == null)
            {
                throw new AtlasTechnicalException($"No grid configuration found for {grideCode}.");
            }

            if (grid.MaxNumberOfRecords.HasValue && grid.MaxNumberOfRecords < searchRequest.Limit)
            {
                searchRequest.Limit = grid.MaxNumberOfRecords;
            }

            var dynamicQueryDefinition = _mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = _mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            var companyDate = await _systemDateTimeService.GetCompanyDate(company);

            var userDepartments = (await _userService.GetUserByIdAsync(_identityService.GetUserAtlasId(), false)).Permissions
                                  .FirstOrDefault(permission => permission.CompanyId == company)
                                  .Departments.Select(department => department.DepartmentId).ToList();

            var dataVersionId = await _systemDateTimeService.GetCompanyCurrentDataVersionId(company);

            var buildQueryResult = DynamicQueryBuilder.BuildQuery(company, _identityService.GetUserName(), dynamicQueryDefinition, "[Configuration].[Vw_DocumentListAndSearch]", columnConfiguration, companyDate, dataVersionId, userDepartments);

            var documentResults = await ExecuteDynamicQueryAsync <PhysicalDocumentSearchResultDto>(buildQueryResult.Sql, buildQueryResult.Parameters);

            return(documentResults.ToList());
        }
예제 #4
0
        public async Task <IActionResult> SearchPhysicalContractsExport(
            string company,
            EntitySearchRequest searchRequest,
            [FromQuery] string format = ListAndSearchExportFormat.Excel)
        {
            var stream = await _tradingListAndSearch.ExportSearchSectionsToStreamAsync(company, searchRequest, format);

            return(File(stream, ExportToExcelHelper.XlsxMimeType, _tradingListAndSearch.GetExportFileName(company)));
        }
예제 #5
0
        public async Task <ActionResult <PaginatedCollectionViewModel <AccountingDocumentLineDto> > > GetAccoutingDocumentDataList(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _accountingDocumentQueries.GetAccoutingDocumentDataListAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #6
0
        public async Task <ActionResult <PaginatedCollectionViewModel <PostingSummaryDto> > > GetPostingManagement(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _accountingDocumentQueries.GetPostingManagementAccountingDocAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #7
0
        public async Task <ActionResult <PaginatedCollectionViewModel <AccountingSearchResultDto> > > SearchAccountingLinesbyAccountingId(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _accountingDocumentQueries.GetAccountingLinesByAccountIdAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #8
0
        public async Task <ActionResult <PaginatedCollectionViewModel <TransactionDocumentSearchResultDto> > > SearchTransactionDocumentEntries(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _accountingDocumentQueries.SearchTransactionDocumentEntriesAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #9
0
        public async Task <ActionResult <PaginatedCollectionViewModel <ReferentialBulkEditDto> > > SearchBulkEditReferentialCounterparties(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _clientDetailsQueries.SearchBulkEditReferentialCounterPartyListAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #10
0
        public async Task <ActionResult <PaginatedCollectionViewModel <SectionSearchResultDto> > > SearchPhysicalContracts(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _tradingListAndSearch.SearchSectionsAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #11
0
        public async Task <ActionResult <PaginatedCollectionViewModel <FxDealSearchResultDto> > > SearchFxDeals(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _fxDealQueries.SearchFxDealsAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #12
0
        public async Task <ActionResult <PaginatedCollectionViewModel <CharterSummaryDto> > > SearchCharters(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _charterQueries.SearchChartersAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #13
0
        public async Task <ActionResult <PaginatedCollectionViewModel <SectionSummaryDto> > > GetTradeForAllocation(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _physicalContractQueries.GetTradesForAllocationAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #14
0
        public async Task <ActionResult <PaginatedCollectionViewModel <PhysicalDocumentSearchResultDto> > > GetGeneratedDocuments(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _documentQueries.GetPhysicalDocumentsAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #15
0
        public async Task <ActionResult <PaginatedCollectionViewModel <TradeReportResultDto> > > GetTradeReportData(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _sectionQueries.GetTradeReportDataAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #16
0
        public async Task <ActionResult <PaginatedCollectionViewModel <CashDto> > > SearchCashReceiptList(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _cashQueries.SearchCashReceiptListAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #17
0
        public async Task <ActionResult <PaginatedCollectionViewModel <InvoicesForReversalDto> > > SearchContractsForReversalInvoice(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _invoiceQueries.SearchReversalContractsToInvoiceAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #18
0
        public async Task <ActionResult <PaginatedCollectionViewModel <InvoiceDetailsDto> > > SearchInvoices(
            string company,
            EntitySearchRequest searchRequest)
        {
            var searchResult = await _invoiceQueries.SearchInvoicesAsync(company, searchRequest);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #19
0
        public async Task <ActionResult <PaginatedCollectionViewModel <DocumentReferenceSearchResultDto> > > SearchDocumentReferenceEntries(
            string company,
            EntitySearchRequest searchRequest,
            bool isReversalDocument)
        {
            var searchResult = await _accountingDocumentQueries.SearchDocumentReferenceEntriesAsync(company, searchRequest, isReversalDocument);

            var response = searchResult.ToPaginatedCollectionViewModel(searchRequest);

            return(Ok(response));
        }
예제 #20
0
        public async Task <ActionResult <PaginatedCollectionViewModel <CounterpartyDto> > > SearchBank(
            string company,
            EntitySearchRequest searchRequest)
        {
            var grid = await _gridQueries.GetGrid("counterpartiesGrid", company);

            IEnumerable <CounterpartyDto> traders = await _fxDealQueries.GetBankBrokerAsync(company, searchRequest, grid);

            var response = new PaginatedCollectionViewModel <CounterpartyDto>(searchRequest.Offset.Value, searchRequest.Limit.Value, traders.ToList(), null);

            return(Ok(response));
        }
예제 #21
0
        public async Task <Stream> ExportSearchSectionsToStreamAsync(string company, EntitySearchRequest searchRequest, string format = ListAndSearchExportFormat.Excel)
        {
            var searchResult = await SearchSectionsAsync(company, searchRequest, true);

            var dataTable = await ConvertSearchResultToDataTableAsync(company, tradeGridCode, searchRequest.GridViewId, searchResult);

            var formatedClauses = await GenerateFormatedClauses(company, searchRequest, tradeGridCode);

            var stream = ExportToExcelHelper.Export(dataTable, new ExcelFileProperties {
                Author = _identityService.GetUserPrincipalName(), Company = $"LDC - {company}", Title = "Atlas Trades Export",
            }, formatedClauses);

            return(stream);
        }
예제 #22
0
        public async Task <IActionResult> GetDomainsSearchResults(EntitySearchRequest request)
        {
            ValidationResult validationResult = _searchLimitExcludedIdsRequestValidator.Validate(request);

            if (!validationResult.IsValid)
            {
                string email = User.GetEmail();
                _log.LogWarning($"User {email} made bad request: {validationResult.GetErrorString()}");
                return(BadRequest(new ErrorResponse(validationResult.GetErrorString())));
            }

            List <Domain.Domain> domains = await _domainDao.GetDomainsByName(request.Search, request.Limit, request.IncludedIds);

            return(new ObjectResult(domains));
        }
        public async Task <IActionResult> GetUsersSearchResults(EntitySearchRequest request)
        {
            ValidationResult validationResult = _searchLimitExcludedIdsRequestValidator.Validate(request);

            if (!validationResult.IsValid)
            {
                string email = User.FindFirst(_ => _.Type == ClaimTypes.Email)?.Value;
                _log.LogWarning($"User {email} made bad request: {validationResult.GetErrorString()}");
                return(BadRequest(new ErrorResponse(validationResult.GetErrorString())));
            }

            List <User> users = await _userDao.GetUsersByFirstNameLastNameEmail(request.Search, request.Limit, request.IncludedIds);

            return(new ObjectResult(users));
        }
예제 #24
0
            internal async Task <ValidatedAccountingImport> ProcessManualAccountingImport(List <AccountingCsvLine> csvAccountingData, bool IsMTMSelected, string company)
            {
                ValidatedAccountingImport       validatedAccountingImport = new ValidatedAccountingImport();
                List <AccountingDocumentImport> accountingRecordList      = new List <AccountingDocumentImport>();
                IEnumerable <NominalAccount>    nominalAccount            = (await _masterDataService.GetNominalAccountsAsync(company)).ToList();
                List <AccountingCsvLine>        goodDataList     = new List <AccountingCsvLine>();
                IEnumerable <Counterparty>      counterParty     = (await _masterDataService.GetCounterpartiesAsync(company)).ToList();
                IEnumerable <AccountLineTypes>  accountLineTypes = (await _masterDataService.GetAllAsync()).ToList();
                IEnumerable <CostType>          costType         = (await _masterDataService.GetCostTypesAsync(company)).ToList();
                IEnumerable <Department>        departmentId     = (await _masterDataService.GetDepartmentsAsync(company)).ToList();
                IEnumerable <Commodity>         commodity        = (await _masterDataService.GetCommoditiesAsync(company)).ToList();

                string[] chartercompany = new string[1];
                chartercompany[0] = company;
                IEnumerable <CharterManager> charterManager         = (await _masterDataService.GetCharterManagersAsync(chartercompany)).ToList();
                IEnumerable <Currency>       settlementCurrencyList = (await _masterDataService.GetCurrenciesAsync()).ToList();
                IEnumerable <Province>       provinces = (await _masterDataService.GetProvincesAsync()).ToList();
                EntitySearchRequest          request   = new EntitySearchRequest {
                    Clauses = null, Limit = 214748647, Offset = 0, SortColumns = null
                };
                var searchResultTransactionDocumentEntries = await _accountingDocumentQueries.SearchTransactionDocumentEntriesAsync(company, request);

                IEnumerable <TransactionDocumentSearch> searchResultTransactionDocument;

                searchResultTransactionDocument = _mapper.Map <IEnumerable <TransactionDocumentSearch> >(searchResultTransactionDocumentEntries);
                IEnumerable <SectionSearchResult> searchResultSectionId = await _accountingDocumentQueries.SearchSectionsAsync(company, request);

                IEnumerable <FxDealSearchResult> searchResultFxDeal = await _accountingDocumentQueries.SearchFxDealsAsync(company, request);


                var validatedAccounting = ValidateData(IsMTMSelected, csvAccountingData, nominalAccount, counterParty, accountLineTypes, costType, departmentId, charterManager, commodity, settlementCurrencyList, searchResultTransactionDocument, provinces, searchResultSectionId, searchResultFxDeal);

                foreach (var data in validatedAccounting.GoodData.LineNumber.ToList())
                {
                    var accontingValueListImport = csvAccountingData.Where(x => x.LineNumber == data).FirstOrDefault();
                    if (accontingValueListImport != null)
                    {
                        goodDataList.Add(accontingValueListImport);
                    }
                }
                validatedAccountingImport.GoodDataList = goodDataList;
                validatedAccountingImport.GoodData     = validatedAccounting.GoodData;
                validatedAccountingImport.BlockerData  = validatedAccounting.BlockerData;

                return(validatedAccountingImport);
            }
예제 #25
0
        public async Task <ActionResult <PaginatedCollectionViewModel <SectionAssignedToCharterDto> > > SearchCharterAssignments(
            string company,
            EntitySearchRequest searchRequest)
        {
            var grid = await _gridQueries.GetGrid("charterSectionToAssign", company);

            if (grid == null)
            {
                throw new Exception("No grid configuration found for charterSectionToAssign.");
            }

            IEnumerable <SectionAssignedToCharterDto> charterAssignmentSections = await _charterQueries.SearchCharterAssignmentsAsync(company, searchRequest, grid);

            var response = new PaginatedCollectionViewModel <SectionAssignedToCharterDto>(searchRequest.Offset.Value, searchRequest.Limit.Value, charterAssignmentSections.ToList(), null);

            return(Ok(response));
        }
예제 #26
0
        public async Task <IEnumerable <SectionSummaryDto> > GetTradesForAllocationAsync(string company, EntitySearchRequest searchRequest)
        {
            var grideCode = "tradeForTradeAllocationList";

            var grid = await _gridQueries.GetGrid(grideCode, company);

            if (grid == null)
            {
                throw new AtlasTechnicalException($"No grid configuration found for {grideCode}.");
            }

            if (grid.MaxNumberOfRecords.HasValue && grid.MaxNumberOfRecords < searchRequest.Limit)
            {
                searchRequest.Limit = grid.MaxNumberOfRecords;
            }

            var dynamicQueryDefinition = _mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = _mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            var companyDate = await _systemDateTimeService.GetCompanyDate(company);

            var dataVersionId = searchRequest.DataVersionId ?? await _systemDateTimeService.GetCompanyCurrentDataVersionId(company);

            var buildQueryResult = DynamicQueryBuilder.BuildQuery(company, _identityService.GetUserName(), dynamicQueryDefinition, "[Configuration].[Vw_TradeForTradeAllocationListAndSearch]", columnConfiguration, companyDate, dataVersionId);

            var tradeAllocationResult = await ExecuteDynamicQueryAsync <SectionSummaryDto>(buildQueryResult.Sql, buildQueryResult.Parameters);

            return(tradeAllocationResult.ToList());
        }
예제 #27
0
        public async Task <IEnumerable <ReferentialCounterPartySearchResultDto> > SearchReferentialCounterPartyListAsync(string company, EntitySearchRequest searchRequest, bool showDuplicateCounterpartyData = false)
        {
            var grideCode = "referentialCounterPartiesGrid";

            var grid = await _gridQueries.GetGrid(grideCode, company);

            if (grid == null)
            {
                throw new AtlasTechnicalException($"No grid configuration found for {grideCode}.");
            }

            if (grid.MaxNumberOfRecords.HasValue && grid.MaxNumberOfRecords < searchRequest.Limit)
            {
                searchRequest.Limit = grid.MaxNumberOfRecords;
            }

            var dynamicQueryDefinition = AutoMapper.Mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = AutoMapper.Mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            var companyDate = await _systemDateTimeService.GetCompanyDate(company);

            var buildQueryResult = DynamicQueryBuilder.BuildQuery(company, _identityService.GetUserName(), dynamicQueryDefinition, "[Configuration].[Vw_ReferentialCounterPartyListAndSearch]", columnConfiguration, companyDate);

            var referentialCounterPartySearchResult = await ExecuteDynamicQueryAsync <ReferentialCounterPartySearchResultDto>(buildQueryResult.Sql, buildQueryResult.Parameters);

            if (showDuplicateCounterpartyData == false)
            {
                var result = referentialCounterPartySearchResult.ToList();
                return(result.GroupBy(counterpartyData => counterpartyData.CounterpartyCode).Select(duplicateRow => duplicateRow.First()));
            }

            return(referentialCounterPartySearchResult.ToList());
        }
예제 #28
0
        public async Task Test(EntitySearchRequest request, bool isValid)
        {
            ValidationResult validationResult = await _entitySearchRequestValidator.ValidateAsync(request);

            Assert.That(validationResult.IsValid, Is.EqualTo(isValid));
        }
예제 #29
0
        protected virtual async Task <IEnumerable <T> > SearchAsync <T>(string company, EntitySearchRequest searchRequest, string gridCode, string viewName, bool skipPaginationLimit = false)
        {
            var grid = await _gridQueries.GetGrid(gridCode, company);

            if (grid == null)
            {
                throw new AtlasTechnicalException($"No grid configuration found for {gridCode}.");
            }

            if (!skipPaginationLimit && grid.MaxNumberOfRecords.HasValue && grid.MaxNumberOfRecords < searchRequest.Limit)
            {
                searchRequest.Limit = grid.MaxNumberOfRecords;
            }

            var dynamicQueryDefinition = _mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = _mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            var companyDate = await _systemDateTimeService.GetCompanyDate(company);

            var userDepartments = (await _userService.GetUserByIdAsync(_identityService.GetUserAtlasId(), false)).Permissions
                                  .FirstOrDefault(permission => permission.CompanyId == company)
                                  ?.Departments.Select(department => department.DepartmentId).ToList();

            var dataVersionId = searchRequest.DataVersionId ?? await _systemDateTimeService.GetCompanyCurrentDataVersionId(company);

            var buildQueryResult = DynamicQueryBuilder.BuildQuery(company, _identityService.GetUserName(), dynamicQueryDefinition, viewName, columnConfiguration, companyDate, dataVersionId, userDepartments);

            var results = await ExecuteDynamicQueryAsync <T>(buildQueryResult.Sql, buildQueryResult.Parameters);

            return(results.ToList());
        }
예제 #30
0
        protected virtual async Task <List <string> > GenerateFormatedClauses(string company, EntitySearchRequest searchRequest, string grideCode)
        {
            var grid = await _gridQueries.GetGrid(grideCode, company);

            var dynamicQueryDefinition = _mapper.Map <DynamicQueryDefinition>(searchRequest);

            var columnConfiguration = _mapper.Map <List <ColumnConfiguration> >(grid.Columns);

            List <string> formatedClauses = new List <string>();

            foreach (var clause in dynamicQueryDefinition.Clauses.Clauses)
            {
                var formatedClause = DynamicQueryBuilder.FormatClause(clause, columnConfiguration);
                formatedClauses.Add(formatedClause);
            }

            return(formatedClauses);
        }