import { AbstractControl, ValidatorFn } from '@angular/forms';
import { Signal } from '@msfa-models/signal.model';

export class SignalFormValidator {
  static isSignalValid(): ValidatorFn {
    return (c: AbstractControl): { [key: string]: string } => {
      let errors: { [key: string]: string } = null;
      const { type, omfattning, percent, startDate } = c.value as Signal;

      if (!type) {
        errors = {
          ...errors,
          type: 'Typ av sysselsättning måste väljas',
        };
      }
      if (type && omfattning === 'deltid') {
        if (percent < 5) {
          errors = {
            ...errors,
            percent: 'Antal procent måste vara högre än 5%',
          };
        }
        if (percent > 100) {
          errors = {
            ...errors,
            percent: 'Antal procent måste vara lägre än 100%',
          };
        }
      }
      if (!startDate) {
        errors = {
          ...errors,
          startDate: 'Startdatum måste väljas',
        };
      }

      return errors;
    };
  }
}
