import { ControlBase } from './models/control-base';
import { Injectable } from '@angular/core';
import { FormControl, FormGroup, Validators, FormBuilder } from '@angular/forms';

@Injectable()
export class FormCreatorService {
  constructor(private formBuilder: FormBuilder) { }

  toFormGroup(controls: ControlBase<any>[]) {
    const group: any = {};

    controls.forEach(control => {
      group[control.key] = control.required ? new FormControl(control.value || '', Validators.required)
        : new FormControl(control.value || '');
    });
    return new FormGroup(group);
  }

  toFormGroupItems(items: Array<any>) {
    const arr = items.map(item => {
      return this.formBuilder.control(item.value);
    });
    return this.formBuilder.array(arr);
  }

}
