refactor: unify date handling with utility functions

- Replaced direct date manipulations with utility functions like `getToday`, `parseDate`, and `createDateFromParts` across various components and services for consistency.
- Updated date initialization in `JiraAnalyticsService`, `BackupService`, and `DailyClient` to improve clarity and maintainability.
- Enhanced date parsing in forms and API routes to ensure proper handling of date strings.
This commit is contained in:
Julien Froidefond
2025-09-21 13:04:34 +02:00
parent c3c1d24fa2
commit 4ba6ba2c0b
23 changed files with 117 additions and 68 deletions

View File

@@ -1,4 +1,5 @@
import { JiraAnalytics } from './types';
import { getToday, subtractDays, parseDate } from './date-utils';
export type PeriodFilter = '7d' | '30d' | '3m' | 'current';
@@ -9,18 +10,18 @@ export function filterAnalyticsByPeriod(
analytics: JiraAnalytics,
period: PeriodFilter
): JiraAnalytics {
const now = new Date();
const now = getToday();
let cutoffDate: Date;
switch (period) {
case '7d':
cutoffDate = new Date(now.getTime() - (7 * 24 * 60 * 60 * 1000));
cutoffDate = subtractDays(now, 7);
break;
case '30d':
cutoffDate = new Date(now.getTime() - (30 * 24 * 60 * 60 * 1000));
cutoffDate = subtractDays(now, 30);
break;
case '3m':
cutoffDate = new Date(now.getTime() - (90 * 24 * 60 * 60 * 1000));
cutoffDate = subtractDays(now, 90);
break;
case 'current':
default:
@@ -56,7 +57,7 @@ function filterCurrentSprintAnalytics(analytics: JiraAnalytics): JiraAnalytics {
function filterAnalyticsByDate(analytics: JiraAnalytics, cutoffDate: Date): JiraAnalytics {
// Filtrer l'historique des sprints
const filteredSprintHistory = analytics.velocityMetrics.sprintHistory.filter(sprint => {
const sprintEndDate = new Date(sprint.endDate);
const sprintEndDate = parseDate(sprint.endDate);
return sprintEndDate >= cutoffDate;
});