27 lines
924 B
C#
27 lines
924 B
C#
using GymLogAI.Application.DTOs;
|
|
using GymLogAI.Application.Interfaces;
|
|
using GymLogAI.Core.Enums;
|
|
|
|
namespace GymLogAI.Application.Handlers;
|
|
|
|
public sealed class RecommendWorkoutHandler(
|
|
IWorkoutRepository workoutRepository,
|
|
IWorkoutRecommendationGenerator workoutRecommendationGenerator)
|
|
{
|
|
public async Task<WorkoutRecommendationDto> HandleAsync(
|
|
RecommendWorkoutCommand command,
|
|
CancellationToken cancellationToken)
|
|
{
|
|
var history = await workoutRepository.GetHistoryAsync(command.UserId, cancellationToken);
|
|
|
|
var context = new WorkoutRecommendationContext(
|
|
command.UserId,
|
|
command.GoalType,
|
|
command.AdditionalContext);
|
|
|
|
return await workoutRecommendationGenerator.GenerateAsync(context, history, cancellationToken);
|
|
}
|
|
}
|
|
|
|
public sealed record RecommendWorkoutCommand(Guid UserId, GoalType GoalType, string? AdditionalContext);
|