forked from RiseUP/riseup_squad_03
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
export function parseLocalDate(dateString) {
|
|
if (!dateString || typeof dateString !== 'string') return null
|
|
|
|
const parts = dateString.split('T')[0].split('-')
|
|
if (parts.length === 3) {
|
|
const [year, month, day] = parts.map(Number)
|
|
return new Date(year, month - 1, day)
|
|
}
|
|
|
|
const parsed = new Date(dateString)
|
|
return Number.isNaN(parsed.getTime()) ? null : parsed
|
|
}
|
|
|
|
export function formatLocalDateInput(date) {
|
|
const year = date.getFullYear()
|
|
const month = String(date.getMonth() + 1).padStart(2, '0')
|
|
const day = String(date.getDate()).padStart(2, '0')
|
|
return `${year}-${month}-${day}`
|
|
}
|
|
|
|
export function getTimeSortValue(timeString) {
|
|
const normalized = String(timeString || '').trim()
|
|
const match = normalized.match(/^(\d{1,2}):(\d{2})/)
|
|
|
|
if (!match) return Number.MAX_SAFE_INTEGER
|
|
|
|
return Number(match[1]) * 60 + Number(match[2])
|
|
}
|
|
|
|
export function sortAppointmentsByTime(appointments) {
|
|
return [...appointments].sort((a, b) => {
|
|
const difference = getTimeSortValue(a.time) - getTimeSortValue(b.time)
|
|
|
|
if (difference !== 0) {
|
|
return difference
|
|
}
|
|
|
|
return String(a.patient || '').localeCompare(String(b.patient || ''), 'pt-BR')
|
|
})
|
|
}
|