Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import { Entity, PrimaryGeneratedColumn, Column, BaseEntity } from "typeorm" import { SuggestedChartRevisionStatus } from "../../adminSiteClient/SuggestedChartRevision" @Entity("suggested_chart_revisions") export class SuggestedChartRevision extends BaseEntity { @PrimaryGeneratedColumn() id!: number @Column() chartId!: number @Column({ type: "json" }) suggestedConfig: any @Column({ type: "json" }) originalConfig: any @Column() createdBy!: number @Column() updatedBy!: number @Column({ type: "enum", enum: SuggestedChartRevisionStatus, default: SuggestedChartRevisionStatus.pending, }) status!: SuggestedChartRevisionStatus @Column({ default: "" }) suggestedReason!: string @Column({ default: "" }) decisionReason!: string @Column() createdAt!: Date @Column() updatedAt!: Date existingConfig?: any canApprove?: boolean canReject?: boolean canFlag?: boolean canPending?: boolean static isValidStatus(status: SuggestedChartRevisionStatus): boolean { return Object.values(SuggestedChartRevisionStatus).includes(status) } static checkCanApprove( suggestedChartRevision: SuggestedChartRevision ): boolean { // note: a suggestion can be approved if status == "rejected" | // "flagged" | "pending" AND the original config version equals // the existing config version (i.e. the existing chart has not // been changed since the suggestion was created). const status = suggestedChartRevision.status const originalVersion = suggestedChartRevision.originalConfig?.version const existingVersion = suggestedChartRevision.existingConfig?.version const originalVersionExists = originalVersion !== null && originalVersion !== undefined const existingVersionExists = existingVersion !== null && existingVersion !== undefined if ( [ SuggestedChartRevisionStatus.rejected, SuggestedChartRevisionStatus.flagged, SuggestedChartRevisionStatus.pending, ].includes(status) && originalVersionExists && existingVersionExists && originalVersion === existingVersion ) { return true } return false } static checkCanReject( suggestedChartRevision: SuggestedChartRevision ): boolean { // note: a suggestion can be rejected if: (1) status == // "pending" | "flagged"; or (2) status == "approved" and the // suggested config version equals the existing chart version // (i.e. the existing chart has not changed since the suggestion // was approved). const status = suggestedChartRevision.status const suggestedVersion = suggestedChartRevision.suggestedConfig?.version const existingVersion = suggestedChartRevision.existingConfig?.version const suggestedVersionExists = suggestedVersion !== null && suggestedVersion !== undefined const existingVersionExists = existingVersion !== null && existingVersion !== undefined if ( [ SuggestedChartRevisionStatus.flagged, SuggestedChartRevisionStatus.pending, ].includes(status) ) { return true } if ( status === "approved" && suggestedVersionExists && existingVersionExists && suggestedVersion === existingVersion ) { return true } return false } static checkCanFlag( suggestedChartRevision: SuggestedChartRevision ): boolean { // note: a suggestion can be flagged if status == "pending" or // if it is already flagged. Flagging a suggestion that is // already flagged is a hack for updating the decisionReason // column in the SuggestedChartRevisionApproverPage UI without // changing the status column. const status = suggestedChartRevision.status if ( [ SuggestedChartRevisionStatus.flagged, SuggestedChartRevisionStatus.pending, ].includes(status) ) { return true } return false } static checkCanPending( suggestedChartRevision: SuggestedChartRevision ): boolean { // note: a suggestion cannot be altered to pending from another status return false } } |