309 lines
22 KiB
C#
309 lines
22 KiB
C#
using Fitness_core_BE.Models;
|
|
|
|
namespace Fitness_core_BE.Data
|
|
{
|
|
/// <summary>
|
|
/// Fixed, deterministic seed data for the 3 platform-wide "coach guided" workout plans
|
|
/// (1-day / 2-day / 3-day splits) inserted via EF Core migration HasData. GUIDs are
|
|
/// hardcoded (not Guid.NewGuid()) because HasData requires stable keys across migrations.
|
|
/// </summary>
|
|
public static class WorkoutPlanSeedData
|
|
{
|
|
public static readonly Guid CategoryId = Guid.Parse("6df7ddee-1923-43ff-b349-d10beaab5531");
|
|
|
|
public static readonly Guid Plan1DayId = Guid.Parse("dc845372-fd61-4ec6-ad5f-4b61b569ea83");
|
|
public static readonly Guid Plan2DayId = Guid.Parse("abca6a2c-3b33-460e-9384-7c29dec89887");
|
|
public static readonly Guid Plan3DayId = Guid.Parse("712adef6-7915-4e6a-9e60-2a077b3f33a9");
|
|
|
|
public static readonly Guid Plan1Day1ItemId = Guid.Parse("ee06a6c4-cbb0-41d8-956f-04940ebb3ad4");
|
|
public static readonly Guid Plan2Day1ItemId = Guid.Parse("f0886ca4-2f72-4abd-8307-2891f026e8f9");
|
|
public static readonly Guid Plan2Day2ItemId = Guid.Parse("ed586263-03ea-4f0c-a538-c069d061dc1c");
|
|
public static readonly Guid Plan3Day1ItemId = Guid.Parse("66ebcbba-8de5-4cb6-af0e-e24d371d79a0");
|
|
public static readonly Guid Plan3Day2ItemId = Guid.Parse("27c39410-1c57-4137-8737-a59706d6443e");
|
|
public static readonly Guid Plan3Day3ItemId = Guid.Parse("f988a8a9-8384-47c7-b815-2e92eef5bd7e");
|
|
|
|
private static readonly DateTime SeedDate = new DateTime(2026, 8, 2, 0, 0, 0, DateTimeKind.Utc);
|
|
|
|
private static string VideoSearchUrl(string exerciseName) =>
|
|
"https://www.youtube.com/results?search_query=" + Uri.EscapeDataString(exerciseName + " exercise tutorial");
|
|
|
|
public static WorkoutCategory[] Categories() => new[]
|
|
{
|
|
new WorkoutCategory
|
|
{
|
|
WorkoutCategoryId = CategoryId,
|
|
WorkoutCategoryName = "Coach Guided Plans",
|
|
Description = "Structured plans curated by HexaFitness so members can train confidently without a live coach.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate
|
|
}
|
|
};
|
|
|
|
public static WorkoutPlan[] Plans() => new[]
|
|
{
|
|
new WorkoutPlan
|
|
{
|
|
WorkoutPlanId = Plan1DayId,
|
|
WorkoutPlanName = "1-Day Full Body Plan",
|
|
Description = "A single full-body session hitting every major muscle group. Best for members who can train once or twice a week.",
|
|
IsTemplate = true,
|
|
FKWorkoutCategoryId = CategoryId,
|
|
FKClientId = null,
|
|
IsActive = true,
|
|
CreateDate = SeedDate
|
|
},
|
|
new WorkoutPlan
|
|
{
|
|
WorkoutPlanId = Plan2DayId,
|
|
WorkoutPlanName = "2-Day Upper/Lower Split",
|
|
Description = "Alternate an upper-body day with a lower-body-and-core day. Great for two or four sessions a week.",
|
|
IsTemplate = true,
|
|
FKWorkoutCategoryId = CategoryId,
|
|
FKClientId = null,
|
|
IsActive = true,
|
|
CreateDate = SeedDate
|
|
},
|
|
new WorkoutPlan
|
|
{
|
|
WorkoutPlanId = Plan3DayId,
|
|
WorkoutPlanName = "3-Day Push/Pull/Legs Split",
|
|
Description = "Classic push, pull, legs rotation for members training three to six days a week.",
|
|
IsTemplate = true,
|
|
FKWorkoutCategoryId = CategoryId,
|
|
FKClientId = null,
|
|
IsActive = true,
|
|
CreateDate = SeedDate
|
|
}
|
|
};
|
|
|
|
public static WorkoutItem[] Items() => new[]
|
|
{
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan1Day1ItemId,
|
|
ExerciseDay = "Day 1 - Full Body",
|
|
Description = "Full body strength session covering chest, back, shoulders, arms, legs and core.",
|
|
FKWorkoutPlanId = Plan1DayId,
|
|
Duration = "45-55 minutes",
|
|
WormUp = "5-8 minutes of light cardio plus dynamic stretches for hips, shoulders and ankles.",
|
|
Cooldown = "5 minutes of static stretching for the muscles trained.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
},
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan2Day1ItemId,
|
|
ExerciseDay = "Day 1 - Upper Body",
|
|
Description = "Chest, back, shoulders, biceps and triceps.",
|
|
FKWorkoutPlanId = Plan2DayId,
|
|
Duration = "50-60 minutes",
|
|
WormUp = "5 minutes light cardio plus arm circles and band pull-aparts.",
|
|
Cooldown = "5 minutes stretching chest, back and shoulders.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
},
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan2Day2ItemId,
|
|
ExerciseDay = "Day 2 - Lower Body & Core",
|
|
Description = "Quads, hamstrings, glutes, calves and core.",
|
|
FKWorkoutPlanId = Plan2DayId,
|
|
Duration = "50-60 minutes",
|
|
WormUp = "5-8 minutes light cardio plus bodyweight squats and leg swings.",
|
|
Cooldown = "5 minutes stretching quads, hamstrings and calves.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
},
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan3Day1ItemId,
|
|
ExerciseDay = "Day 1 - Push",
|
|
Description = "Chest, shoulders and triceps.",
|
|
FKWorkoutPlanId = Plan3DayId,
|
|
Duration = "50-60 minutes",
|
|
WormUp = "5 minutes light cardio plus arm circles and shoulder dislocates.",
|
|
Cooldown = "5 minutes stretching chest, shoulders and triceps.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
},
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan3Day2ItemId,
|
|
ExerciseDay = "Day 2 - Pull",
|
|
Description = "Back and biceps.",
|
|
FKWorkoutPlanId = Plan3DayId,
|
|
Duration = "50-60 minutes",
|
|
WormUp = "5 minutes light cardio plus band pull-aparts and scapular retractions.",
|
|
Cooldown = "5 minutes stretching back and biceps.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
},
|
|
new WorkoutItem
|
|
{
|
|
WorkoutItemId = Plan3Day3ItemId,
|
|
ExerciseDay = "Day 3 - Legs & Core",
|
|
Description = "Quads, hamstrings, glutes, calves and core.",
|
|
FKWorkoutPlanId = Plan3DayId,
|
|
Duration = "55-65 minutes",
|
|
WormUp = "8 minutes light cardio plus bodyweight squats, lunges and leg swings.",
|
|
Cooldown = "5-8 minutes stretching the full lower body.",
|
|
IsActive = true,
|
|
CreateDate = SeedDate,
|
|
UpdatedAt = SeedDate
|
|
}
|
|
};
|
|
|
|
private record Ex(
|
|
Guid Id, Guid ItemId, int Order, string Name, string MuscleGroup,
|
|
int Sets, string Reps, string Description, string BreathIn, string BreathOut);
|
|
|
|
public static WorkoutExercise[] Exercises()
|
|
{
|
|
var defs = new[]
|
|
{
|
|
// ---- Plan 1: 1-Day Full Body ----
|
|
new Ex(Guid.Parse("d9c8f4e6-d889-46ea-8231-a0003239eac3"), Plan1Day1ItemId, 1, "Bodyweight Squat", "Legs", 3, "15",
|
|
"Stand with feet shoulder-width apart and lower your hips back and down as if sitting into a chair, then drive back up.",
|
|
"Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."),
|
|
new Ex(Guid.Parse("9a655052-29d7-4e31-8cd9-7f29724fe9a3"), Plan1Day1ItemId, 2, "Push-Up", "Chest", 3, "12",
|
|
"Hands under shoulders, body in a straight line from head to heels. Lower your chest to the floor and press back up.",
|
|
"Inhale as you lower your chest toward the floor.", "Exhale as you press back up to the start."),
|
|
new Ex(Guid.Parse("d5f5e067-927e-419c-8878-d6de902877a1"), Plan1Day1ItemId, 3, "Bent-Over Dumbbell Row", "Back", 3, "12",
|
|
"Hinge at the hips with a flat back, let the dumbbells hang, then pull them toward your waist squeezing your shoulder blades together.",
|
|
"Inhale as you let the dumbbells lower and arms extend.", "Exhale as you pull the dumbbells toward your torso."),
|
|
new Ex(Guid.Parse("27410090-3846-4bf1-b033-6a2f682c5e61"), Plan1Day1ItemId, 4, "Dumbbell Shoulder Press", "Shoulders", 3, "10",
|
|
"Sit or stand with a dumbbell in each hand at shoulder height, press overhead until arms are extended, then lower with control.",
|
|
"Inhale as you lower the dumbbells to shoulder height.", "Exhale as you press the dumbbells overhead."),
|
|
new Ex(Guid.Parse("1a4060e8-b98b-449c-98a4-e44aa895741e"), Plan1Day1ItemId, 5, "Dumbbell Bicep Curl", "Biceps", 3, "12",
|
|
"Elbows tucked at your sides, curl the dumbbells up toward your shoulders, then lower slowly.",
|
|
"Inhale as you lower the dumbbells back down.", "Exhale as you curl the dumbbells up toward your shoulders."),
|
|
new Ex(Guid.Parse("adba4556-0f84-4033-be42-ad6d714cbbc0"), Plan1Day1ItemId, 6, "Triceps Dip", "Triceps", 3, "10",
|
|
"Using a bench or chair, lower your body by bending your elbows to about 90 degrees, then press back up.",
|
|
"Inhale as you bend your elbows and lower your body.", "Exhale as you press back up to straighten your arms."),
|
|
new Ex(Guid.Parse("21fcc291-5124-4d32-94a7-dcbfc7f5d42d"), Plan1Day1ItemId, 7, "Walking Lunge", "Legs", 3, "12 each leg",
|
|
"Step forward into a lunge, lowering your back knee toward the floor, then push off to bring the back leg through into the next step.",
|
|
"Inhale as you step forward and lower your back knee.", "Exhale as you push back up to standing."),
|
|
new Ex(Guid.Parse("8803ff2c-a78a-419d-9e64-2166be5d53ac"), Plan1Day1ItemId, 8, "Plank", "Core", 3, "30-45 sec hold",
|
|
"Forearms and toes on the floor, body in a straight line, core braced. Hold the position without letting your hips sag.",
|
|
"Inhale slowly through the nose while holding the position.", "Exhale slowly through the mouth, keeping your core braced."),
|
|
|
|
// ---- Plan 2, Day 1: Upper Body ----
|
|
new Ex(Guid.Parse("a153ed45-d300-4f5a-8277-4c0a3868fcb9"), Plan2Day1ItemId, 1, "Flat Bench Press", "Chest", 4, "10",
|
|
"Lie on a flat bench, lower the bar to your mid-chest with control, then press it back up to full arm extension.",
|
|
"Inhale as you lower the bar to your chest.", "Exhale as you press the bar back up."),
|
|
new Ex(Guid.Parse("e0f19862-fd5e-4b0c-bd31-2ad184c15cc3"), Plan2Day1ItemId, 2, "Lat Pulldown", "Back", 4, "10",
|
|
"Grip the bar wide, pull it down to your upper chest while keeping your chest up, then let it rise back with control.",
|
|
"Inhale as you let the bar rise and your arms extend.", "Exhale as you pull the bar down toward your chest."),
|
|
new Ex(Guid.Parse("9cd3ca5c-b0b1-487b-b340-9120e5ad8a74"), Plan2Day1ItemId, 3, "Seated Dumbbell Shoulder Press", "Shoulders", 3, "12",
|
|
"Seated with back supported, press the dumbbells from shoulder height straight overhead, then lower with control.",
|
|
"Inhale as you lower the dumbbells to shoulder height.", "Exhale as you press the dumbbells overhead."),
|
|
new Ex(Guid.Parse("a85e98d5-b36a-47e1-b463-3c04d505667b"), Plan2Day1ItemId, 4, "Barbell Bicep Curl", "Biceps", 3, "12",
|
|
"Grip the bar shoulder-width, curl it up toward your chest keeping elbows fixed at your sides, then lower slowly.",
|
|
"Inhale as you lower the bar back down.", "Exhale as you curl the bar up toward your shoulders."),
|
|
new Ex(Guid.Parse("29c2321d-5841-4704-9d35-f937d0b1ad6c"), Plan2Day1ItemId, 5, "Triceps Rope Pushdown", "Triceps", 3, "12",
|
|
"Elbows pinned at your sides, push the rope down until your arms are fully extended, then let it rise back with control.",
|
|
"Inhale as you let the rope rise and your elbows bend.", "Exhale as you push the rope down to full extension."),
|
|
new Ex(Guid.Parse("dacb1386-1e57-44d2-aecd-21350b2ad5be"), Plan2Day1ItemId, 6, "Face Pull", "Shoulders", 3, "15",
|
|
"Using a rope on a cable machine at head height, pull the rope toward your face, flaring your elbows out wide.",
|
|
"Inhale as you extend your arms forward.", "Exhale as you pull the rope toward your face."),
|
|
|
|
// ---- Plan 2, Day 2: Lower Body & Core ----
|
|
new Ex(Guid.Parse("b46f76d9-0eef-41bd-9202-bbee8035dff4"), Plan2Day2ItemId, 1, "Barbell Back Squat", "Legs", 4, "10",
|
|
"Bar across your upper back, feet shoulder-width apart. Squat down until thighs are parallel to the floor, then drive back up.",
|
|
"Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."),
|
|
new Ex(Guid.Parse("3e3d0a10-63c1-4c68-ac5b-67c005f92fcc"), Plan2Day2ItemId, 2, "Romanian Deadlift", "Legs", 4, "10",
|
|
"Holding a barbell or dumbbells, hinge at the hips and lower the weight along your legs, keeping a flat back, then drive your hips forward to stand.",
|
|
"Inhale as you hinge and lower the weight down.", "Exhale as you drive your hips forward to stand tall."),
|
|
new Ex(Guid.Parse("9900c46f-3f74-46eb-8782-84ba5a6d5479"), Plan2Day2ItemId, 3, "Leg Press", "Legs", 3, "12",
|
|
"Feet shoulder-width on the platform, lower it by bending your knees toward your chest, then press it away without locking your knees.",
|
|
"Inhale as you bend your knees toward your chest.", "Exhale as you press the platform away."),
|
|
new Ex(Guid.Parse("639a1181-70e2-4cb3-966f-ba8089b8166c"), Plan2Day2ItemId, 4, "Standing Calf Raise", "Legs", 3, "15",
|
|
"Standing on the balls of your feet on a raised edge, lower your heels below the step, then rise up onto your toes.",
|
|
"Inhale as you lower your heels down.", "Exhale as you rise up onto your toes."),
|
|
new Ex(Guid.Parse("a7a43b3e-3cdb-4de4-ade7-16e9b229249a"), Plan2Day2ItemId, 5, "Hanging Leg Raise", "Core", 3, "12",
|
|
"Hang from a bar with straight arms, raise your legs up until roughly parallel to the floor, then lower with control.",
|
|
"Inhale as you lower your legs back down.", "Exhale as you raise your legs up."),
|
|
new Ex(Guid.Parse("6fedc4b4-5ba1-4c55-9783-7c64676f11e6"), Plan2Day2ItemId, 6, "Russian Twist", "Core", 3, "20 total",
|
|
"Sit with knees bent and torso leaned back slightly, rotate your torso to tap the floor on each side.",
|
|
"Inhale to reset at the centre.", "Exhale as you rotate to each side."),
|
|
|
|
// ---- Plan 3, Day 1: Push ----
|
|
new Ex(Guid.Parse("418d75b4-72cf-4736-91a0-0a208d225011"), Plan3Day1ItemId, 1, "Barbell Bench Press", "Chest", 4, "8",
|
|
"Lie on a flat bench, lower the bar to your mid-chest with control, then press it back up to full arm extension.",
|
|
"Inhale as you lower the bar to your chest.", "Exhale as you press the bar back up."),
|
|
new Ex(Guid.Parse("8eebef00-c567-4e55-ad4d-a2242e98ffdd"), Plan3Day1ItemId, 2, "Incline Dumbbell Press", "Chest", 3, "10",
|
|
"On an incline bench, press the dumbbells up from chest height until arms are extended, then lower with control.",
|
|
"Inhale as you lower the dumbbells to your chest.", "Exhale as you press the dumbbells back up."),
|
|
new Ex(Guid.Parse("8a2acd7a-e923-4861-ad37-1cd10923695f"), Plan3Day1ItemId, 3, "Overhead Barbell Press", "Shoulders", 3, "10",
|
|
"Bar at shoulder height, press it straight overhead until arms are extended, then lower back to shoulder height.",
|
|
"Inhale as you lower the bar to shoulder height.", "Exhale as you press the bar overhead."),
|
|
new Ex(Guid.Parse("acafc07f-cb25-44a3-8543-b503c8af0fc9"), Plan3Day1ItemId, 4, "Lateral Raise", "Shoulders", 3, "15",
|
|
"Holding a light dumbbell in each hand, raise your arms out to the sides until shoulder height, then lower with control.",
|
|
"Inhale as you lower your arms back down.", "Exhale as you raise your arms out to the sides."),
|
|
new Ex(Guid.Parse("98bd09c3-37f9-48c2-af12-fa44ed36b597"), Plan3Day1ItemId, 5, "Triceps Overhead Extension", "Triceps", 3, "12",
|
|
"Holding a dumbbell overhead with both hands, lower it behind your head by bending your elbows, then extend back up.",
|
|
"Inhale as you bend your elbows and lower the weight.", "Exhale as you extend your arms back overhead."),
|
|
|
|
// ---- Plan 3, Day 2: Pull ----
|
|
new Ex(Guid.Parse("1d04f884-0d01-48e1-8297-f088c4b1174a"), Plan3Day2ItemId, 1, "Deadlift", "Back", 4, "6",
|
|
"Feet hip-width, grip the bar just outside your legs, brace your core and drive through your heels to stand tall, keeping the bar close to your body.",
|
|
"Inhale and brace your core before lifting.", "Exhale as you drive your hips forward to stand tall."),
|
|
new Ex(Guid.Parse("6ea3b6bc-f8c4-4582-91f5-6a4a9d57ab19"), Plan3Day2ItemId, 2, "Pull-Up", "Back", 4, "8",
|
|
"Grip the bar shoulder-width, pull your chest toward the bar until your chin clears it, then lower with control.",
|
|
"Inhale as you lower yourself back down.", "Exhale as you pull yourself up toward the bar."),
|
|
new Ex(Guid.Parse("1ab08ef9-1936-4c31-b94f-8b86b535eed5"), Plan3Day2ItemId, 3, "Seated Cable Row", "Back", 3, "12",
|
|
"Seated with knees slightly bent, pull the handle toward your waist while keeping your back straight, then extend back out.",
|
|
"Inhale as you let the handle extend back out.", "Exhale as you pull the handle toward your waist."),
|
|
new Ex(Guid.Parse("55d052dd-8fff-448c-b1f2-6f021cd6c2a3"), Plan3Day2ItemId, 4, "Barbell Curl", "Biceps", 3, "12",
|
|
"Grip the bar shoulder-width, curl it up toward your chest keeping elbows fixed at your sides, then lower slowly.",
|
|
"Inhale as you lower the bar back down.", "Exhale as you curl the bar up toward your shoulders."),
|
|
new Ex(Guid.Parse("b15bae89-7bb4-4803-99cd-487839882473"), Plan3Day2ItemId, 5, "Hammer Curl", "Biceps", 3, "12",
|
|
"Holding dumbbells with palms facing your body, curl them up toward your shoulders keeping your wrists neutral, then lower slowly.",
|
|
"Inhale as you lower the dumbbells back down.", "Exhale as you curl the dumbbells up toward your shoulders."),
|
|
|
|
// ---- Plan 3, Day 3: Legs & Core ----
|
|
new Ex(Guid.Parse("2fea8666-58f7-4ccb-bf95-68b62c02d7c2"), Plan3Day3ItemId, 1, "Barbell Back Squat", "Legs", 4, "8",
|
|
"Bar across your upper back, feet shoulder-width apart. Squat down until thighs are parallel to the floor, then drive back up.",
|
|
"Inhale as you bend your knees and lower into the squat.", "Exhale as you drive through your heels and stand back up."),
|
|
new Ex(Guid.Parse("04d6fa32-70df-49b9-8a6e-09d35673e102"), Plan3Day3ItemId, 2, "Walking Lunge", "Legs", 3, "12 each leg",
|
|
"Step forward into a lunge, lowering your back knee toward the floor, then push off to bring the back leg through into the next step.",
|
|
"Inhale as you step forward and lower your back knee.", "Exhale as you push back up to standing."),
|
|
new Ex(Guid.Parse("f57d0779-5341-42e6-80d4-71b84f348e01"), Plan3Day3ItemId, 3, "Leg Curl", "Legs", 3, "12",
|
|
"Lying or seated on the machine, curl your heels toward your glutes against the resistance, then extend back with control.",
|
|
"Inhale as you extend your legs back down.", "Exhale as you curl your heels toward your glutes."),
|
|
new Ex(Guid.Parse("701b6dec-ab9f-43dc-abcb-8a6774c0ec35"), Plan3Day3ItemId, 4, "Standing Calf Raise", "Legs", 4, "15",
|
|
"Standing on the balls of your feet on a raised edge, lower your heels below the step, then rise up onto your toes.",
|
|
"Inhale as you lower your heels down.", "Exhale as you rise up onto your toes."),
|
|
new Ex(Guid.Parse("bfa52ab2-add0-42a4-ac1c-294b86d96879"), Plan3Day3ItemId, 5, "Plank", "Core", 3, "45 sec hold",
|
|
"Forearms and toes on the floor, body in a straight line, core braced. Hold the position without letting your hips sag.",
|
|
"Inhale slowly through the nose while holding the position.", "Exhale slowly through the mouth, keeping your core braced."),
|
|
new Ex(Guid.Parse("a91fdef1-6351-4c68-9115-f3bff738d971"), Plan3Day3ItemId, 6, "Bicycle Crunch", "Core", 3, "20 total",
|
|
"Lying on your back, alternate bringing elbow to opposite knee while extending the other leg out.",
|
|
"Inhale to reset at the centre.", "Exhale as you crunch elbow toward the opposite knee.")
|
|
};
|
|
|
|
return Array.ConvertAll(defs, d => new WorkoutExercise
|
|
{
|
|
WorkoutExerciseId = d.Id,
|
|
FKWorkoutItemId = d.ItemId,
|
|
SortOrder = d.Order,
|
|
Name = d.Name,
|
|
MuscleGroup = d.MuscleGroup,
|
|
Sets = d.Sets,
|
|
Reps = d.Reps,
|
|
Description = d.Description,
|
|
BreathIn = d.BreathIn,
|
|
BreathOut = d.BreathOut,
|
|
VideoUrl = VideoSearchUrl(d.Name),
|
|
IsActive = true,
|
|
CreateDate = SeedDate
|
|
});
|
|
}
|
|
}
|
|
}
|