feat: add PagedResult, Member DTOs, and User DTOs
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace ROLAC.API.DTOs.Members;
|
||||
|
||||
public class CreateMemberRequest
|
||||
{
|
||||
[Required, MaxLength(100)] public string FirstName_en { get; set; } = "";
|
||||
[Required, MaxLength(100)] public string LastName_en { get; set; } = "";
|
||||
[MaxLength(100)] public string? NickName { get; set; }
|
||||
[MaxLength(100)] public string? FirstName_zh { get; set; }
|
||||
[MaxLength(100)] public string? LastName_zh { get; set; }
|
||||
[MaxLength(10)] public string? Gender { get; set; }
|
||||
public DateOnly? DateOfBirth { get; set; }
|
||||
public DateOnly? BaptismDate { get; set; }
|
||||
[MaxLength(200)] public string? BaptismChurch { get; set; }
|
||||
[MaxLength(200), EmailAddress] public string? Email { get; set; }
|
||||
[MaxLength(30)] public string? PhoneCell { get; set; }
|
||||
[MaxLength(30)] public string? PhoneHome { get; set; }
|
||||
[MaxLength(500)] public string? Address { get; set; }
|
||||
[MaxLength(100)] public string? City { get; set; }
|
||||
[MaxLength(50)] public string? State { get; set; }
|
||||
[MaxLength(20)] public string? ZipCode { get; set; }
|
||||
[MaxLength(100)] public string Country { get; set; } = "USA";
|
||||
[MaxLength(20)] public string Status { get; set; } = "Member";
|
||||
[MaxLength(10)] public string LanguagePreference { get; set; } = "en";
|
||||
public DateOnly? JoinDate { get; set; }
|
||||
public string? Notes { get; set; }
|
||||
public int? FamilyUnitId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
namespace ROLAC.API.DTOs.Members;
|
||||
|
||||
public class MemberDto : MemberListItemDto
|
||||
{
|
||||
public string? Gender { get; set; }
|
||||
public DateOnly? DateOfBirth { get; set; }
|
||||
public DateOnly? BaptismDate { get; set; }
|
||||
public string? BaptismChurch { get; set; }
|
||||
public string? PhoneHome { get; set; }
|
||||
public string? Address { get; set; }
|
||||
public string? City { get; set; }
|
||||
public string? State { get; set; }
|
||||
public string? ZipCode { get; set; }
|
||||
public string Country { get; set; } = "USA";
|
||||
public string? PhotoBlobPath { get; set; }
|
||||
public string LanguagePreference { get; set; } = "en";
|
||||
public string? Notes { get; set; }
|
||||
public int? FamilyUnitId { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
public DateTimeOffset UpdatedAt { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
namespace ROLAC.API.DTOs.Members;
|
||||
|
||||
public class MemberListItemDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string FirstName_en { get; set; } = "";
|
||||
public string LastName_en { get; set; } = "";
|
||||
public string? NickName { get; set; }
|
||||
public string? FirstName_zh { get; set; }
|
||||
public string? LastName_zh { get; set; }
|
||||
public string Status { get; set; } = "";
|
||||
public string? Email { get; set; }
|
||||
public string? PhoneCell { get; set; }
|
||||
public DateOnly? JoinDate { get; set; }
|
||||
public string? LinkedUserId { get; set; } // null = no user account
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
namespace ROLAC.API.DTOs.Members;
|
||||
public class UpdateMemberRequest : CreateMemberRequest { }
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace ROLAC.API.DTOs.Shared;
|
||||
|
||||
public class PagedResult<T>
|
||||
{
|
||||
public List<T> Items { get; set; } = [];
|
||||
public int TotalCount { get; set; }
|
||||
public int Page { get; set; }
|
||||
public int PageSize { get; set; }
|
||||
public int TotalPages => (int)Math.Ceiling((double)TotalCount / PageSize);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace ROLAC.API.DTOs.Users;
|
||||
|
||||
public class CreateUserRequest
|
||||
{
|
||||
[Required] public int MemberId { get; set; }
|
||||
[Required, EmailAddress] public string Email { get; set; } = "";
|
||||
[Required, MinLength(1)] public List<string> Roles { get; set; } = [];
|
||||
public string LanguagePreference { get; set; } = "en";
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace ROLAC.API.DTOs.Users;
|
||||
|
||||
public class CreateUserResult
|
||||
{
|
||||
public string UserId { get; set; } = "";
|
||||
public string TempPassword { get; set; } = "";
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
namespace ROLAC.API.DTOs.Users;
|
||||
|
||||
public class UpdateUserRequest
|
||||
{
|
||||
[Required, EmailAddress] public string Email { get; set; } = "";
|
||||
[Required] public List<string> Roles { get; set; } = [];
|
||||
public bool IsActive { get; set; }
|
||||
public string LanguagePreference { get; set; } = "en";
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
namespace ROLAC.API.DTOs.Users;
|
||||
public class UserDto : UserListItemDto { }
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace ROLAC.API.DTOs.Users;
|
||||
|
||||
public class UserListItemDto
|
||||
{
|
||||
public string Id { get; set; } = "";
|
||||
public string Email { get; set; } = "";
|
||||
public int? MemberId { get; set; }
|
||||
public string? MemberDisplayName { get; set; }
|
||||
public List<string> Roles { get; set; } = [];
|
||||
public bool IsActive { get; set; }
|
||||
public string LanguagePreference { get; set; } = "en";
|
||||
public DateTime? LastLoginAt { get; set; }
|
||||
public DateTime CreatedAt { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user