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 — scan summary block (keywords + providers used) Row("email.search-results.scan-summary", "en", @"
Keywords used: {{keywordsHtml}}
Providers scanned: {{providers}}
", "Scan summary block prepended to job search results email (HTML formatted)"); Row("email.search-results.scan-summary", "ro", @"
Cuvinte cheie folosite: {{keywordsHtml}}
Furnizori scanați: {{providers}}
", "Bloc rezumat scanare adaugat la emailul de rezultate cautare joburi (format HTML)"); // Job search results email — single job result item card Row("email.search-results.item", "en", @"
{{index}}. {{jobTitle}} {{score}}% match [{{providerName}}]
{{jobUrl}} {{summary}}
", "Single job result card in job search results email (HTML formatted)"); Row("email.search-results.item", "ro", @"
{{index}}. {{jobTitle}} {{score}}% potrivire [{{providerName}}]
{{jobUrl}} {{summary}}
", "Card job individual in emailul 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)"); } /// protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Templates", schema: MigrationConstants.SchemaName); } } }