package org.initialde.yakasave.Unit;

import org.initialde.yakasave.Domain.Entities.SavingsFund;

import org.initialde.yakasave.Domain.Entities.User;
import org.initialde.yakasave.Domain.Enums.TypeSavingsFund;
import org.initialde.yakasave.Domain.ValueObject.Amount;

import java.time.LocalDate;

public class SavingsFundFactory {
    public static SavingsFund createSavingsFund(String reference, User user, TypeSavingsFund type) {
        return SavingsFund.builder()
                .reference(reference)
                .owner(user)
                .type(type)
                .goalAmount(Amount.MINIMUM_GOAL_AMOUNT)
                .deadline(LocalDate.now())
                .build();
    }

    public static SavingsFund createSavingsFund(String reference, User user, TypeSavingsFund type, LocalDate localDate) {
        return SavingsFund.builder()
                .reference(reference)
                .owner(user)
                .type(type)
                .goalAmount(Amount.MINIMUM_GOAL_AMOUNT)
                .launchDate(localDate)
                .deadline(LocalDate.now())
                .build();
    }

    public static SavingsFund createCollectiveSavingsFund(String reference, User user, int maxAllowedMembers) {
        return SavingsFund.builder()
                .reference(reference)
                .owner(user)
                .type(TypeSavingsFund.COLLECTIVE)
                .goalAmount(Amount.MINIMUM_GOAL_AMOUNT)
                .deadline(LocalDate.now())
                .maxAllowedMembers(maxAllowedMembers)
                .build();
    }
}
