@@ -5,6 +5,10 @@ public class ChurchProfileDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; } = "";
|
||||
public string? NameZh { get; set; }
|
||||
public string? Phone { get; set; }
|
||||
public string? Email { get; set; }
|
||||
public string? Website { get; set; }
|
||||
public string? Address { get; set; }
|
||||
public string? City { get; set; }
|
||||
public string? State { get; set; }
|
||||
@@ -18,6 +22,10 @@ public class ChurchProfileDto
|
||||
public class UpdateChurchProfileRequest
|
||||
{
|
||||
[Required, MaxLength(200)] public string Name { get; set; } = "";
|
||||
[MaxLength(200)] public string? NameZh { get; set; }
|
||||
[MaxLength(50)] public string? Phone { get; set; }
|
||||
[MaxLength(200), EmailAddress] public string? Email { get; set; }
|
||||
[MaxLength(300)] public string? Website { get; set; }
|
||||
[MaxLength(500)] public string? Address { get; set; }
|
||||
[MaxLength(100)] public string? City { get; set; }
|
||||
[MaxLength(50)] public string? State { get; set; }
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace ROLAC.API.DTOs.Settings;
|
||||
|
||||
// ── Site settings ──────────────────────────────────────────────────────────
|
||||
|
||||
public class SiteSettingDto
|
||||
{
|
||||
public string SiteTitle { get; set; } = "";
|
||||
public string? SiteTitleZh { get; set; }
|
||||
public string DefaultLanguage { get; set; } = "en";
|
||||
public string TimeZone { get; set; } = "";
|
||||
public string DateFormat { get; set; } = "";
|
||||
public string Currency { get; set; } = "";
|
||||
}
|
||||
|
||||
public class UpdateSiteSettingRequest
|
||||
{
|
||||
[Required, MaxLength(200)] public string SiteTitle { get; set; } = "";
|
||||
[MaxLength(200)] public string? SiteTitleZh { get; set; }
|
||||
[Required, MaxLength(10)] public string DefaultLanguage { get; set; } = "en";
|
||||
[Required, MaxLength(100)] public string TimeZone { get; set; } = "";
|
||||
[Required, MaxLength(50)] public string DateFormat { get; set; } = "";
|
||||
[Required, MaxLength(10)] public string Currency { get; set; } = "";
|
||||
}
|
||||
|
||||
// ── Notification settings ──────────────────────────────────────────────────
|
||||
// Secrets are never returned. The DTO exposes only whether each secret is configured; the UI
|
||||
// shows a write-only field where a blank value on update means "keep the stored secret".
|
||||
|
||||
public class NotificationSettingDto
|
||||
{
|
||||
public bool EnableEmail { get; set; }
|
||||
public string SmtpHost { get; set; } = "";
|
||||
public int SmtpPort { get; set; }
|
||||
public bool SmtpUseSsl { get; set; }
|
||||
public string SmtpUser { get; set; } = "";
|
||||
public string FromAddress { get; set; } = "";
|
||||
public string FromName { get; set; } = "";
|
||||
public bool HasSmtpPassword { get; set; }
|
||||
|
||||
public bool EnableLine { get; set; }
|
||||
public bool HasLineChannelAccessToken { get; set; }
|
||||
public bool HasLineChannelSecret { get; set; }
|
||||
|
||||
/// <summary>Read-only webhook URL to register in the Line console (derived from the request).</summary>
|
||||
public string WebhookUrl { get; set; } = "";
|
||||
}
|
||||
|
||||
public class UpdateNotificationSettingRequest
|
||||
{
|
||||
public bool EnableEmail { get; set; }
|
||||
[MaxLength(200)] public string SmtpHost { get; set; } = "";
|
||||
[Range(0, 65535)] public int SmtpPort { get; set; } = 587;
|
||||
public bool SmtpUseSsl { get; set; } = true;
|
||||
[MaxLength(200)] public string SmtpUser { get; set; } = "";
|
||||
[MaxLength(200)] public string? FromAddress { get; set; }
|
||||
[MaxLength(200)] public string? FromName { get; set; }
|
||||
/// <summary>Blank = keep the stored password unchanged.</summary>
|
||||
[MaxLength(500)] public string? SmtpPassword { get; set; }
|
||||
|
||||
public bool EnableLine { get; set; }
|
||||
/// <summary>Blank = keep the stored token unchanged.</summary>
|
||||
[MaxLength(500)] public string? LineChannelAccessToken { get; set; }
|
||||
/// <summary>Blank = keep the stored secret unchanged.</summary>
|
||||
[MaxLength(200)] public string? LineChannelSecret { get; set; }
|
||||
}
|
||||
|
||||
// ── Test-send requests ─────────────────────────────────────────────────────
|
||||
|
||||
public class TestEmailRequest
|
||||
{
|
||||
/// <summary>Optional override; defaults to the current user's email when omitted.</summary>
|
||||
[MaxLength(200), EmailAddress] public string? ToAddress { get; set; }
|
||||
}
|
||||
|
||||
public class TestLineRequest
|
||||
{
|
||||
public int? MemberId { get; set; }
|
||||
public int? GroupId { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user