import { Component, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatDividerModule } from '@angular/material/divider'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; import { ApiErrorHandlerService } from '../../core/services/common/api-error-handler.service'; import { NavigationService } from '../../core/services/common/navigation.service'; import { NotificationService } from '../../core/services/common/notification.service'; import { StorageService } from '../../core/services/common/storage.service'; import { CarnetService } from '../../core/services/carnet/carnet.service'; import { Fees } from '../../core/models/carnet/fee'; @Component({ selector: 'app-terms-conditions', imports: [MatCardModule, MatButtonModule, MatDividerModule, MatCheckboxModule, CommonModule, FormsModule], templateUrl: './terms-conditions.component.html', styleUrl: './terms-conditions.component.scss' }) export class TermsConditionsComponent { currentDate = new Date(); hasReadAllTerms = false; currentApplicationDetails: { headerid: number, applicationName: string } | null = null; isLoading: boolean = false; estimatedFees: Fees = {}; private notificationService = inject(NotificationService); private errorHandler = inject(ApiErrorHandlerService); private storageService = inject(StorageService); private navigationService = inject(NavigationService); private carnetService = inject(CarnetService); constructor() { this.currentApplicationDetails = this.storageService.get<{ headerid: number, applicationName: string }>('currentapplication') } ngOnInit(): void { if (this.currentApplicationDetails?.headerid) { this.carnetService.getEstimatedFees(this.currentApplicationDetails?.headerid).subscribe({ next: (data: Fees) => { if (data) { this.estimatedFees = data; } }, error: (error: any) => { let errorMessage = this.errorHandler.handleApiError(error, 'Failed to get estimated fees'); this.notificationService.showError(errorMessage); console.error('Error getting estimated fees:', error); } }); } } onAccept(): void { this.isLoading = true; this.carnetService.submitApplication(this.currentApplicationDetails?.headerid!).subscribe({ next: () => { this.notificationService.showSuccess('Application submitted successfully'); this.storageService.removeItem('currentapplication'); this.navigationService.navigate(["home"]); this.isLoading = false; }, error: (error) => { let errorMessage = this.errorHandler.handleApiError(error, 'Failed to submit application'); this.notificationService.showError(errorMessage); console.error('Error submitting the application', error); this.isLoading = false; } }); } onDecline(): void { this.storageService.removeItem('currentapplication'); this.navigationService.navigate(["edit-carnet", this.currentApplicationDetails?.headerid], { state: { isEditMode: true }, queryParams: { applicationname: this.currentApplicationDetails?.applicationName, return: 'shipping' } }) } }