src/app/core/ngxs/audit.state.ts
State for managing the audits and facCrits of the application.
Has: Action handlers to read, write, update and delete an audit. Static and dynamic selectors to select audits and facCrits.
Methods |
|
constructor(auditService: AuditService, facCritService: FacCritService)
|
|||||||||
Defined in src/app/core/ngxs/audit.state.ts:30
|
|||||||||
Parameters :
|
addAudit | |||||||
addAudit(undefined: StateContext
|
|||||||
Decorators :
@Action(AddAudit)
|
|||||||
Defined in src/app/core/ngxs/audit.state.ts:78
|
|||||||
Parameters :
Returns :
void
|
Static audit | ||||||
audit(id: number)
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:53
|
||||||
Parameters :
Returns :
any
|
Static auditByStatus | ||||||
auditByStatus(statuses: AuditStatus[])
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:59
|
||||||
Parameters :
Returns :
any
|
Static audits | ||||||
audits(state: AuditStateModel)
|
||||||
Decorators :
@Selector()
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:44
|
||||||
Parameters :
Returns :
{}
|
Static criteriaByFactorId | ||||||
criteriaByFactorId(id: number)
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:71
|
||||||
Parameters :
Returns :
any
|
deleteAudit | |||||||
deleteAudit(undefined: StateContext
|
|||||||
Decorators :
@Action(DeleteAudit)
|
|||||||
Defined in src/app/core/ngxs/audit.state.ts:104
|
|||||||
Parameters :
Returns :
void
|
Static facCrit | ||||||
facCrit(id: number)
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:65
|
||||||
Parameters :
Returns :
any
|
Static facCrits | ||||||
facCrits(state: AuditStateModel)
|
||||||
Decorators :
@Selector()
|
||||||
Defined in src/app/core/ngxs/audit.state.ts:49
|
||||||
Parameters :
Returns :
{}
|
loadFacCritsByInterviewId | ||||||||
loadFacCritsByInterviewId(ctx: StateContext
|
||||||||
Decorators :
@Action(LoadFacCritsByInterviewId)
|
||||||||
Defined in src/app/core/ngxs/audit.state.ts:113
|
||||||||
Parameters :
Returns :
any
|
ngxsOnInit | |||||
ngxsOnInit(undefined: StateContext
|
|||||
Defined in src/app/core/ngxs/audit.state.ts:33
|
|||||
Parameters :
Returns :
void
|
updateAudit | ||||||||
updateAudit(ctx: StateContext
|
||||||||
Decorators :
@Action(UpdateAudit)
|
||||||||
Defined in src/app/core/ngxs/audit.state.ts:89
|
||||||||
Parameters :
Returns :
void
|
import { Audit, AuditStatus } from '../data/models/audit.model';
import { State, Selector, Action, StateContext, createSelector, NgxsOnInit } from '@ngxs/store';
import { patch, updateItem, removeItem, append } from '@ngxs/store/operators';
import { Injectable } from '@angular/core';
import {
AddAudit,
DeleteAudit,
UpdateAudit,
LoadFacCritsByInterviewId,
} from './actions/audit.actions';
import { FacCrit } from '../data/models/faccrit.model';
import { AuditService } from '../http/audit.service';
import { FacCritService } from '../http/facCrit.service';
export interface AuditStateModel {
audits: Audit[];
facCrits: FacCrit[];
}
/**
* State for managing the audits and facCrits of the application.
*
* Has: Action handlers to read, write, update and delete an audit.
* Static and dynamic selectors to select audits and facCrits.
*/
@State<AuditStateModel>({
name: 'audit',
})
@Injectable()
export class AuditState implements NgxsOnInit {
constructor(private auditService: AuditService, private facCritService: FacCritService) {}
ngxsOnInit({ patchState }: StateContext<AuditStateModel>) {
this.facCritService.getFacCrits().subscribe(facCrits => {
patchState({ facCrits });
});
this.auditService.getAudits().subscribe(audits => {
patchState({ audits });
});
}
@Selector()
static audits(state: AuditStateModel) {
return state.audits;
}
@Selector()
static facCrits(state: AuditStateModel) {
return state.facCrits;
}
static audit(id: number) {
return createSelector([AuditState], (state: AuditStateModel) => {
return state.audits.find(x => x.id === id);
});
}
static auditByStatus(...statuses: AuditStatus[]) {
return createSelector([AuditState], (state: AuditStateModel) => {
return state.audits.filter(x => statuses.includes(x.status));
});
}
static facCrit(id: number) {
return createSelector([AuditState], (state: AuditStateModel) => {
return state.facCrits.find(x => x.id === id);
});
}
static criteriaByFactorId(id: number) {
return createSelector([AuditState], (state: AuditStateModel) => {
return state.facCrits.filter(x => x.referenceId === id);
});
}
@Action(AddAudit)
addAudit({ setState }: StateContext<AuditStateModel>, { audit }: AddAudit) {
this.auditService.postAudit(audit).subscribe(audit => {
setState(
patch({
audits: append<Audit>([audit]),
}),
);
});
}
@Action(UpdateAudit)
updateAudit(ctx: StateContext<AuditStateModel>, { id, audit }: UpdateAudit) {
const oldAudit = ctx.getState().audits.find(audit => audit.id === id);
this.auditService.putAudit(oldAudit, { ...audit, id }).subscribe(() => {
const a = ctx.getState().audits.find(x => x.id === id);
ctx.setState(
patch({
audits: updateItem<Audit>(x => x.id === id, { ...a, ...audit }),
}),
);
});
}
@Action(DeleteAudit)
deleteAudit({ setState }: StateContext<AuditStateModel>, { id }: DeleteAudit) {
setState(
patch({
audits: removeItem<Audit>(x => x.id === id),
}),
);
}
@Action(LoadFacCritsByInterviewId)
loadFacCritsByInterviewId(ctx: StateContext<AuditStateModel>, { id }: LoadFacCritsByInterviewId) {
return this.facCritService.getFacCritsByInterviewId(id);
}
}