Files
avicenna/service/app-hub/dashboard/src/app/pages/ticket-system/ticket-view/ticket-view.component.ts
T
2025-06-05 15:24:05 +02:00

63 lines
2.0 KiB
TypeScript

import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { MatIconModule } from '@angular/material/icon';
import { MatTabsModule } from '@angular/material/tabs';
import { DialogRef } from '@ngneat/dialog';
import { HotToastService } from '@ngxpert/hot-toast';
import { tap } from 'rxjs';
import {
ApprovalState,
SetDocumentInfoMutationVariables,
Ticket,
TicketValidationState,
} from '../../../core/data-access/graphql/generated/generated';
import { TicketsService } from '../tickets.service';
import { TicketDocumentsMissingComponent } from './ticket-documents-missing.component';
import { TicketOverviewComponent } from './ticket-overview.component';
import { TicketTdUncertainComponent } from './ticket-td-uncertain.component';
import { TicketToursComponent } from './ticket-tours.component';
import { TicketUserActionRequiredComponent } from './ticket-user-action-required.component';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'dks-ticket-view',
templateUrl: './ticket-view.component.html',
imports: [
MatTabsModule,
MatIconModule,
TicketOverviewComponent,
TicketToursComponent,
TicketUserActionRequiredComponent,
TicketTdUncertainComponent,
TicketDocumentsMissingComponent,
],
})
export class TicketViewComponent {
private ticketsService = inject(TicketsService);
private toast = inject(HotToastService);
ref: DialogRef<Ticket, undefined | any> = inject(DialogRef);
TicketState = TicketValidationState;
ApprovalState = ApprovalState;
setDocumentInfo({
approval,
tdLocation,
}: Omit<SetDocumentInfoMutationVariables, 'ticketId'>): void {
this.ticketsService
.setDocumentInfo(this.ref.data.id, {
...(this.ref.data?.documentInfo ?? {}),
tdLocation,
approval: {
...(this.ref.data?.documentInfo?.approval ?? {}),
...approval,
},
})
.pipe(
tap(() => this.toast.success(`Ticket aktualisiert`)),
tap(() => this.ref.close())
)
.subscribe();
}
}