6f8b723d64
- Created a new SQL migration to establish the organization_email_templates table with necessary fields and default templates for common events. - Implemented CRUD operations for email templates in Rust, including listing, creating, updating, and deleting templates. - Developed a React component for managing email templates, allowing users to create, edit, and delete templates with a user-friendly interface.
117 lines
3.9 KiB
SQL
117 lines
3.9 KiB
SQL
-- Create organization_email_templates table
|
|
CREATE TABLE organization_email_templates (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_id UUID NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
template_key VARCHAR(100) NOT NULL,
|
|
display_name VARCHAR(255) NOT NULL,
|
|
subject_template TEXT NOT NULL,
|
|
body_template TEXT NOT NULL,
|
|
is_html BOOLEAN NOT NULL DEFAULT false,
|
|
is_enabled BOOLEAN NOT NULL DEFAULT true,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
UNIQUE(organization_id, template_key)
|
|
);
|
|
|
|
-- Create index for faster lookups
|
|
CREATE INDEX idx_org_email_templates_org_key ON organization_email_templates(organization_id, template_key);
|
|
|
|
-- Insert default templates for common system events
|
|
INSERT INTO organization_email_templates (organization_id, template_key, display_name, subject_template, body_template, is_html, is_enabled)
|
|
SELECT
|
|
o.id as organization_id,
|
|
'forum_reply' as template_key,
|
|
'Notificación de respuesta en foro' as display_name,
|
|
'Nueva respuesta en {{thread_title}}' as subject_template,
|
|
'Hola {{recipient_name}},
|
|
|
|
Ha recibido una nueva respuesta en el hilo "{{thread_title}}" por {{author_name}}.
|
|
|
|
Mensaje:
|
|
{{message_content}}
|
|
|
|
Ver hilo completo: {{thread_url}}
|
|
|
|
Saludos,
|
|
El equipo de {{organization_name}}' as body_template,
|
|
false as is_html,
|
|
true as is_enabled
|
|
FROM organizations o
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM organization_email_templates
|
|
WHERE organization_id = o.id AND template_key = 'forum_reply'
|
|
);
|
|
|
|
INSERT INTO organization_email_templates (organization_id, template_key, display_name, subject_template, body_template, is_html, is_enabled)
|
|
SELECT
|
|
o.id as organization_id,
|
|
'forum_thread' as template_key,
|
|
'Notificación de nuevo hilo en foro' as display_name,
|
|
'Nuevo hilo en foro: {{thread_title}}' as subject_template,
|
|
'Hola {{recipient_name}},
|
|
|
|
Se ha creado un nuevo hilo en el foro: "{{thread_title}}" por {{author_name}}.
|
|
|
|
Mensaje inicial:
|
|
{{message_content}}
|
|
|
|
Ver hilo: {{thread_url}}
|
|
|
|
Saludos,
|
|
El equipo de {{organization_name}}' as body_template,
|
|
false as is_html,
|
|
true as is_enabled
|
|
FROM organizations o
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM organization_email_templates
|
|
WHERE organization_id = o.id AND template_key = 'forum_thread'
|
|
);
|
|
|
|
INSERT INTO organization_email_templates (organization_id, template_key, display_name, subject_template, body_template, is_html, is_enabled)
|
|
SELECT
|
|
o.id as organization_id,
|
|
'welcome_student' as template_key,
|
|
'Bienvenida a estudiantes' as display_name,
|
|
'Bienvenido a {{organization_name}}' as subject_template,
|
|
'Hola {{student_name}},
|
|
|
|
Bienvenido a {{organization_name}}! Has sido inscrito en el curso "{{course_name}}".
|
|
|
|
Puedes acceder al curso aquí: {{course_url}}
|
|
|
|
Si tienes alguna pregunta, no dudes en contactarnos.
|
|
|
|
Saludos,
|
|
El equipo de {{organization_name}}' as body_template,
|
|
false as is_html,
|
|
true as is_enabled
|
|
FROM organizations o
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM organization_email_templates
|
|
WHERE organization_id = o.id AND template_key = 'welcome_student'
|
|
);
|
|
|
|
INSERT INTO organization_email_templates (organization_id, template_key, display_name, subject_template, body_template, is_html, is_enabled)
|
|
SELECT
|
|
o.id as organization_id,
|
|
'grade_notification' as template_key,
|
|
'Notificación de calificaciones' as display_name,
|
|
'Nueva calificación en {{lesson_name}}' as subject_template,
|
|
'Hola {{student_name}},
|
|
|
|
Has recibido una nueva calificación en la lección "{{lesson_name}}" del curso "{{course_name}}".
|
|
|
|
Calificación: {{grade}}/{{max_grade}}
|
|
Comentarios: {{comments}}
|
|
|
|
Ver detalles: {{lesson_url}}
|
|
|
|
Saludos,
|
|
El equipo de {{organization_name}}' as body_template,
|
|
false as is_html,
|
|
true as is_enabled
|
|
FROM organizations o
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM organization_email_templates
|
|
WHERE organization_id = o.id AND template_key = 'grade_notification'
|
|
); |