166 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			166 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { Component } from "@angular/core";
 | 
						|
import { AddEditMasterRoomComponent } from "./add-edit-master-room/add-edit-master-room.component";
 | 
						|
import { TableApiService } from "src/app/_services/table-api.service";
 | 
						|
import { NgbModal } from "@ng-bootstrap/ng-bootstrap";
 | 
						|
import { Router } from "@angular/router";
 | 
						|
import { BuildingService } from "../../service/monitoring-api.service";
 | 
						|
import { LoginService } from "../../service/login.service";
 | 
						|
 | 
						|
@Component({
 | 
						|
  selector: "app-master-room",
 | 
						|
  templateUrl: "./master-room.component.html",
 | 
						|
  styleUrls: ["./master-room.component.css"],
 | 
						|
})
 | 
						|
export class MasterRoomComponent {
 | 
						|
  data: any;
 | 
						|
  filteredRows: any[];
 | 
						|
  searchTerm: string = "";
 | 
						|
  rows: any = [];
 | 
						|
  public breadcrumb: any;
 | 
						|
 | 
						|
  constructor(
 | 
						|
    private modalService: NgbModal,
 | 
						|
    private monitoringApiService: BuildingService,
 | 
						|
    private authService: LoginService
 | 
						|
  ) {}
 | 
						|
 | 
						|
  ngOnInit() {
 | 
						|
    this.authService.checkTokenAndRedirect();
 | 
						|
    this.breadcrumb = {
 | 
						|
      mainlabel: "Master Room",
 | 
						|
      links: [
 | 
						|
        {
 | 
						|
          name: "Home",
 | 
						|
          isLink: false,
 | 
						|
        },
 | 
						|
        {
 | 
						|
          name: "Master Room",
 | 
						|
          isLink: false,
 | 
						|
        },
 | 
						|
      ],
 | 
						|
    };
 | 
						|
    this.fetchData();
 | 
						|
  }
 | 
						|
 | 
						|
  fetchData() {
 | 
						|
    this.monitoringApiService.getBuildingRoomList().subscribe((res) => {
 | 
						|
      this.data = res;
 | 
						|
      this.filteredRows = this.data.results.data.sort((a, b) => b.id - a.id);
 | 
						|
      // this.data.results.data.sort((a, b) => b.id - a.id);
 | 
						|
      console.log(this.filteredRows);
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  filterRows() {
 | 
						|
    if (!this.searchTerm) {
 | 
						|
      this.filteredRows = [...this.data.results.data];
 | 
						|
    } else {
 | 
						|
      const searchTermLC = this.searchTerm.toLowerCase();
 | 
						|
      this.filteredRows = this.data.results.data.filter((row) =>
 | 
						|
        this.rowContainsSearchTerm(row, searchTermLC)
 | 
						|
      );
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  rowContainsSearchTerm(row: any, searchTermLC: string): boolean {
 | 
						|
    return (
 | 
						|
      row.roomEntity.name.toLowerCase().includes(searchTermLC) ||
 | 
						|
      row.roomEntity.description.toLowerCase().includes(searchTermLC) ||
 | 
						|
      row.buildingEntity.name.toLowerCase().includes(searchTermLC) ||
 | 
						|
      row.statusEntity.name.toLowerCase().includes(searchTermLC)
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  openAddMasterModal() {
 | 
						|
    const modalRef = this.modalService.open(AddEditMasterRoomComponent, {
 | 
						|
      size: "lg",
 | 
						|
      backdrop: "static", // Add this line
 | 
						|
      keyboard: false, // Add this line
 | 
						|
    });
 | 
						|
 | 
						|
    modalRef.componentInstance.mode = "add";
 | 
						|
    modalRef.result.then(
 | 
						|
      (result) => {
 | 
						|
        if (result) {
 | 
						|
          const filteredData = {
 | 
						|
            name: result.name,
 | 
						|
            description: result.description,
 | 
						|
          };
 | 
						|
          this.monitoringApiService
 | 
						|
            .postMasterRoomParam(filteredData)
 | 
						|
            .subscribe((res) => {
 | 
						|
              const transformedData = {
 | 
						|
                buildingId: result.buildingId,
 | 
						|
                roomId: [res.data.id],
 | 
						|
                statusId: result.statusId,
 | 
						|
              };
 | 
						|
              this.monitoringApiService
 | 
						|
                .postBatchBuilding(transformedData)
 | 
						|
                .subscribe((res) => {
 | 
						|
                  this.fetchData();
 | 
						|
                });
 | 
						|
            });
 | 
						|
        }
 | 
						|
      },
 | 
						|
      (reason) => {
 | 
						|
        console.log(`Dismissed: ${reason}`);
 | 
						|
      }
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  editRow(row) {
 | 
						|
    const modalRef = this.modalService.open(AddEditMasterRoomComponent, {
 | 
						|
      size: "lg",
 | 
						|
      backdrop: "static", // Add this line
 | 
						|
      keyboard: false, // Add this line
 | 
						|
    });
 | 
						|
 | 
						|
    modalRef.componentInstance.dataRow = row;
 | 
						|
    modalRef.componentInstance.mode = "edit";
 | 
						|
    modalRef.result.then(
 | 
						|
      (result) => {
 | 
						|
        if (result) {
 | 
						|
          const filteredData = {
 | 
						|
            id: result.roomId,
 | 
						|
            name: result.name,
 | 
						|
            description: result.description,
 | 
						|
          };
 | 
						|
          this.monitoringApiService
 | 
						|
            .putMasterRoomParam(filteredData, row.roomId)
 | 
						|
            .subscribe((res) => {
 | 
						|
              console.log(res);
 | 
						|
              const transformedData = {
 | 
						|
                buildingId: result.buildingId,
 | 
						|
                roomId: res.data.id,
 | 
						|
                statusId: result.statusId,
 | 
						|
              };
 | 
						|
              this.monitoringApiService
 | 
						|
                .puttBuildingRoom(transformedData, row.id)
 | 
						|
                .subscribe((res) => {
 | 
						|
                  this.fetchData();
 | 
						|
                });
 | 
						|
            });
 | 
						|
        }
 | 
						|
      },
 | 
						|
      (reason) => {
 | 
						|
        console.log(`Dismissed: ${reason}`);
 | 
						|
      }
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  deleteRow(row) {
 | 
						|
    const confirmDelete = confirm("Are you sure you want to delete this item?");
 | 
						|
    if (confirmDelete) {
 | 
						|
      this.monitoringApiService
 | 
						|
        .deleteHeaderDetailParam(row.roomEntity.id)
 | 
						|
        .subscribe((res) => {
 | 
						|
          this.monitoringApiService
 | 
						|
            .deleteRoomBuilding(row.id)
 | 
						|
            .subscribe((res) => {
 | 
						|
              this.fetchData();
 | 
						|
            });
 | 
						|
        });
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |