Agenda google, avisos globais, feriados + avisos globais, templates de email, configuracoes empresa, preview empresa.

This commit is contained in:
Leonardo
2026-03-18 15:47:37 -03:00
parent d6d2fe29d1
commit 29ed349cf2
21 changed files with 5366 additions and 41 deletions
+58
View File
@@ -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()}`
}