package com.example.volunteer.service;

/**
 * ============================================================================
 * Service 层的结果类型（枚举）
 * ============================================================================
 *
 * 【为什么用枚举 / Why an enum】
 * EN — A boolean cannot tell the caller WHY it failed. With an enum the Controller can map
 *      each outcome to a different HTTP status without knowing any business rule.
 * 中 — boolean 无法区分“为什么失败”。用枚举，Controller 就能把每种结果映射成不同状态码，
 *      而它自己不需要懂任何业务规则。
 *
 * EN — The exam only requires 422 for "event not found" and "event full"; the extra values
 *      are declared assumptions (documented in the code).
 * 中 — 原题只要求“活动不存在/已满返回 422”；其余取值属于可声明的假设（代码里注明）。
 */
public enum SignupResult {

    /** 报名成功 → 201 */
    CREATED,

    /** 活动不存在 → 422 */
    EVENT_NOT_FOUND,

    /** 活动已满员 → 422 */
    EVENT_FULL,

    /** 志愿者不存在 → 422（假设） */
    VOLUNTEER_NOT_FOUND,

    /** 同一志愿者重复报名同一活动 → 422（假设） */
    ALREADY_SIGNED_UP,

    /** 时数不合法（≤ 0） → 422（假设） */
    INVALID_HOURS
}
