private void ApplyWhereMessageStatement(SqlBuilder sqlBuilder, GetPairMessagesQuery query) { if (query.FromDate.HasValue) { sqlBuilder.Where(@"PM.SentDate >= @FromDate", new { FromDate = query.FromDate.Value }); } sqlBuilder.Where(@"PM.Id = @PairId", new { PairId = query.PairId.Id }); }
public async Task <IEnumerable <PairMessageDto> > GetPairMessagesAsync(GetPairMessagesQuery query) { var sqlQuery = @" SELECT P.Id AS PairId ,PM.No AS PairMessageNo ,PM.FromUserId AS FromUserId ,PM.ToUserId AS ToUserId ,PM.Message AS Message ,PM.SentDate AS SentDate FROM dbo.PairMessages AS PM INNER JOIN dbo.Pairs AS P ON P.Id = PM.Id /**where**/ ORDER BY PM.SentDate DESC"; var sqlBuilder = new SqlBuilder(); var template = sqlBuilder.AddTemplate(sqlQuery, new { CurrentUserId = query.UserId.Id }); ApplyWherePairStatement(sqlBuilder); ApplyWhereMessageStatement(sqlBuilder, query); await using var connection = new SqlConnection(_sqlConnectionConfiguration.MainConnectionString); return(await connection.QueryAsync <PairMessageDto>(template.RawSql, template.Parameters)); }
public async Task <IActionResult> GetMessages(Guid id, DateTime?fromDate) { var query = new GetPairMessagesQuery(_correlationContext.CurrentUser.UserId.Value, new AggregateId(id), fromDate); return(Ok(await _commandQueryDispatcherDecorator.DispatchAsync <GetPairMessagesQuery, ListDto <PairMessageDto> >(query))); }
public async Task <ListDto <PairMessageDto> > HandleAsync(GetPairMessagesQuery query) => new ListDto <PairMessageDto>(await _pairsReadModel.GetPairMessagesAsync(query));