diff --git a/pages/Settings.tsx b/pages/Settings.tsx index f8d4688..9ba952a 100644 --- a/pages/Settings.tsx +++ b/pages/Settings.tsx @@ -250,7 +250,27 @@ export const SettingsPage: React.FC = () => { const handleDeleteUser = async (id: string) => { if(!window.confirm("Eliminare utente?")) return; await CondoService.deleteUser(id); setUsers(users.filter(u => u.id !== id)); }; const openAddNoticeModal = () => { setEditingNotice(null); setNoticeTargetMode('all'); setNoticeForm({ title: '', content: '', type: 'info', link: '', condoId: activeCondo?.id || '', active: true, targetFamilyIds: [] }); setShowNoticeModal(true); }; const openEditNoticeModal = (n: Notice) => { setEditingNotice(n); const isTargeted = n.targetFamilyIds && n.targetFamilyIds.length > 0; setNoticeTargetMode(isTargeted ? 'specific' : 'all'); setNoticeForm({ title: n.title, content: n.content, type: n.type, link: n.link || '', condoId: n.condoId, active: n.active, targetFamilyIds: n.targetFamilyIds || [] }); setShowNoticeModal(true); }; - const handleNoticeSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { const payload: Notice = { id: editingNotice ? editingNotice.id : '', ...noticeForm, targetFamilyIds: noticeTargetMode === 'all' ? [] : noticeForm.targetFamilyIds, date: editingNotice ? editingNotice.date : new Date().toISOString() }; await CondoService.saveNotice(payload); setNotices(await CondoService.getNotices(activeCondo?.id)); setShowNoticeModal(false); } catch (e) { console.error(e); } }; + + const handleNoticeSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + try { + // Format date to SQL compatible string: YYYY-MM-DD HH:mm:ss + // Safe for MySQL Strict Mode and PostgreSQL + const now = new Date(); + const sqlDate = now.toISOString().slice(0, 19).replace('T', ' '); + + const payload: Notice = { + id: editingNotice ? editingNotice.id : '', + ...noticeForm, + targetFamilyIds: noticeTargetMode === 'all' ? [] : noticeForm.targetFamilyIds, + date: editingNotice ? editingNotice.date : sqlDate + }; + await CondoService.saveNotice(payload); + setNotices(await CondoService.getNotices(activeCondo?.id)); + setShowNoticeModal(false); + } catch (e) { console.error(e); } + }; + const handleDeleteNotice = async (id: string) => { if(!window.confirm("Eliminare annuncio?")) return; await CondoService.deleteNotice(id); setNotices(notices.filter(n => n.id !== id)); }; const toggleNoticeActive = async (notice: Notice) => { try { const updated = { ...notice, active: !notice.active }; await CondoService.saveNotice(updated); setNotices(notices.map(n => n.id === notice.id ? updated : n)); } catch (e) { console.error(e); } }; const toggleNoticeFamilyTarget = (familyId: string) => { setNoticeForm(prev => { const current = prev.targetFamilyIds; if (current.includes(familyId)) { return { ...prev, targetFamilyIds: current.filter(id => id !== familyId) }; } else { return { ...prev, targetFamilyIds: [...current, familyId] }; } }); };