diff --git a/API/ROLAC.API/DTOs/Members/CreateMemberRequest.cs b/API/ROLAC.API/DTOs/Members/CreateMemberRequest.cs new file mode 100644 index 0000000..4762b08 --- /dev/null +++ b/API/ROLAC.API/DTOs/Members/CreateMemberRequest.cs @@ -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; } +} diff --git a/API/ROLAC.API/DTOs/Members/MemberDto.cs b/API/ROLAC.API/DTOs/Members/MemberDto.cs new file mode 100644 index 0000000..477108b --- /dev/null +++ b/API/ROLAC.API/DTOs/Members/MemberDto.cs @@ -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; } +} diff --git a/API/ROLAC.API/DTOs/Members/MemberListItemDto.cs b/API/ROLAC.API/DTOs/Members/MemberListItemDto.cs new file mode 100644 index 0000000..58a5a07 --- /dev/null +++ b/API/ROLAC.API/DTOs/Members/MemberListItemDto.cs @@ -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 +} diff --git a/API/ROLAC.API/DTOs/Members/UpdateMemberRequest.cs b/API/ROLAC.API/DTOs/Members/UpdateMemberRequest.cs new file mode 100644 index 0000000..457f6c8 --- /dev/null +++ b/API/ROLAC.API/DTOs/Members/UpdateMemberRequest.cs @@ -0,0 +1,2 @@ +namespace ROLAC.API.DTOs.Members; +public class UpdateMemberRequest : CreateMemberRequest { } diff --git a/API/ROLAC.API/DTOs/Shared/PagedResult.cs b/API/ROLAC.API/DTOs/Shared/PagedResult.cs new file mode 100644 index 0000000..f850ced --- /dev/null +++ b/API/ROLAC.API/DTOs/Shared/PagedResult.cs @@ -0,0 +1,10 @@ +namespace ROLAC.API.DTOs.Shared; + +public class PagedResult +{ + public List 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); +} diff --git a/API/ROLAC.API/DTOs/Users/CreateUserRequest.cs b/API/ROLAC.API/DTOs/Users/CreateUserRequest.cs new file mode 100644 index 0000000..fac16a4 --- /dev/null +++ b/API/ROLAC.API/DTOs/Users/CreateUserRequest.cs @@ -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 Roles { get; set; } = []; + public string LanguagePreference { get; set; } = "en"; +} diff --git a/API/ROLAC.API/DTOs/Users/CreateUserResult.cs b/API/ROLAC.API/DTOs/Users/CreateUserResult.cs new file mode 100644 index 0000000..03aeb98 --- /dev/null +++ b/API/ROLAC.API/DTOs/Users/CreateUserResult.cs @@ -0,0 +1,7 @@ +namespace ROLAC.API.DTOs.Users; + +public class CreateUserResult +{ + public string UserId { get; set; } = ""; + public string TempPassword { get; set; } = ""; +} diff --git a/API/ROLAC.API/DTOs/Users/UpdateUserRequest.cs b/API/ROLAC.API/DTOs/Users/UpdateUserRequest.cs new file mode 100644 index 0000000..4508d31 --- /dev/null +++ b/API/ROLAC.API/DTOs/Users/UpdateUserRequest.cs @@ -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 Roles { get; set; } = []; + public bool IsActive { get; set; } + public string LanguagePreference { get; set; } = "en"; +} diff --git a/API/ROLAC.API/DTOs/Users/UserDto.cs b/API/ROLAC.API/DTOs/Users/UserDto.cs new file mode 100644 index 0000000..7874dce --- /dev/null +++ b/API/ROLAC.API/DTOs/Users/UserDto.cs @@ -0,0 +1,2 @@ +namespace ROLAC.API.DTOs.Users; +public class UserDto : UserListItemDto { } diff --git a/API/ROLAC.API/DTOs/Users/UserListItemDto.cs b/API/ROLAC.API/DTOs/Users/UserListItemDto.cs new file mode 100644 index 0000000..31a8f19 --- /dev/null +++ b/API/ROLAC.API/DTOs/Users/UserListItemDto.cs @@ -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 Roles { get; set; } = []; + public bool IsActive { get; set; } + public string LanguagePreference { get; set; } = "en"; + public DateTime? LastLoginAt { get; set; } + public DateTime CreatedAt { get; set; } +}