portal-www
Version:
Nova Portal Website. Based on Next starter by Ueno
59 lines (47 loc) • 1.42 kB
text/typescript
import { action, observable, extendObservable, computed, makeObservable } from 'mobx';
import { IClaim, ITransaction } from 'typings';
export default class Claims {
private authentication: any;
constructor({ claims = {} }: any, authentication: any) {
extendObservable(this, claims);
this.authentication = authentication;
this.transaction = undefined;
makeObservable(this, {
selectedClaims: observable,
transaction: observable,
totalCharge: computed,
addClaim: action,
findClaim: action,
clearClaims: action,
reset: action,
});
}
selectedClaims: IClaim[] = [];
transaction: ITransaction | undefined = undefined;
get totalCharge() {
return this.selectedClaims.reduce((prev, claim) => prev + claim.totalCharge, 0);
}
addClaim(claim: IClaim) {
const index = this.selectedClaims.findIndex(
(c: IClaim) => c.claimNumber === claim.claimNumber && c.dueDate === claim.dueDate,
);
if (index !== -1) {
// replace
this.selectedClaims.splice(index, 1);
return;
}
this.selectedClaims.push(claim);
}
findClaim(claim: IClaim) {
return this.selectedClaims.find(
(c: IClaim) => c.claimNumber === claim.claimNumber && c.dueDate === claim.dueDate,
);
}
clearClaims() {
this.selectedClaims = [];
}
reset() {
this.selectedClaims = [];
this.transaction = undefined;
}
}