using Microsoft.AspNetCore.Http; namespace Fitness_core_BE.Interfaces.Services { public interface ICustomerService { Task CreateCustomer(object payload, HttpContext httpContext); Task CustomerExists(object payload, HttpContext httpContext); // True when the caller's Customer has verified at least one channel (email/phone). Task IsCustomerVerified(HttpContext httpContext); Task AssignPlansToCustomer(Guid customerId, object payload, HttpContext httpContext); Task UpdateCustomer(object payload, HttpContext httpContext); Task DeleteCustomer(object payload, HttpContext httpContext); Task GetCustomerMealPlan(object payload, HttpContext httpContext); Task GetCustomerMealPlanById(object payload, HttpContext httpContext); Task GetFollowedMealPlans(object payload, HttpContext httpContext); Task GetMyMealPlans(object payload, HttpContext httpContext); Task GetCustomerWorkOutPlan(object payload, HttpContext httpContext); Task GetCustomerWorkoutPlanById(object payload, HttpContext httpContext); Task GetFollowedWorkoutPlans(object payload, HttpContext httpContext); Task GetMyWorkoutPlans(object payload, HttpContext httpContext); Task FollowMealPlan(object payload, HttpContext httpContext); Task FollowWorkOutPlan(object payload, HttpContext httpContext); Task SetWorkoutExerciseCompletion(Guid workoutPlanId, Guid exerciseId, bool completed, HttpContext httpContext); Task GetClientDataById(object payload, HttpContext httpContext); Task GetClientGyms(object payload, HttpContext httpContext); // QR gym onboarding: list a gym's membership plans, then join by picking one. Task GetGymPlans(object payload, HttpContext httpContext); Task JoinGym(object payload, HttpContext httpContext); // Gym-specific Terms & Conditions: view the gym's active terms and record acceptance. Task GetGymTerms(object payload, HttpContext httpContext); Task AcceptGymTerms(object payload, HttpContext httpContext); Task GetGymTermsPdf(Guid clientId); Task CreateCusHealthRec(object payload, HttpContext httpContext); Task CreateCusProgressRec(object payload, HttpContext httpContext); Task UpdateCusHealthRec(object payload, HttpContext httpContext); Task UpdateCusProgressRec(object payload, HttpContext httpContext); Task UpdateCustomerTargetNutritions(object payload, HttpContext httpContext); Task GetCusBasicDetails(object payload, HttpContext httpContext); Task GetCusHealthDetails(object payload, HttpContext httpContext); Task GetCusProgressDetails(object payload, HttpContext httpContext); Task GetCustomerProgress(object payload, HttpContext httpContext); Task UpdateWeeklyProgress(object payload, HttpContext httpContext); Task GetWeeklyProgressForCustomer(object payload, HttpContext httpContext); Task CreateFeed(object payload, HttpContext httpContext); Task GetCardDetails(object payload, HttpContext httpContext); // Member self-serve auto-deduct: save a card with explicit consent, then opt a // subscription in/out of being auto-charged against that card. Task SaveCard(object payload, HttpContext httpContext); Task SetAutoCharge(Guid subscriptionId, object payload, HttpContext httpContext); // Lets the mobile app find the caller's active subscription id to target SetAutoCharge. Task GetMySubscription(object payload, HttpContext httpContext); Task GetMyGym(object payload, HttpContext httpContext); Task UnfollowMyGym(object payload, HttpContext httpContext); Task MyPayment(object payload, HttpContext httpContext); // In-app Notification tab: history of assignment/feed pushes sent to this customer. Task GetMyNotifications(object payload, HttpContext httpContext); Task MarkNotificationRead(Guid notificationId, HttpContext httpContext); // Refreshes the stored Expo push token (called at login, since a token can rotate). Task UpdatePushToken(object payload, HttpContext httpContext); // Links an already-uploaded document (POST /customer/documents) as this customer's // profile picture. Task UpdateProfileImage(object payload, HttpContext httpContext); } }