import { AbstractControl, ValidatorFn } from '@angular/forms';
import { SignalFormData, SignalOmfattning } from './signal-form.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 SignalFormData;

      if (!type) {
        errors = {
          ...errors,
          type: 'Typ av sysselsättning måste väljas',
        };
      }
      if (type && omfattning === SignalOmfattning.Deltid) {
        if (percent < 1) {
          errors = {
            ...errors,
            percent: 'Omfattning i procent får inte vara mindre än 1% om deltid har valts',
          };
        } else if (percent > 99) {
          errors = {
            ...errors,
            percent: 'Omfattning i procent får inte vara mer än 99% om deltid har valts',
          };
        }
      }
      if (!startDate) {
        errors = {
          ...errors,
          startDate: 'Startdatum måste väljas',
        };
      }

      return errors;
    };
  }
}
