public async Task <IEnumerable <EmployeeParticipationReportViewModel> > Handle( GetEmployeesParticipationCountQuery request, CancellationToken cancellationToken) { var useDb = _configuration["ConnectionStrings:Use"]; if (useDb == "PostgreSql") { return(await GetForPostgreSql(request)); } return(await GetForSqlServer(request)); }
private async Task <IEnumerable <EmployeeParticipationReportViewModel> > GetForSqlServer( GetEmployeesParticipationCountQuery request) { var connectionString = _configuration["ConnectionStrings:SqlServer"]; using (var connection = new SqlConnection(connectionString)) { connection.Open(); var query = $@"SELECT emp.employee_code AS {nameof(EmployeeParticipationReportViewModel.EmployeeCode)} ,COUNT(1) AS {nameof(EmployeeParticipationReportViewModel.ProjectParticipationCount)} ,AVG(emp.cost_amount) AS {nameof(EmployeeParticipationReportViewModel.AvgCost)} FROM employee_costs AS emp WHERE emp.participation_started_at >= @ThresholdStartDate AND emp.participation_started_at < @ThresholdEndDate GROUP BY emp.employee_code " ; return(await connection.QueryAsync <EmployeeParticipationReportViewModel>( query, new { request.ThresholdStartDate, request.ThresholdEndDate })); } }