All files / validators duplicatedEmail.validator.ts

100% Statements 6/6
100% Branches 0/0
100% Functions 2/2
100% Lines 6/6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22      1x   1x 2x 5x   2x       1x                
import { AbstractControl, ValidatorFn } from '@angular/forms';
import { Contact } from '../models/contact';
// @ts-ignore
const findIndex = require('lodash/findIndex');
 
export function isDuplicatedEmail(email: string, contacts: Contact[]): boolean {
  const contactIndex = findIndex(contacts, contact => {
    return contact.email == email;
  });
  return contactIndex > -1;
}
 
/* istanbul ignore next */
export function duplicatedEmailValidator(contacts: Contact[]): ValidatorFn {
  return (control: AbstractControl): { [key: string]: boolean } | null => {
    if (isDuplicatedEmail(control.value, contacts)) {
      return {'duplicatedEmail': true};
    }
    return null;
  };
}