From ad07437118be93e7fb527674a7179480798abe99 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 10 Jul 2023 13:09:17 +0600 Subject: [PATCH] fix: add challenge completion timestamp Signed-off-by: Rakib Ansary --- src/util/DateUtil.ts | 11 ++++++----- src/util/LegacyMapper.ts | 4 ++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/util/DateUtil.ts b/src/util/DateUtil.ts index 262c108..0069bba 100644 --- a/src/util/DateUtil.ts +++ b/src/util/DateUtil.ts @@ -1,19 +1,20 @@ import dayjs from "dayjs"; import utc from "dayjs/plugin/utc"; + import timezone from "dayjs/plugin/timezone"; +import advanced from "dayjs/plugin/advancedFormat"; dayjs.extend(utc); dayjs.extend(timezone); +dayjs.extend(advanced); export const IFX_TIMEZONE = "America/New_York"; -export const dateFormatIfx = "YYYY-MM-DD HH:mm:ss"; +export const IFX_DATE_FORMAT = "YYYY-MM-DD HH:mm:ss"; class DateUtil { - public formatDateForIfx(date: string): string | undefined { + public formatDateForIfx(date: string, format: string = IFX_DATE_FORMAT): string | undefined { const parsedDate = dayjs(date); - return parsedDate.isValid() - ? parsedDate.tz(IFX_TIMEZONE).format(dateFormatIfx) - : undefined; + return parsedDate.isValid() ? parsedDate.tz(IFX_TIMEZONE).format(format) : undefined; } public isValidDate(date: string) { diff --git a/src/util/LegacyMapper.ts b/src/util/LegacyMapper.ts index 76879d8..c96874d 100644 --- a/src/util/LegacyMapper.ts +++ b/src/util/LegacyMapper.ts @@ -23,6 +23,7 @@ import { } from "@topcoder-framework/domain-acl"; import { getRequest } from "../api/v5Api"; import m2mToken from "../helpers/MachineToMachineToken"; +import DateUtil from "./DateUtil"; class LegacyMapper { // To be used on challenge:update calls that change state from New -> Draft @@ -243,6 +244,9 @@ class LegacyMapper { if (input.billing?.billingAccountId != null) { projectInfo[32] = input.billing?.billingAccountId!.toString(); } + if (input.status === ChallengeStatuses.Completed) { + projectInfo[21] = DateUtil.formatDateForIfx(new Date().toISOString(), "MM.DD.YYYY HH:mm z")!; // project_info 21 is Completion Timestamp; and it has a different date format + } const map = { ...projectInfo,