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); }
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; } }