// // match-password.validator.ts

// import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments } from 'class-validator';

// @ValidatorConstraint({ name: 'MatchPassword', async: false })
// export class MatchPasswordValidator implements ValidatorConstraintInterface {
//   validate(confirmPassword: string, args: ValidationArguments) {
//     const password = (args.object as any).password;
//     return confirmPassword === password;
//   }

//   // defaultMessage(args: ValidationArguments) {
//   //   return 'Passwords do not match.';
//   // }
// }

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

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

export function MatchPasswordValidator(validationOptions?: ValidationOptions) {
  return function (object: Record<string, any>, propertyName: string) {
    registerDecorator({
      name: 'matchPasswordValidator',
      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);
        // },
        validate(confirm_password: string, args: ValidationArguments) {
          const password = (args.object as any).password;
          return confirm_password === password;
        }
      },
    });
  };
}
