@@ -177,15 +177,21 @@ export const getRecordEvents = (
177177 record : PeachRecord ,
178178 n = 0 ,
179179 m = 0
180- ) : { processEvent : ProcessEvent ; onHoldEvent : CodingEvent } => {
181- const processEvents = [ ...record . process_event_set ] . sort ( ( a , b ) => compareProcessEvents ( a , b , true ) ) ;
180+ ) : { processEvent ?: ProcessEvent ; onHoldEvent ?: CodingEvent } => {
181+ const processEvents = record . process_event_set
182+ ? [ ...record . process_event_set ] . sort ( ( a , b ) => compareProcessEvents ( a , b , true ) )
183+ : [ ] ;
182184 // TODO: Once onHold is implemented a tie breaker compartive function will be needed
183- const onHoldEvents = [ ...record . on_hold_event_set ] . sort ( ( a , b ) =>
184- compareDates ( piesEventToDate ( a . event ) , piesEventToDate ( b . event ) , true )
185- ) ;
185+ /* eslint-disable indent */
186+ const onHoldEvents = record . on_hold_event_set
187+ ? [ ...record . on_hold_event_set ] . sort ( ( a , b ) =>
188+ compareDates ( piesEventToDate ( a . event ) , piesEventToDate ( b . event ) , true )
189+ )
190+ : [ ] ;
191+ /* eslint-enable indent */
186192
187- const processEvent = processEvents . length > n ? processEvents [ n ] : processEvents [ 0 ] ;
188- const onHoldEvent = onHoldEvents . length > m ? onHoldEvents [ m ] : onHoldEvents [ 0 ] ;
193+ const processEvent = processEvents && processEvents . length > n ? processEvents [ n ] : undefined ;
194+ const onHoldEvent = onHoldEvents && onHoldEvents . length > m ? onHoldEvents [ m ] : undefined ;
189195
190196 return { processEvent, onHoldEvent } ;
191197} ;
@@ -207,10 +213,12 @@ const generateStatus = (
207213 const phase = PermitPhase . APPLICATION ;
208214
209215 let statusKey = processEvent . process . code ;
210-
211216 if ( statusKey in PeachTerminatedStage ) {
212- const { processEvent } = getRecordEvents ( record , 1 ) ;
213- const prevStageCode = processEvent . process . code_set [ 1 ] as string ;
217+ const { processEvent : prevProcessEvent } = getRecordEvents ( record , 1 ) ;
218+ if ( ! prevProcessEvent ) {
219+ return { phase, stage : undefined , state : undefined } ;
220+ }
221+ const prevStageCode = prevProcessEvent . process . code_set [ 1 ] ;
214222 statusKey = `${ prevStageCode } :${ statusKey } ` ;
215223 }
216224
@@ -265,9 +273,11 @@ export function piesEventToDateParts(piesEvent: PiesEvent): DateTimeStrings {
265273 * @returns A split date representing the submitted date and time, or both null if not found
266274 */
267275const findSubmittedDate = ( record : PeachRecord ) : NullableDateTimeStrings => {
268- for ( const pe of record . process_event_set ) {
269- if ( pe . process . code === PEACH_SUBMITTED_STATE ) {
270- return piesEventToDateParts ( pe . event ) ;
276+ if ( record . process_event_set ) {
277+ for ( const pe of record . process_event_set ) {
278+ if ( pe . process . code === PEACH_SUBMITTED_STATE ) {
279+ return piesEventToDateParts ( pe . event ) ;
280+ }
271281 }
272282 }
273283 return {
@@ -282,9 +292,11 @@ const findSubmittedDate = (record: PeachRecord): NullableDateTimeStrings => {
282292 * @returns A split date representing the decision date and time, or both null if not found
283293 */
284294const findDecisionDate = ( record : PeachRecord ) : NullableDateTimeStrings => {
285- for ( const pe of record . process_event_set ) {
286- if ( PEACH_DECISION_STATES . has ( pe . process . code ) ) {
287- return piesEventToDateParts ( pe . event ) ;
295+ if ( record . process_event_set ) {
296+ for ( const pe of record . process_event_set ) {
297+ if ( PEACH_DECISION_STATES . has ( pe . process . code ) ) {
298+ return piesEventToDateParts ( pe . event ) ;
299+ }
288300 }
289301 }
290302 return {
@@ -313,6 +325,8 @@ export function summarizePeachRecord(record: PeachRecord): PeachSummary | null {
313325 // // set set permit values based on process
314326 // }
315327
328+ if ( ! processEvent ) return null ;
329+
316330 const { stage, state } = generateStatus ( processEvent , record ) ;
317331
318332 if ( ! stage || ! state ) return null ;
0 commit comments