Exemplo n.º 1
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());
        }
Exemplo n.º 2
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());
        }
Exemplo n.º 3
0
        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;
            }
        }
Exemplo n.º 4
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));
        }
Exemplo n.º 5
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));
        }
Exemplo n.º 6
0
        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;
            }
        }
Exemplo n.º 7
0
        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
            });
        }
Exemplo n.º 8
0
        /// <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));
        }
Exemplo n.º 9
0
        public async Task <ActionResult <GridDto> > GetGridConfiguration(string company, string gridCode)
        {
            var config = await _gridConfigurationQueries.GetGrid(gridCode, company);

            return(Ok(config));
        }