Ejemplo n.º 1
0
        public async Task <int> CreateReportCriteriasAsync(ReportPredicate predicate)
        {
            var queryParameters = new DynamicParameters();

            queryParameters.Add("@CompanyId", predicate.CompanyId);

            queryParameters.Add("@Criterias", ToArrayTVP(predicate.Criterias));

            queryParameters.Add("@PredicateId", dbType: DbType.Int32, direction: ParameterDirection.Output);

            await ExecuteNonQueryAsync(StoredProcedureNames.CreatePredicate, queryParameters, true);

            var predicateId = queryParameters.Get <int>("@PredicateId");

            return(predicateId);
        }
Ejemplo n.º 2
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;
            }
        }