import { Component, OnInit, Input, NgModule, Output, EventEmitter } from '@angular/core';
import { OverlayPanel, OverlayPanelModule } from 'primeng/overlaypanel';
import { TableModule } from 'primeng/table';
import { CommonModule } from '@angular/common';
import { AuditTrailService } from 'ekangularbase/src/service/object/audit-trail.service';
import { AuditTrailClass } from 'ekangularbase/src/interface/audit-trail';


@Component({
  selector: 'app-audit-trail-popup',
  templateUrl: './audit-trail-popup.component.html',
  styleUrls: ['./audit-trail-popup.component.css']
})
export class AuditTrailPopupComponent implements OnInit {
  cols: any[];

  loading: boolean = false;
  @Input() rowID: string;
  @Input() entityName:string;
  @Input() fieldName:string;
  @Input() displayFieldName:string;
  @Input() baseZIndex = 10000;

  @Output() detectChangesEvent = new EventEmitter();

  auditList:AuditTrailClass[];


  constructor(private auditTrailService: AuditTrailService) {
    }
  ngOnInit() {

    this.cols =[
      { visible: true, field: 'changeDate', header: 'Updated Date',  width: "51"},
      { visible: true, field: 'changeBy', header: 'Updated By',  width: "50"},
      { visible: true, field: 'before', header: 'Before Value', width: "50"},
      { visible: true, field: 'after', header: 'After Value',  width: "50"}

    ];

  }

  showAuditTrailEvent(event, overlaypanel: OverlayPanel){
    this.getAuditDetails();
    overlaypanel.toggle(event);
  }
  getAuditDetails(){
    if (!(this.fieldName === undefined)){
      this.auditTrailService.GetChanges(this.entityName,this.rowID,this.fieldName).subscribe(res => {
      this.auditList = res;
      this.detectChangesEvent.emit(null);
     }, error => {
     console.log(error);
     });
   }

  }

}

@NgModule({
  imports: [CommonModule, TableModule,OverlayPanelModule],
  exports: [AuditTrailPopupComponent],
  declarations: [AuditTrailPopupComponent]
})
export class AuditTrailModule { }
