using System; using Email.Data; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Email.Data.Migrations { /// public partial class InitialSchema : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.EnsureSchema( name: MigrationConstants.SchemaName); migrationBuilder.CreateTable( name: "Templates", schema: MigrationConstants.SchemaName, columns: table => new { Key = table.Column(type: "nvarchar(128)", maxLength: 128, nullable: false), Language = table.Column(type: "nvarchar(8)", maxLength: 8, nullable: false), Value = table.Column(type: "nvarchar(max)", nullable: false), Description = table.Column(type: "nvarchar(500)", maxLength: 500, nullable: false, defaultValue: ""), UpdatedAt = table.Column(type: "datetime2", nullable: false, defaultValueSql: "SYSUTCDATETIME()"), OperatorCopy = table.Column(type: "nvarchar(256)", maxLength: 256, nullable: false, defaultValue: "") }, constraints: table => { table.PrimaryKey("PK_Templates", x => new { x.Key, x.Language }); }); Seed(migrationBuilder); } private static void Seed(MigrationBuilder m) { void Row(string key, string lang, string value, string description = "") => m.InsertData("Templates", ["Key", "Language", "Value", "Description"], [key, lang, value, description], MigrationConstants.SchemaName); // Match result email — subject Row("email.match.subject", "en", "MyAi.ro CV Match: {{score}}% - {{jobLabel}}", "Subject for the CV match result email"); Row("email.match.subject", "ro", "MyAi.ro Potrivire CV: {{score}}% - {{jobLabel}}", "Subiect email rezultat potrivire CV"); // Match result email — body (HTML formatted) Row("email.match.body", "en", @"

CV Match Report

CV ID {{cvDocumentId}}
Job {{jobLabel}}
URL {{jobUrl}}
Score {{score}}%

Summary

{{summary}}

Strengths

{{strengths}}

Gaps

{{gaps}}

Recommendations

{{recommendations}}
", "Body for the CV match result email (HTML formatted)"); Row("email.match.body", "ro", @"

Report Potrivire CV

ID Document CV {{cvDocumentId}}
Job {{jobLabel}}
URL {{jobUrl}}
Scor {{score}}%

Rezumat

{{summary}}

Puncte Forte

{{strengths}}

Lipsuri

{{gaps}}

Recomandări

{{recommendations}}
", "Corpul emailului pentru rezultatul potrivirii CV (format HTML)"); // Match result email — job search CTA footer (HTML formatted) Row("email.match.job-search-footer", "en", @"

Want to find more jobs matching your CV?

Search Jobs

(link valid for {{expiryDays}} days)

", "Job search CTA appended to match result email (HTML formatted)"); Row("email.match.job-search-footer", "ro", @"

Vrei să găsești mai multe joburi potrivite CV-ului tău?

Caută Joburi

(link valabil {{expiryDays}} zile)

", "CTA cautare joburi adaugat la emailul de potrivire CV (format HTML)"); // Job search results email — subject Row("email.search-results.subject", "en", "MyAi.ro: {{count}} jobs matching your CV", "Subject for job search results email"); Row("email.search-results.subject", "ro", "MyAi.ro: {{count}} joburi potrivite CV-ului tau", "Subiect email rezultate cautare joburi"); // Job search results email — body preamble (items appended in code) - HTML formatted Row("email.search-results.body", "en", @"

Job Search Results

MyAi.ro found {{count}} jobs matching your CV:

{{items}}
", "Body preamble for job search results email (HTML formatted)"); Row("email.search-results.body", "ro", @"

Rezultate Căutare Joburi

MyAi.ro a găsit {{count}} joburi potrivite CV-ului tău:

{{items}}
", "Corpul emailului de rezultate cautare joburi (format HTML)"); // Job search results email — no results found - HTML formatted Row("email.search-results.empty", "en", @"

No jobs found
MyAi.ro found no jobs matching your CV at this moment. Please try again later or update your CV to improve your match results.

", "No results message for job search results email (HTML formatted)"); Row("email.search-results.empty", "ro", @"

Niciun job găsit
MyAi.ro nu a găsit joburi potrivite CV-ului tău în acest moment. Te rugăm să încerci din nou mai târziu sau să-ți actualizezi CV-ul pentru a obține rezultate mai bune.

", "Mesaj fara rezultate pentru emailul de cautare joburi (format HTML)"); // HTML job-search start page messages Row("html.job-search.started.title", "en", "Job search started", "Title for job search started page"); Row("html.job-search.started.message", "en", "Your job search has started. Results will be sent to your email shortly.", "Message for job search started page"); Row("html.job-search.started.title", "ro", "Căutare joburi pornită", "Titlu pagina cautare joburi pornita"); Row("html.job-search.started.message", "ro", "Căutarea joburilor a început. Rezultatele vor fi trimise pe email în scurt timp.", "Mesaj pagina cautare joburi pornita"); Row("html.job-search.already-used.title", "en", "Link already used", "Title for already-used page"); Row("html.job-search.already-used.message", "en", "This job search link has already been used.", "Message for already-used page"); Row("html.job-search.already-used.title", "ro", "Link deja folosit", "Titlu pagina link deja folosit"); Row("html.job-search.already-used.message", "ro", "Acest link de cautare joburi a fost deja folosit.", "Mesaj pagina link deja folosit"); Row("html.job-search.expired.title", "en", "Link expired", "Title for expired link page"); Row("html.job-search.expired.message", "en", "This job search link has expired. Please request a new CV match to get a fresh link.", "Message for expired link page"); Row("html.job-search.expired.title", "ro", "Link expirat", "Titlu pagina link expirat"); Row("html.job-search.expired.message", "ro", "Acest link de cautare joburi a expirat. Solicita o noua potrivire CV pentru a primi un link nou.", "Mesaj pagina link expirat"); Row("html.job-search.invalid.title", "en", "Invalid link", "Title for invalid link page"); Row("html.job-search.invalid.message", "en", "This job search link is not valid.", "Message for invalid link page"); Row("html.job-search.invalid.title", "ro", "Link invalid", "Titlu pagina link invalid"); Row("html.job-search.invalid.message", "ro", "Acest link de cautare joburi nu este valid.", "Mesaj pagina link invalid"); Row("html.job-search.error.title", "en", "Error", "Title for error page"); Row("html.job-search.error.message", "en", "An error occurred. Please try again later.", "Message for error page"); Row("html.job-search.error.title", "ro", "Eroare", "Titlu pagina eroare"); Row("html.job-search.error.message", "ro", "A apărut o eroare. Te rugăm să încerci din nou mai târziu.", "Mesaj pagina eroare"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Templates", schema: MigrationConstants.SchemaName); } } }