Agenda google, avisos globais, feriados + avisos globais, templates de email, configuracoes empresa, preview empresa.
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
// src/utils/googleCalendarLink.js
|
||||
// Gera uma URL de "Adicionar ao Google Calendar" via link template.
|
||||
// Não requer OAuth — abre o Google Calendar do usuário com o evento pré-preenchido.
|
||||
|
||||
/**
|
||||
* Formata uma data + horário no padrão exigido pelo Google Calendar: YYYYMMDDTHHmmss
|
||||
*
|
||||
* @param {Date|string} date - Objeto Date ou string ISO (YYYY-MM-DD)
|
||||
* @param {string} hhmm - Horário no formato "HH:MM"
|
||||
* @returns {string} - Ex: "20260318T100000"
|
||||
*/
|
||||
export function formatGCalDate (date, hhmm = '00:00') {
|
||||
const d = date instanceof Date ? date : new Date(date)
|
||||
const yyyy = d.getFullYear()
|
||||
const mm = String(d.getMonth() + 1).padStart(2, '0')
|
||||
const dd = String(d.getDate()).padStart(2, '0')
|
||||
const [hh, min] = String(hhmm).split(':')
|
||||
return `${yyyy}${mm}${dd}T${String(hh || '00').padStart(2, '0')}${String(min || '00').padStart(2, '0')}00`
|
||||
}
|
||||
|
||||
/**
|
||||
* Soma minutos a um horário "HH:MM" e retorna o novo "HH:MM".
|
||||
*
|
||||
* @param {string} hhmm - Horário base "HH:MM"
|
||||
* @param {number} minutes - Minutos a somar
|
||||
* @returns {string} - Ex: "11:00"
|
||||
*/
|
||||
export function addMinutesToHHMM (hhmm, minutes) {
|
||||
const [h, m] = String(hhmm || '00:00').split(':').map(Number)
|
||||
const total = h * 60 + m + (minutes || 0)
|
||||
const endH = Math.floor(total / 60) % 24
|
||||
const endM = total % 60
|
||||
return `${String(endH).padStart(2, '0')}:${String(endM).padStart(2, '0')}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Gera a URL do Google Calendar com o evento pré-preenchido.
|
||||
*
|
||||
* @param {object} event
|
||||
* @param {string} event.title - Título do evento
|
||||
* @param {string} event.description - Descrição (aceita texto simples)
|
||||
* @param {string} event.location - Local ou "Online"
|
||||
* @param {string} event.start - Data/hora início no formato YYYYMMDDTHHmmss
|
||||
* @param {string} event.end - Data/hora fim no formato YYYYMMDDTHHmmss
|
||||
* @returns {string} URL válida para abrir no Google Calendar
|
||||
*/
|
||||
export function generateGoogleCalendarLink ({ title, description, location, start, end }) {
|
||||
const params = new URLSearchParams({
|
||||
action: 'TEMPLATE',
|
||||
text: title || '',
|
||||
dates: `${start}/${end}`,
|
||||
details: description || '',
|
||||
location: location || '',
|
||||
ctz: 'America/Sao_Paulo',
|
||||
})
|
||||
|
||||
return `https://www.google.com/calendar/render?${params.toString()}`
|
||||
}
|
||||
Reference in New Issue
Block a user