import { Component, OnInit } from "@angular/core";
import { FormControl, FormGroup, Validators } from "@angular/forms";

import { ServiceComm } from "../../services/service-comm.service";
import { GearService } from "../../services/gear.service";
import { AddAction } from "../../models/add-action.enum";

@Component({
  selector: "app-new-gear",
  templateUrl: "./new-gear.component.html",
  styleUrls: ["./new-gear.component.css"]
})
export class NewGearComponent implements OnInit {
  public addForm: FormGroup;

  constructor(private serviceComm: ServiceComm,
              private serviceApi: GearService)
  {
    this.addForm = new FormGroup(
      {
        name: new FormControl("", Validators.required),
        manufacturer: new FormControl("", Validators.required),
        minSize: new FormControl("", [
          Validators.required,
          Validators.min(60),
          Validators.max(320)
        ]),
        maxSize: new FormControl("", [
          Validators.required,
          Validators.min(60),
          Validators.max(320)
        ]),
        aad: new FormControl("", Validators.required),
        mainCanopy: new FormControl("", [
          Validators.required,
          Validators.min(60),
          Validators.max(320)
        ]),
        reserveCanopy: new FormControl("", [
          Validators.required,
          Validators.min(60),
          Validators.max(320)
        ])
      },
      { updateOn: "blur" }
    );
  }

  ngOnInit() { }

  onSubmit(formData) {
    this.serviceApi.AddGear(formData.name,
                            formData.manufacturer,
                            +formData.minSize,
                            +formData.maxSize,
                            formData.aad,
                            formData.mainCanopy,
                            formData.reserveCanopy)
                    .subscribe(() => {
                      this.serviceComm.RefreshData(AddAction.Gear);
                    });
  }
}
