55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace Fitness_core_BE.DTOs.CustomerPlan
|
|
{
|
|
public class UpdateCustomerPlanRequest
|
|
{
|
|
[Required]
|
|
public Guid CustomerPlanId { get; set; }
|
|
|
|
public string? PlanName { get; set; }
|
|
|
|
public string? PlanDescription { get; set; }
|
|
|
|
[Range(0, double.MaxValue, ErrorMessage = "Plan price must be a positive value")]
|
|
public decimal? PlanPrice { get; set; }
|
|
|
|
public bool? HasOnboardingFee { get; set; }
|
|
|
|
[Range(0, double.MaxValue, ErrorMessage = "Onboarding fee must be zero or greater")]
|
|
public decimal? OnboardingFeeAmount { get; set; }
|
|
|
|
[Range(1, int.MaxValue, ErrorMessage = "Duration must be at least 1 day")]
|
|
public int? DurationInDays { get; set; }
|
|
|
|
public string? PlanScope { get; set; }
|
|
|
|
public int? MemberLimit { get; set; }
|
|
|
|
public string? DurationMode { get; set; }
|
|
|
|
public DateTime? ValidFrom { get; set; }
|
|
public DateTime? ValidTo { get; set; }
|
|
|
|
public bool? AllowSplitPayments { get; set; }
|
|
|
|
public int? InstallmentCount { get; set; }
|
|
|
|
[Range(1, int.MaxValue, ErrorMessage = "SessionsPerCycle must be at least 1 when set")]
|
|
public int? SessionsPerCycle { get; set; }
|
|
|
|
public string? SessionRolloverPolicy { get; set; }
|
|
|
|
[Range(0, int.MaxValue, ErrorMessage = "RolloverGraceDays must be zero or greater")]
|
|
public int? RolloverGraceDays { get; set; }
|
|
|
|
public string? BillingTiming { get; set; }
|
|
|
|
public bool? IsActive { get; set; }
|
|
|
|
/// <summary>Replaces this plan's place set when provided (empty array clears it back
|
|
/// to unrestricted). Omit/null to leave the plan's places unchanged.</summary>
|
|
public List<Guid>? PlaceIds { get; set; }
|
|
}
|
|
}
|