using Fitness_core_BE.Models; using Fitness_core_BE.DTOs.Workout; namespace Fitness_core_BE.Interfaces { public interface IWorkoutRepository { // Workout Category operations Task> GetWorkoutCategoryListAsync(CancellationToken ct = default); Task WorkoutCategoryExistsAsync(Guid workoutCategoryId, CancellationToken ct = default); Task CreateWorkoutCategoryAsync(WorkoutCategory workoutCategory, CancellationToken ct = default); // Workout Plan operations Task> GetWorkoutPlanListAsync(string userType, Guid clientId, CancellationToken ct = default); Task GetWorkoutPlanByIdAsync(Guid id, CancellationToken ct = default); Task> GetWorkoutPlansByCustomerIdAsync(Guid customerId, CancellationToken ct = default); Task GetWorkoutPlanEntityByIdAsync(Guid id, CancellationToken ct = default); Task CreateWorkoutPlanAsync(WorkoutPlan workoutPlan, CancellationToken ct = default); Task UpdateWorkoutPlanAsync(WorkoutPlan workoutPlan, CancellationToken ct = default); Task DeleteWorkoutPlanAsync(Guid id, CancellationToken ct = default); // Workout Item operations Task> GetWorkoutItemsByWorkoutPlanIdAsync(Guid workoutPlanId, CancellationToken ct = default); Task GetWorkoutItemByIdAsync(Guid id, CancellationToken ct = default); Task CreateWorkoutItemAsync(WorkoutItem workoutItem, CancellationToken ct = default); Task UpdateWorkoutItemAsync(WorkoutItem workoutItem, CancellationToken ct = default); Task DeleteWorkoutItemAsync(Guid id, CancellationToken ct = default); Task AssignWorkoutToCustomerAsync(CustomerWorkout customerWorkout, CancellationToken ct = default); Task UnassignWorkoutFromCustomerAsync(Guid customerWorkoutId, CancellationToken ct = default); Task> GetCustomerWorkoutsByPlanIdAsync(Guid workoutPlanId, CancellationToken ct = default); Task> GetCustomerWorkoutsByCustomerIdAsync(Guid customerId, CancellationToken ct = default); } }