import React from 'react'; import { useLanguage } from '@/contexts/LanguageContext'; import { format } from 'date-fns'; import { Separator } from '@/components/ui/separator'; import { Badge } from '@/components/ui/badge'; import { MaintenanceItem } from '@/services/types/maintenance.types'; import { User } from '@/services/userService'; interface MaintenanceDetailSectionsProps { maintenance: MaintenanceItem; assignedUsers: User[]; } export const MaintenanceDetailSections = ({ maintenance, assignedUsers }: MaintenanceDetailSectionsProps) => { const { t } = useLanguage(); const formatDateTime = (dateString: string) => { try { return format(new Date(dateString), 'PPP p'); } catch (error) { return dateString; } }; const calculateDuration = (start: string, end: string): string => { try { const startTime = new Date(start); const endTime = new Date(end); const durationMs = endTime.getTime() - startTime.getTime(); // Convert to hours and minutes const hours = Math.floor(durationMs / (1000 * 60 * 60)); const minutes = Math.floor((durationMs % (1000 * 60 * 60)) / (1000 * 60)); if (hours === 0) { return `${minutes}m`; } else if (minutes === 0) { return `${hours}h`; } else { return `${hours}h ${minutes}m`; } } catch (error) { return "N/A"; } }; const affectedServices = typeof maintenance.affected === 'string' ? maintenance.affected.split(',').map(item => item.trim()) : []; return (
{maintenance.title}
Reference ID: {maintenance.id}
Generated on {format(new Date(), 'PPP')}
{formatDateTime(maintenance.start_time)}
{formatDateTime(maintenance.end_time)}
{calculateDuration(maintenance.start_time, maintenance.end_time)}
{maintenance.field}
{maintenance.created_by || t('notSpecified')}
{maintenance.notification_channel_name || t('notSpecified')}
{formatDateTime(maintenance.created)}
{formatDateTime(maintenance.updated)}
{maintenance.notify_subscribers === 'yes' ? t('subscribersWillBeNotified') : t('noNotifications')}
This document is confidential and intended for internal use only.