Saving notes and username fixes
This commit is contained in:
102
server/api/notes/email/[sermonId].post.ts
Normal file
102
server/api/notes/email/[sermonId].post.ts
Normal file
@@ -0,0 +1,102 @@
|
||||
import { getSermonNote, getSermonBySlug, getUserByUsername } from '~/server/utils/database'
|
||||
import { getUserFromCookie } from '~/server/utils/auth'
|
||||
import { sendSermonNotesEmail } from '~/server/utils/email'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const username = getUserFromCookie(event)
|
||||
|
||||
if (!username) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
message: 'Unauthorized'
|
||||
})
|
||||
}
|
||||
|
||||
const sermonId = parseInt(event.context.params?.sermonId || '')
|
||||
|
||||
if (!sermonId) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Invalid sermon ID'
|
||||
})
|
||||
}
|
||||
|
||||
// Get user info
|
||||
const user = getUserByUsername(username)
|
||||
if (!user || !user.email) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'User email not found'
|
||||
})
|
||||
}
|
||||
|
||||
// Get sermon info
|
||||
const db = getDatabase()
|
||||
const sermon = db.prepare('SELECT * FROM sermons WHERE id = ?').get(sermonId) as any
|
||||
|
||||
if (!sermon) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'Sermon not found'
|
||||
})
|
||||
}
|
||||
|
||||
// Get user's notes
|
||||
const noteRecord = getSermonNote(user.id!, sermonId)
|
||||
const userNotes = noteRecord?.notes || ''
|
||||
|
||||
// Format bible references
|
||||
let bibleReferencesText = ''
|
||||
try {
|
||||
const refs = JSON.parse(sermon.bible_references)
|
||||
bibleReferencesText = refs.map((ref: any) =>
|
||||
`${ref.reference} (${ref.version})\n${ref.text}`
|
||||
).join('\n\n')
|
||||
} catch {
|
||||
bibleReferencesText = sermon.bible_references
|
||||
}
|
||||
|
||||
// Format date
|
||||
const formatDate = (dateString: string) => {
|
||||
const date = new Date(dateString + 'T00:00:00')
|
||||
return date.toLocaleDateString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric'
|
||||
})
|
||||
}
|
||||
|
||||
const dates = [sermon.date]
|
||||
if (sermon.dates) {
|
||||
try {
|
||||
const additionalDates = JSON.parse(sermon.dates)
|
||||
dates.push(...additionalDates)
|
||||
} catch {}
|
||||
}
|
||||
const sermonDate = dates.map(formatDate).join(' - ')
|
||||
|
||||
// Send email
|
||||
try {
|
||||
await sendSermonNotesEmail(
|
||||
user.email,
|
||||
user.first_name || user.username,
|
||||
sermon.title,
|
||||
sermonDate,
|
||||
bibleReferencesText,
|
||||
sermon.personal_appliance,
|
||||
sermon.pastors_challenge,
|
||||
userNotes
|
||||
)
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Notes emailed successfully'
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to send email:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
message: 'Failed to send email'
|
||||
})
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user