/**
 * Validation rule for the assignment title.
 *
 * Ensures that the title is not empty.
 */
export const assignmentTitleRules = [
    (value: string): string | boolean => {
        if (value?.length >= 1) {
            return true;
        } // Title must not be empty
        return "Title cannot be empty.";
    },
];

/**
 * Validation rule for the learning path selection.
 *
 * Ensures that a valid learning path is selected.
 */
export const learningPathRules = [
    (value: { hruid: string; title: string }): string | boolean => {
        if (value && value.hruid) {
            return true; // Valid if hruid is present
        }
        return "You must select a learning path.";
    },
];

/**
 * Validation rule for the classes selection.
 *
 * Ensures that at least one class is selected.
 */
export const classRules = [
    (value: string): string | boolean => {
        if (value) {
            return true;
        }
        return "You must select at least one class.";
    },
];

/**
 * Validation rule for the deadline field.
 *
 * Ensures that a valid deadline is selected and is in the future.
 */
export const deadlineRules = [
    (value: string): string | boolean => {
        if (!value) {
            return "You must set a deadline.";
        }

        const selectedDateTime = new Date(value);
        const now = new Date();

        if (isNaN(selectedDateTime.getTime())) {
            return "Invalid date or time.";
        }

        if (selectedDateTime <= now) {
            return "The deadline must be in the future.";
        }

        return true;
    },
];

export const descriptionRules = [
    (value: string): string | boolean => {
        if (!value || value.trim() === "") {
            return "Description cannot be empty.";
        }
        return true;
    },
];
