import { Component, OnInit, ViewContainerRef } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { NzModalService } from 'ng-zorro-antd/modal';
import { GetOutOfLineDetailsComponent } from './get-out-of-line-details/get-out-of-line-details.component';
import { TreeService } from 'src/app/service/tree.service';
import { NavChangeService } from 'src/app/service/navChange.service';
import * as moment from 'moment';
@Component({
  selector: 'app-today-warning',
  templateUrl: './today-warning.component.html',
  styleUrls: ['./today-warning.component.scss']
})
export class TodayWarningComponent implements OnInit {
  validateForm!: FormGroup;
  constructor(private http: HttpClient, private fb: FormBuilder, private toTree: TreeService, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private navChangeService: NavChangeService) { }

  ngOnInit(): void {
    this.validateForm = this.fb.group({
      level: [null],
      type: [null],
      area: [null],
      datePickerStart: [new Date(`${moment(new Date()).format('YYYY-MM-DD')} 00:00`)],
      datePickerEnd: [new Date(`${moment(new Date()).format('YYYY-MM-DD')} 23:59`)]
    });
    this.warningType()
    this.getEarlyWarningList()
  }

  //预警类型接口
  warningTypes: any //预警接口数据
  warningTypesDetails: any
  warningType() {
    this.http.get('/api/services/app/Violation/GetAllList').subscribe((data: any) => {
      this.warningTypesDetails = data.result
      this.warningTypes = (data.result as any).groupBy((t) => { return t.violationType });
    })
  }

  typeChange(e) {
    this.warningTypes.forEach(element => {
      if (element.key == e) {
        this.warningTypesDetails = element
      }
    });
  }

  //获得预警列表    
  list: any = [
  ]
  totalCount: string //预警总数    
  getEarlyWarningList() {
    let ViolationIds = []
    if (this.validateForm.value.type) {
      this.warningTypesDetails.forEach(item => {
        item.id ? ViolationIds.push(item.id) : null
      });
    }
    let params = {
      Level: this.validateForm.value.level,
      ViolationIds: ViolationIds,
      ViolateArea: this.validateForm.value.area,
      organizationUnitId: JSON.parse(sessionStorage.getItem('userdataOfgasstation')).organization.id,
      ViolateTime: (this.validateForm.value.datePickerEnd && this.validateForm.value.datePickerStart) ? [moment(this.validateForm.value.datePickerStart).format('yyyy-MM-DD HH:mm:ss'), moment(this.validateForm.value.datePickerEnd).format('yyyy-MM-DD HH:mm:ss')] : null,
      SkipCount: '0',
      MaxResultCount: '9999'
    }
    this.http.get('/api/services/app/ViolateRecord/GetAll', {
      params: params
    }).subscribe((data: any) => {
      this.list = data.result.items
      this.totalCount = data.result.totalCount
      console.log('预警列表', this.list)

      let obj = {
        name: '改变数量',
        num: this.totalCount
      }
      setTimeout(() => {
        this.navChangeService.sendMessage(obj);//发布一条消息
      }, 0);

    })
  }

  submitForm(): void {
    for (const i in this.validateForm.controls) {
      this.validateForm.controls[i].markAsDirty();
      this.validateForm.controls[i].updateValueAndValidity();
    }
    this.getEarlyWarningList()
  }
  resetForm(e: MouseEvent): void {
    e.preventDefault();
    this.validateForm.reset();
    for (const key in this.validateForm.controls) {
      this.validateForm.controls[key].markAsPristine();
      this.validateForm.controls[key].updateValueAndValidity();
    }
    this.validateForm.patchValue({
      datePickerStart: new Date(`${moment(new Date()).format('YYYY-MM-DD')} 00:00`),
      datePickerEnd: new Date(`${moment(new Date()).format('YYYY-MM-DD')} 23:59`)
    });
    this.getEarlyWarningList()
  }



  look(item) {
    const modal = this.modal.create({
      nzContent: GetOutOfLineDetailsComponent,
      nzViewContainerRef: this.viewContainerRef,
      nzWidth: 1200,
      nzBodyStyle: {
        'border': '1px solid #6d9cc7',
        'border-radius': '0px',
        'padding': '0px',
        'box-shadow': '0 0 8px 0 #fff',
        'background': '#000D21',
      },
      nzComponentParams: {
        data: item
      },
      nzFooter: null,
      nzOnOk: async () => {

      }
    });
    const instance = modal.getContentComponent();
  }
}