2a0a5f737d
- GetAllEmailTemplatesQuery + handler (new GetAll use case) - IEmailTemplateRepository.GetAllAsync + EF implementation - AdminTemplatesController: Index, Create, Edit, Save, Delete - EmailTemplateEditViewModel with IsNew/PageTitle helpers - Views/_ViewStart, _ViewImports, Shared/_Layout (Bootstrap 5) - Shared/_EditorLayout (chained layout for all edit screens) - Views/AdminTemplates/Index (table with edit/delete actions) - Views/AdminTemplates/Edit (card form, readonly composite key on edit) - Program.cs: AddControllersWithViews, UseStaticFiles, MapDefaultControllerRoute Ref: IT-634 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
32 lines
803 B
C#
32 lines
803 B
C#
using System.ComponentModel.DataAnnotations;
|
|
|
|
namespace HrynCo.NotificationService.Web.Controllers.Admin.ViewModels;
|
|
|
|
public class EmailTemplateEditViewModel
|
|
{
|
|
public Guid? Id { get; set; }
|
|
|
|
[Required]
|
|
public string ServiceName { get; set; } = "";
|
|
|
|
[Required]
|
|
public string Key { get; set; } = "";
|
|
|
|
[Required]
|
|
public string LanguageCode { get; set; } = "";
|
|
|
|
[Required]
|
|
public string Subject { get; set; } = "";
|
|
|
|
[Required]
|
|
public string HtmlBody { get; set; } = "";
|
|
|
|
public string TextBody { get; set; } = "";
|
|
|
|
// JSON array: [{"name":"UserName","required":true}, ...]
|
|
public string VariablesJson { get; set; } = "[]";
|
|
|
|
public bool IsNew => Id == null;
|
|
public string PageTitle => IsNew ? "Create Email Template" : "Edit Email Template";
|
|
}
|