Untitled

 avatar
unknown
plain_text
2 months ago
1.3 kB
3
Indexable
function calculateTime(code: number, startTimestamp: number): string {
  const currentDate = getCurrentDateTimestamp();
  const { minutes } = timestampToMinutesSeconds(currentDate - startTimestamp);
  const minutesApp = minutes + 1; // renamed to camelCase

  // Extract match status codes to enum/constants for better maintainability
  const MatchStatusCode = {
    FIRST_HALF: 5,
    HALF_TIME: 6,
    SECOND_HALF: 7,
    PENALTIES: 13,
    EXTRA_TIME: 14,
    INTERRUPTED: 15,
    POSTPONED: 60,
    CANCELLED: 70,
    CANCELLED_ALT: 90,
    FULL_TIME: 100,
    AFTER_EXTRA_TIME: 110,
    AFTER_PENALTIES: 120,
  } as const;

  const codeMappings: Record<number, string | number> = {
    [MatchStatusCode.FIRST_HALF]: minutesApp > 45 ? '45+' : minutesApp,
    [MatchStatusCode.HALF_TIME]: 'HT',
    [MatchStatusCode.SECOND_HALF]: minutesApp + 45 > 90 ? '90+' : 45 + minutesApp,
    [MatchStatusCode.PENALTIES]: 'Penalties',
    [MatchStatusCode.EXTRA_TIME]: 'ET',
    [MatchStatusCode.INTERRUPTED]: 'interrupted',
    [MatchStatusCode.POSTPONED]: 'postponed',
    [MatchStatusCode.CANCELLED]: 'cancelled',
    [MatchStatusCode.CANCELLED_ALT]: 'cancelled',
    [MatchStatusCode.FULL_TIME]: 'FT',
    [MatchStatusCode.AFTER_EXTRA_TIME]: 'AET',
    [MatchStatusCode.AFTER_PENALTIES]: 'AP'
  };

  return codeMappings[code]?.toString() || '';
}
Editor is loading...
Leave a Comment