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()); }
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()); }
public async Task <int> Handle(CreateGridViewCommand request, CancellationToken cancellationToken) { _unitOfWork.BeginTransaction(); try { var gridInfo = await _gridQuery.GetGrid(request.GridCode, request.CompanyId); if (gridInfo != null) { if (gridInfo.HasMultipleViewsPerUser) { var gridView = _mapper.Map <GridView>(request); var existingGridViews = await _gridViewRepository.IsGridViewNameExists(gridView.CompanyId, gridView.GridCode, gridView.Name); if (existingGridViews) { throw new AtlasBusinessException("The name view is already used, please change it for saving to be completed."); } var gridViewId = await _gridViewRepository.CreateGridViewAsync(gridView); _unitOfWork.Commit(); _logger.LogInformation("New gridView created with id {Atlas_GridViewId}.", gridViewId); return(gridViewId); } else { throw new AtlasSecurityException("Grid Does not allow multiple Views"); } } else { throw new NotFoundException("Grid Info not found for gridId: " + request.GridCode); } } catch { _unitOfWork.Rollback(); throw; } }
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)); }
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)); }
public async Task <int> Handle(CreateReportCriteriasCommand request, CancellationToken cancellationToken) { _unitOfWork.BeginTransaction(); try { var grid = await _gridQueries.GetGrid(request.ReportCriterias.GridName, request.Company); if (grid == null) { throw new Exception($"No grid configuration found for {request.ReportCriterias.GridName}."); } var dynamicQueryDefinition = Mapper.Map <DynamicQueryDefinition>(request.ReportCriterias); var columnConfiguration = Mapper.Map <List <ColumnConfiguration> >(grid.Columns); var companyDate = await _systemDateTimeService.GetCompanyDate(request.Company); var criterias = DynamicQueryBuilder.BuildReportFilters(dynamicQueryDefinition, columnConfiguration, companyDate); ReportPredicate predicate = new ReportPredicate { CompanyId = request.Company, Criterias = criterias.Select(c => new ReportCriteria { Value = c.Item1, TableAlias = c.Item2 }) }; var predicateId = await _reportRepository.CreateReportCriteriasAsync(predicate); _unitOfWork.Commit(); _logger.LogInformation("New report criterias created with id {Atlas_PredicateId}.", predicateId); return(predicateId); } catch { _unitOfWork.Rollback(); throw; } }
public GameSetting Load() { //Get Grid Settings Grid grid = _gridService.GetGrid(); //Get Mine Positions IEnumerable <Position> minePositions = _positionService.GetMinePositions(); //Get Exit Point Position exit = _positionService.GetExit(); //Get Turtle's initial position InitialPosition initialPosition = _positionService.GetInitialPosition(); //Movements in Grid IEnumerable <IEnumerable <Move> > moves = _positionService.GetMovement(); if (initialPosition.Position.X == exit.X && initialPosition.Position.Y == exit.Y) { throw new InvalidExitException(); } foreach (var item in minePositions) { if (item.X == initialPosition.Position.X && item.Y == initialPosition.Position.Y) { throw new InvalidMineException(); } } return(new GameSetting() { Grid = grid, Mines = minePositions, Exit = exit, InitialPosition = initialPosition, Moves = moves }); }
/// <summary> /// Gets search grid. /// </summary> /// <param name="tenantId">Identifies website whose pages are searched.</param> /// <param name="page">1-based page index (null if not specified).</param> /// <param name="search">Search terms.</param> /// <returns>Grid view model.</returns> public Grid GetSearchGrid(long tenantId, int?page, string search) { // Get layouts that match search parameters ISearchParameters searchParameters = new SearchParameters { PageIndex = (page ?? 1) - 1, PageSize = 10, Search = search }; ISearchResult <Page> searchResult = _pageService.Search(tenantId, searchParameters); // Construct grid List <string> properties = new List <string> { "Name" }; UrlParameters urlParameters = new UrlParameters { ControllerName = "pages", ActionName = "read" }; List <RoutePropertyPair> routePropertyPairs = new List <RoutePropertyPair> { new RoutePropertyPair { PropertyName = PagePropertyNames.Id, RouteValueName = PagePropertyNames.Id } }; return(_gridService.GetGrid <Page>(searchParameters, searchResult, properties, urlParameters, routePropertyPairs, PageResource.NoPagesMessage)); }
public async Task <ActionResult <GridDto> > GetGridConfiguration(string company, string gridCode) { var config = await _gridConfigurationQueries.GetGrid(gridCode, company); return(Ok(config)); }