Files
GymLogAI/GymLogAI.Application/Handlers/RecommendWorkoutHandler.cs
T
2026-04-19 13:12:04 +03:00

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