import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { GeneralService } from '../../services/generalservice'; import { MainProjectAdd } from '../../component/main-project-add/main-project-add'; // Import Dumb Component @Component({ selector: 'app-main-project-content', standalone: false, templateUrl: './main-project-content.html', styleUrl: './main-project-content.css', }) export class MainProjectContent implements OnInit { // เข้าถึง Component ลูกเพื่อสั่ง Loading @ViewChild(MainProjectAdd) mainProjectAdd!: MainProjectAdd; mode: 'add' | 'edit' | 'default' = 'default'; constructor( private route: ActivatedRoute, private router: Router, private generalService: GeneralService ) {} ngOnInit(): void { // Subscribe paramMap เพื่อให้เปลี่ยน Mode ได้ทันทีถ้า URL เปลี่ยน this.route.paramMap.subscribe(params => { const modeParam = params.get('mode'); if (modeParam === 'add') { this.mode = 'add'; } else if (modeParam === 'edit') { this.mode = 'edit'; } else { this.mode = 'default'; } }); } // รับ Event (save) จากลูก แล้วยิง API onSaveProject(projectData: any): void { // เปิด Loading ที่ลูก if (this.mainProjectAdd) { this.mainProjectAdd.isLoading = true; } const uri = '/api/project/create'; // Endpoint Backend this.generalService.postRequest(uri, projectData).subscribe({ next: (result: any) => { // ปิด Loading ที่ลูก if (this.mainProjectAdd) this.mainProjectAdd.isLoading = false; this.generalService.trowApi(result); if (result.code === '200') { // สำเร็จ -> กลับไปหน้ารายการ this.router.navigate(['/main/project']); } }, error: (error: any) => { // Error -> ปิด Loading ที่ลูก if (this.mainProjectAdd) this.mainProjectAdd.isLoading = false; this.generalService.trowApi(error); } }); } // รับ Event (cancel) จากลูก onCancelProject(): void { this.router.navigate(['/main/project']); } }