import { Component, OnInit } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component';
import { AlertModalComponent } from '../alert-modal/alert-modal.component';
import { DocumentService } from 'src/app/service/document.service';
import { DocumentModel } from 'src/app/model/document.model';

@Component({
  selector: 'app-list-doc',
  templateUrl: './list-doc.component.html',
  styleUrls: ['./list-doc.component.scss']
})
export class ListDocComponent implements OnInit {
  page = 1;
  pageSize = 10;
  listDoc:DocumentModel[]=[]
  modelDoc:DocumentModel = new DocumentModel({});
  checkEdit:boolean = false
  search:string = ''
  constructor(private modalService: NgbModal,private documentService:DocumentService) {
  }
  
  onSelectFile(event:any) {
    if (event.target.files && event.target.files[0]) {
      let reader = new FileReader();
      reader.readAsDataURL(event.target.files[0]); // read file as data url
      reader.onload = (event) => { // called once readAsDataURL is completed
        if(event){
          let base64 = event.target!.result as string
          this.modelDoc.doclObj = base64.split(',')[1];
       }
      }
    }
  }
 async downloadFile(logId:string){
    try {
      const data = await this.documentService.downloadFile(logId).toPromise();
    } catch (error) {
      console.error('Error loading data:', error);
    }
  }
  deleteFile(item:DocumentModel){
    const modalRef = this.modalService.open(ConfirmModalComponent, {
      centered: true,
      backdrop: 'static',
    })
    modalRef.componentInstance.message = 'คุณต้องการลบข้อมูลหรือไม่'
    modalRef.result.then(result => {
      this.documentService.deleteExcel(item).subscribe(result => {
        if (result) {
          this.openAlertModal('ลบข้อมูลสำเร็จ')
          this.getListDoc();
        } else {
      this.openAlertModal('ไม่สามารถลบข้อมูลได้')
        }
      }, error => {
        this.openAlertModal(error.message)
      })
    }, reject => { })

  }
  openAlertModal(message?: string) {
    const modalRef = this.modalService.open(AlertModalComponent, {
      centered: true,
      backdrop: 'static'
    })
    modalRef.componentInstance.message = message ? message : ""
    modalRef.result.then(result => {
      this.modalService.dismissAll()
    }, reason => {
      this.modalService.dismissAll()
    })
  }

  onUpdate(){
    const modalRef = this.modalService.open(ConfirmModalComponent, {
      centered: true,
      backdrop: 'static',
    })
    modalRef.componentInstance.message = 'คุณต้องการอัพเดทข้อมูลหรือไม่'
    modalRef.result.then(result => {
      console.log(this.modelDoc);
      this.documentService.createDoc(this.modelDoc).subscribe(result => {
        if (result) {
          this.openAlertModal('อัพเดทข้อมูลสำเร็จ')
          this.getListDoc();
        } else {
      this.openAlertModal('ไม่สามารถอัพเดทข้อมูลได้')
        }
      }, error => {
        this.openAlertModal(error.message)
      })
    }, reject => { })
  }
  onCreate(){
    const modalRef = this.modalService.open(ConfirmModalComponent, {
      centered: true,
      backdrop: 'static',
    })
    modalRef.componentInstance.message = 'คุณต้องการบันทึกข้อมูลหรือไม่'
    modalRef.result.then(result => {
      this.documentService.createDoc(this.modelDoc).subscribe(result => {
        if (result) {
          this.openAlertModal('บันทึกข้อมูลสำเร็จ')
          this.getListDoc();
        } else {
      this.openAlertModal('ไม่สามารถสร้างเอกสารได้')
        }
      }, error => {
        this.openAlertModal(error.message)
      })
    }, reject => { })
  }
  onSumit() {
   if(this.checkEdit){
    this.onUpdate();
   }else{
    this.onCreate();
   }
  }
  async getExcelById(targetModal: NgbModal,id:string){
    try {
      const data = await this.documentService.getDocById(id).toPromise();
      this.modelDoc = new DocumentModel(data)
      if(data){
        this.modalService.open(targetModal, {
          centered: true,
          backdrop: 'static',
          size: 'lg'
        });
      }
    } catch (error) {
      console.error('Error loading data:', error);
    }
  }
  openModal(targetModal: NgbModal,item?:DocumentModel) {
    if(item){
      this.getExcelById(targetModal,item.logId)
      this.checkEdit = true
    }else{
      this.modelDoc = new DocumentModel({});
      this.checkEdit = false
      this.modalService.open(targetModal, {
        centered: true,
        backdrop: 'static',
        size: 'lg'
      });
    }
   
  }
  getStatus(status:string){
    if(status == '0'){
      return 'รออนุมัติ'
    } else if(status == '1'){
      return 'เปิดใช้งาน'
    } else if(status == '2'){
      return 'ไม่อนุมัติ'
    }
  }
  async getListDoc(){
    try {
      const data = await this.documentService.getListDoc().toPromise();
      this.listDoc = data
    } catch (error) {
      console.error('Error loading data:', error);
    }
  }
  filterListDoc(){
    return this.listDoc.filter(x => x.thName.toLowerCase().includes(this.search.toLowerCase())||x.engName.toLowerCase().includes(this.search.toLowerCase()))
  }
  
  ngOnInit() {
    this.getListDoc();
  }


  closeBtnClick() {
    this.modalService.dismissAll();
    this.ngOnInit();
  }

}