import { DataStructure } from "@/src/components/base/DataStructure";
import { LocalChapterSchema } from "./localChapter";
import { UserSchema } from "./user";
import { localChapterId, userId } from "../database";

export interface MembershipFeePayment {
    id: number;
    payment_amount: number;
    payment_date: Date;
    payment_status: number;
    chapter_id: number;
    user_id: number;
}

export const MembershipFeePaymentSchema: DataStructure[] = [
    {
        fieldId: "id",
        type: "number",
        displayName: "Membership Payment Id",
        hideFromCRUD: true
    },
    {
        fieldId: "payment_amount",
        type: "number",
        displayName: "Payment Amount",
        required: true
    },
    {
        fieldId: "payment_date",
        type: "date",
        displayName: "Payment Date",
        required: true,
        defaultValue: () => new Date()
    },
    {
        fieldId: "payment_status",
        type: "number",
        displayName: "Payment Status",
        required: true,
        options: [
            {
                label: "Pending",
                value: "1"
            },
            {
                label: "Accepted",
                value: "2"
            },
            {
                label: "Rejected",
                value: "3"
            },
            {
                label: "Refunded",
                value: "4"
            }
        ],
        defaultValue: () => {
            return 1;
        }
    },
    {
        fieldId: "chapter_id",
        type: "reference",
        referenceId: localChapterId,
        referenceStructure: LocalChapterSchema,
        referenceAlias: "chapter",
        referenceParentAlias: "membership_payments",
        referenceDisplay: "chapter_name",
        displayName: "Local Chapter",
        required: true
    },
    {
        fieldId: "user_id",
        type: "reference",
        referenceId: userId,
        referenceStructure: UserSchema,
        referenceAlias: "user",
        referenceParentAlias: "membership_payments",
        referenceDisplay: "name",
        displayName: "User",
        required: true
    }
]