// src/validators/at-least-one-non-null-element.validator.ts

import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator';

export function IsArrayWithAtLeastOneNonNullElement(validationOptions?: ValidationOptions) {
  return function (object: Record<string, any>, propertyName: string) {
    registerDecorator({
      name: 'isArrayWithAtLeastOneNonNullElement',
      target: object.constructor,
      propertyName: propertyName,
      constraints: [],
      options: validationOptions,
      validator: {
        validate(value: any[], args: ValidationArguments) {

            // if(value[0] == null || value[0] == undefined || value[0].trim() == ''){
            //     return false;
            // }

            if(!value || !value[0]){
                return false;
            }

            if(value.some((element) => element === null || element === undefined || element.trim() == '')){
                return false;
            }

            // if(Array.isArray(value) && value.some((element) => element !== null && element !== undefined)){
            //     return { status: 0 };
            // }
            // return {
            //     status: 0
            //   };
          return Array.isArray(value) && value.some((element) => element !== null && element !== undefined);
        },
      },
    });
  };
}
