diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationRequestDto.cs new file mode 100644 index 0000000..0ce5d5f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationRequestDto.cs @@ -0,0 +1,57 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceCreationRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance creation operations + * Last Edit Notes: Initial implementation for alliance creation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance creation operations + /// + public class AllianceCreationRequestDto + { + /// + /// Name for the new alliance + /// + [Required] + [StringLength(100, MinimumLength = 3)] + public string AllianceName { get; set; } = string.Empty; + + /// + /// Alliance description or motto + /// + [StringLength(500)] + public string? Description { get; set; } + + /// + /// Alliance tag/abbreviation + /// + [StringLength(10, MinimumLength = 2)] + public string? AllianceTag { get; set; } + + /// + /// Initial alliance settings and configuration + /// + public Dictionary? InitialSettings { get; set; } + + /// + /// Recruitment settings (open, invite-only, etc.) + /// + public Dictionary? RecruitmentSettings { get; set; } + + /// + /// Initial member invitations + /// + public List? InitialInvitations { get; set; } + + /// + /// Alliance focus areas (military, economic, diplomatic) + /// + public List? FocusAreas { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationResponseDto.cs new file mode 100644 index 0000000..6e51f2c --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceCreationResponseDto.cs @@ -0,0 +1,76 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceCreationResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance creation operations + * Last Edit Notes: Initial implementation for new alliance creation results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance creation operations + /// + public class AllianceCreationResponseDto + { + /// + /// Newly created alliance identifier + /// + public int AllianceId { get; set; } + + /// + /// Alliance name that was created + /// + public string AllianceName { get; set; } = string.Empty; + + /// + /// Success status of alliance creation + /// + public bool Success { get; set; } + + /// + /// Creation result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Initial alliance settings and configuration + /// + public Dictionary InitialSettings { get; set; } = new(); + + /// + /// Leader assignment information + /// + public Dictionary LeaderInfo { get; set; } = new(); + + /// + /// Alliance creation timestamp + /// + public DateTime CreatedAt { get; set; } + + /// + /// Initial member information + /// + public List> InitialMembers { get; set; } = new(); + + /// + /// Starting alliance level and experience + /// + public Dictionary StartingLevel { get; set; } = new(); + + /// + /// Available alliance features based on level + /// + public List AvailableFeatures { get; set; } = new(); + + /// + /// Resource costs for alliance creation + /// + public Dictionary CreationCosts { get; set; } = new(); + + /// + /// Initial alliance treasury and resource allocation + /// + public Dictionary InitialTreasury { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceInfoResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceInfoResponseDto.cs new file mode 100644 index 0000000..61a1a2b --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceInfoResponseDto.cs @@ -0,0 +1,81 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceInfoResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance information retrieval + * Last Edit Notes: Initial implementation for alliance profile and status information + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance information retrieval + /// + public class AllianceInfoResponseDto + { + /// + /// Alliance identifier + /// + public int AllianceId { get; set; } + + /// + /// Alliance name + /// + public string AllianceName { get; set; } = string.Empty; + + /// + /// Alliance description + /// + public string Description { get; set; } = string.Empty; + + /// + /// Alliance leader information + /// + public Dictionary LeaderInfo { get; set; } = new(); + + /// + /// Current member count + /// + public int MemberCount { get; set; } + + /// + /// Maximum member capacity + /// + public int MaxMembers { get; set; } + + /// + /// Alliance level and experience + /// + public Dictionary AllianceLevel { get; set; } = new(); + + /// + /// Alliance power rating + /// + public long TotalPower { get; set; } + + /// + /// Current coalition memberships + /// + public List> CoalitionMemberships { get; set; } = new(); + + /// + /// Alliance territory holdings + /// + public Dictionary Territory { get; set; } = new(); + + /// + /// Research tree progress + /// + public Dictionary ResearchProgress { get; set; } = new(); + + /// + /// Alliance recruitment settings + /// + public Dictionary RecruitmentSettings { get; set; } = new(); + + /// + /// When alliance information was last updated + /// + public DateTime LastUpdated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateRequestDto.cs new file mode 100644 index 0000000..3fd015f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateRequestDto.cs @@ -0,0 +1,67 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceUpdateRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance update operations + * Last Edit Notes: Initial implementation for alliance modification input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance update operations + /// + public class AllianceUpdateRequestDto + { + /// + /// Updated alliance name + /// + [StringLength(100, MinimumLength = 3)] + public string? AllianceName { get; set; } + + /// + /// Updated alliance description + /// + [StringLength(500)] + public string? Description { get; set; } + + /// + /// Updated alliance tag/abbreviation + /// + [StringLength(10, MinimumLength = 2)] + public string? AllianceTag { get; set; } + + /// + /// Updated recruitment settings + /// + public Dictionary? RecruitmentSettings { get; set; } + + /// + /// Updated alliance configuration + /// + public Dictionary? AllianceSettings { get; set; } + + /// + /// Updated focus areas + /// + public List? FocusAreas { get; set; } + + /// + /// Updated leadership structure + /// + public Dictionary? LeadershipStructure { get; set; } + + /// + /// Updated member roles and permissions + /// + public Dictionary? RolePermissions { get; set; } + + /// + /// Reason for the update (for audit trail) + /// + [StringLength(200)] + public string? UpdateReason { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateResponseDto.cs new file mode 100644 index 0000000..d74f497 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceUpdateResponseDto.cs @@ -0,0 +1,66 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceUpdateResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance update operations + * Last Edit Notes: Initial implementation for alliance modification results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance update operations + /// + public class AllianceUpdateResponseDto + { + /// + /// Alliance identifier that was updated + /// + public int AllianceId { get; set; } + + /// + /// Success status of the update operation + /// + public bool Success { get; set; } + + /// + /// Update result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Updated alliance information + /// + public Dictionary UpdatedInfo { get; set; } = new(); + + /// + /// List of fields that were modified + /// + public List ModifiedFields { get; set; } = new(); + + /// + /// Previous values before update (for audit trail) + /// + public Dictionary PreviousValues { get; set; } = new(); + + /// + /// New values after update + /// + public Dictionary NewValues { get; set; } = new(); + + /// + /// Player who performed the update + /// + public int UpdatedById { get; set; } + + /// + /// Timestamp when update was performed + /// + public DateTime UpdatedAt { get; set; } + + /// + /// Any validation warnings or notifications + /// + public List Warnings { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingRequestDto.cs new file mode 100644 index 0000000..ab7bf33 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingRequestDto.cs @@ -0,0 +1,77 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceVotingRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance voting operations and ballot creation + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance voting operations and ballot creation + /// + public class AllianceVotingRequestDto + { + /// + /// Vote action (CreateVote, CastVote, ModifyVote, CancelVote) + /// + [Required] + [StringLength(50)] + public string Action { get; set; } = string.Empty; + + /// + /// Subject of the vote + /// + [Required] + [StringLength(200)] + public string VoteSubject { get; set; } = string.Empty; + + /// + /// Type of vote (Policy, Leadership, War, Alliance, Coalition) + /// + [Required] + [StringLength(50)] + public string VoteType { get; set; } = string.Empty; + + /// + /// Available voting options + /// + public List VotingOptions { get; set; } = new(); + + /// + /// Vote choice (for casting votes) + /// + public int? VoteChoice { get; set; } + + /// + /// Detailed description of the vote + /// + [StringLength(2000)] + public string? VoteDescription { get; set; } + + /// + /// Voting duration in hours + /// + [Range(24, 168)] + public int VotingDurationHours { get; set; } = 48; + + /// + /// Minimum participation required (percentage) + /// + [Range(25, 100)] + public int MinimumParticipation { get; set; } = 50; + + /// + /// Roles eligible to vote + /// + public List EligibleRoles { get; set; } = new(); + + /// + /// Vote parameters and special conditions + /// + public Dictionary? VoteParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingResponseDto.cs new file mode 100644 index 0000000..e25aba1 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceVotingResponseDto.cs @@ -0,0 +1,96 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceVotingResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance voting processes and results + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance voting processes and results + /// + public class AllianceVotingResponseDto + { + /// + /// Unique identifier for the vote + /// + public int VoteId { get; set; } + + /// + /// Alliance conducting the vote + /// + public int AllianceId { get; set; } + + /// + /// Subject of the vote + /// + public string VoteSubject { get; set; } = string.Empty; + + /// + /// Type of vote (Policy, Leadership, War, Alliance, Coalition) + /// + public string VoteType { get; set; } = string.Empty; + + /// + /// Available voting options + /// + public List> VotingOptions { get; set; } = new(); + + /// + /// Current vote tallies + /// + public Dictionary VoteTallies { get; set; } = new(); + + /// + /// Members who have voted + /// + public List> Voters { get; set; } = new(); + + /// + /// Total eligible voters + /// + public int EligibleVoters { get; set; } + + /// + /// Votes cast so far + /// + public int VotesCast { get; set; } + + /// + /// Voting participation percentage + /// + public decimal ParticipationPercentage { get; set; } + + /// + /// Time remaining for voting + /// + public TimeSpan? VotingTimeRemaining { get; set; } + + /// + /// Minimum votes required for valid decision + /// + public int MinimumVotes { get; set; } + + /// + /// Vote status (Active, Completed, Failed, Cancelled) + /// + public string VoteStatus { get; set; } = string.Empty; + + /// + /// Vote results (if completed) + /// + public Dictionary? VoteResults { get; set; } + + /// + /// When the vote started + /// + public DateTime VoteStarted { get; set; } + + /// + /// When this vote information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/BuildingConstructionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/BuildingConstructionResponseDto.cs new file mode 100644 index 0000000..e472994 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/BuildingConstructionResponseDto.cs @@ -0,0 +1,53 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\BuildingConstructionRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance building construction operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance building construction operations + /// + public class BuildingConstructionRequestDto + { + /// + /// Type of building to construct + /// + [Required] + [StringLength(100)] + public string BuildingType { get; set; } = string.Empty; + + /// + /// Target level for construction + /// + [Required] + [Range(1, 50)] + public int TargetLevel { get; set; } + + /// + /// Initial resource contribution + /// + public Dictionary ResourceContribution { get; set; } = new(); + + /// + /// Priority level for this construction (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Whether to use alliance treasury funds + /// + public bool UseTreasuryFunds { get; set; } = false; + + /// + /// Construction parameters and options + /// + public Dictionary? ConstructionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionRequestDto.cs new file mode 100644 index 0000000..f7ecea8 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionRequestDto.cs @@ -0,0 +1,68 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionDissolutionRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for coalition dissolution operations + * Last Edit Notes: Initial implementation for coalition termination input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for coalition dissolution operations + /// + public class CoalitionDissolutionRequestDto + { + /// + /// Reason for dissolving the coalition + /// + [Required] + [StringLength(300)] + public string DissolutionReason { get; set; } = string.Empty; + + /// + /// Resource distribution plan for member alliances + /// + public Dictionary? ResourceDistribution { get; set; } + + /// + /// Whether to notify all members before dissolution + /// + public bool NotifyMembers { get; set; } = true; + + /// + /// Grace period before dissolution takes effect (hours) + /// + [Range(0, 168)] // 0 to 7 days + public int GracePeriodHours { get; set; } = 24; + + /// + /// Final message to coalition members + /// + [StringLength(500)] + public string? FinalMessage { get; set; } + + /// + /// Whether to preserve coalition statistics for historical records + /// + public bool PreserveStatistics { get; set; } = true; + + /// + /// Emergency dissolution (immediate, bypasses grace period) + /// + public bool EmergencyDissolution { get; set; } = false; + + /// + /// Confirmation that the requesting player understands the consequences + /// + [Required] + public bool ConfirmDissolution { get; set; } + + /// + /// Additional dissolution parameters + /// + public Dictionary? DissolutionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionResponseDto.cs new file mode 100644 index 0000000..97a13ee --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionDissolutionResponseDto.cs @@ -0,0 +1,76 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionDissolutionResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for coalition dissolution operations + * Last Edit Notes: Initial implementation for coalition termination results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for coalition dissolution operations + /// + public class CoalitionDissolutionResponseDto + { + /// + /// Coalition identifier that was dissolved + /// + public string CoalitionId { get; set; } = string.Empty; + + /// + /// Coalition name that was dissolved + /// + public string CoalitionName { get; set; } = string.Empty; + + /// + /// Success status of dissolution operation + /// + public bool Success { get; set; } + + /// + /// Dissolution result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Final member alliances that were part of the coalition + /// + public List> FormerMemberAlliances { get; set; } = new(); + + /// + /// Resource distribution results after dissolution + /// + public Dictionary ResourceDistribution { get; set; } = new(); + + /// + /// Final coalition statistics and achievements + /// + public Dictionary FinalStatistics { get; set; } = new(); + + /// + /// Dissolution timestamp + /// + public DateTime DissolvedAt { get; set; } + + /// + /// Player who initiated the dissolution + /// + public int DissolvedById { get; set; } + + /// + /// Reason for dissolution + /// + public string DissolutionReason { get; set; } = string.Empty; + + /// + /// Alliance statuses after coalition dissolution + /// + public List> PostDissolutionStatus { get; set; } = new(); + + /// + /// Any cleanup actions performed during dissolution + /// + public List CleanupActions { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationRequestDto.cs new file mode 100644 index 0000000..8b1763e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationRequestDto.cs @@ -0,0 +1,64 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionFormationRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for coalition formation operations + * Last Edit Notes: Initial implementation for multi-alliance coalition creation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for coalition formation operations + /// + public class CoalitionFormationRequestDto + { + /// + /// Name for the new coalition + /// + [Required] + [StringLength(100, MinimumLength = 3)] + public string CoalitionName { get; set; } = string.Empty; + + /// + /// Alliances to invite into the coalition + /// + [Required] + [MinLength(2)] + public List InvitedAlliances { get; set; } = new(); + + /// + /// Coalition purpose and objectives + /// + [StringLength(500)] + public string? Purpose { get; set; } + + /// + /// Coalition leadership structure preferences + /// + public Dictionary? LeadershipStructure { get; set; } + + /// + /// Resource sharing and coordination settings + /// + public Dictionary? CoordinationSettings { get; set; } + + /// + /// Expected coalition duration (temporary, permanent, event-based) + /// + public Dictionary? Duration { get; set; } + + /// + /// Coalition formation conditions and requirements + /// + public Dictionary? FormationConditions { get; set; } + + /// + /// Invitation message to other alliances + /// + [StringLength(300)] + public string? InvitationMessage { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationResponseDto.cs new file mode 100644 index 0000000..468abe5 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionFormationResponseDto.cs @@ -0,0 +1,71 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionFormationResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for coalition formation operations + * Last Edit Notes: Initial implementation for multi-alliance coalition creation results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for coalition formation operations + /// + public class CoalitionFormationResponseDto + { + /// + /// Newly formed coalition identifier + /// + public string CoalitionId { get; set; } = string.Empty; + + /// + /// Coalition name that was created + /// + public string CoalitionName { get; set; } = string.Empty; + + /// + /// Success status of coalition formation + /// + public bool Success { get; set; } + + /// + /// Formation result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Member alliances that joined the coalition + /// + public List> MemberAlliances { get; set; } = new(); + + /// + /// Coalition leadership structure + /// + public Dictionary LeadershipStructure { get; set; } = new(); + + /// + /// Coalition objectives and purpose + /// + public Dictionary CoalitionObjectives { get; set; } = new(); + + /// + /// Shared resources and coordination settings + /// + public Dictionary CoordinationSettings { get; set; } = new(); + + /// + /// Coalition formation timestamp + /// + public DateTime FormedAt { get; set; } + + /// + /// Alliance that initiated the coalition + /// + public int InitiatingAllianceId { get; set; } + + /// + /// Expected coalition duration or permanence + /// + public Dictionary Duration { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementRequestDto.cs new file mode 100644 index 0000000..2f55a37 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementRequestDto.cs @@ -0,0 +1,65 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionManagementRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for coalition management operations + * Last Edit Notes: Initial implementation for coalition administration and coordination input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for coalition management operations + /// + public class CoalitionManagementRequestDto + { + /// + /// Management action to perform + /// + [Required] + public string Action { get; set; } = string.Empty; + + /// + /// Target alliance for management action (if applicable) + /// + public int? TargetAllianceId { get; set; } + + /// + /// Updated coalition settings + /// + public Dictionary? CoalitionSettings { get; set; } + + /// + /// Leadership role assignments + /// + public Dictionary? LeadershipAssignments { get; set; } + + /// + /// Member alliance permissions and roles + /// + public Dictionary? MemberPermissions { get; set; } + + /// + /// Coordination and resource sharing settings + /// + public Dictionary? CoordinationSettings { get; set; } + + /// + /// Coalition objectives updates + /// + public Dictionary? UpdatedObjectives { get; set; } + + /// + /// Reason for the management action + /// + [StringLength(300)] + public string? ManagementReason { get; set; } + + /// + /// Additional parameters for specific management actions + /// + public Dictionary? ActionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementResponseDto.cs new file mode 100644 index 0000000..9cfda75 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionManagementResponseDto.cs @@ -0,0 +1,66 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionManagementResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for coalition management operations + * Last Edit Notes: Initial implementation for coalition administration and coordination results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for coalition management operations + /// + public class CoalitionManagementResponseDto + { + /// + /// Coalition identifier being managed + /// + public string CoalitionId { get; set; } = string.Empty; + + /// + /// Management operation success status + /// + public bool Success { get; set; } + + /// + /// Management operation result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Updated coalition information after management action + /// + public Dictionary UpdatedCoalitionInfo { get; set; } = new(); + + /// + /// Current member alliances and their status + /// + public List> MemberAlliances { get; set; } = new(); + + /// + /// Updated leadership assignments + /// + public Dictionary Leadership { get; set; } = new(); + + /// + /// Coalition coordination settings + /// + public Dictionary CoordinationSettings { get; set; } = new(); + + /// + /// Management action timestamp + /// + public DateTime ManagedAt { get; set; } + + /// + /// Player who performed the management action + /// + public int ManagedById { get; set; } + + /// + /// Any notifications or alerts generated by the management action + /// + public List Notifications { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneRequestDto.cs new file mode 100644 index 0000000..e84a452 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneRequestDto.cs @@ -0,0 +1,64 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ContestedZoneRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for contested zone operations and challenges + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for contested zone operations and challenges + /// + public class ContestedZoneRequestDto + { + /// + /// Zone to target for contest + /// + [Required] + public int ZoneId { get; set; } + + /// + /// Type of zone operation (Challenge, Reinforce, Withdraw, Scout) + /// + [Required] + [StringLength(50)] + public string OperationType { get; set; } = string.Empty; + + /// + /// Forces to commit to the operation + /// + public Dictionary ForceCommitment { get; set; } = new(); + + /// + /// Coalition allies to invite for support + /// + public List CoalitionAllies { get; set; } = new(); + + /// + /// Battle strategy and tactics + /// + [StringLength(500)] + public string? Strategy { get; set; } + + /// + /// Priority level for this operation (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Maximum duration for the operation in hours + /// + [Range(1, 168)] + public int MaxDurationHours { get; set; } = 24; + + /// + /// Operation parameters and special conditions + /// + public Dictionary? OperationParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneResponseDto.cs new file mode 100644 index 0000000..149cde7 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ContestedZoneResponseDto.cs @@ -0,0 +1,81 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ContestedZoneResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for contested zone information and battles + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for contested zone information and battles + /// + public class ContestedZoneResponseDto + { + /// + /// Unique identifier for the contested zone + /// + public int ZoneId { get; set; } + + /// + /// Zone name or identifier + /// + public string ZoneName { get; set; } = string.Empty; + + /// + /// Current controlling alliance + /// + public int? ControllingAllianceId { get; set; } + + /// + /// Name of controlling alliance + /// + public string? ControllingAllianceName { get; set; } + + /// + /// Alliances currently contesting this zone + /// + public List> ContestingAlliances { get; set; } = new(); + + /// + /// Zone coordinates and boundaries + /// + public Dictionary ZoneCoordinates { get; set; } = new(); + + /// + /// Resources and benefits provided by controlling this zone + /// + public Dictionary ZoneBenefits { get; set; } = new(); + + /// + /// Active battles in this zone + /// + public List> ActiveBattles { get; set; } = new(); + + /// + /// Control percentage for each alliance (0-100) + /// + public Dictionary ControlPercentages { get; set; } = new(); + + /// + /// Time remaining in contest period + /// + public TimeSpan? ContestTimeRemaining { get; set; } + + /// + /// Zone contest status (Open, Contested, Locked, Cooldown) + /// + public string ContestStatus { get; set; } = string.Empty; + + /// + /// Historical control changes + /// + public List> ControlHistory { get; set; } = new(); + + /// + /// When this zone information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionRequestDto.cs new file mode 100644 index 0000000..a2189eb --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionRequestDto.cs @@ -0,0 +1,67 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\HostSelectionRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for KvK host selection and democratic voting + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for KvK host selection and democratic voting + /// + public class HostSelectionRequestDto + { + /// + /// KvK event to select host for + /// + [Required] + public int KvKEventId { get; set; } + + /// + /// Action to take (Nominate, Vote, Withdraw, Challenge) + /// + [Required] + [StringLength(50)] + public string Action { get; set; } = string.Empty; + + /// + /// Alliance being nominated or voted for + /// + public int? TargetAllianceId { get; set; } + + /// + /// Vote choice (for voting actions) + /// + public int? VoteChoice { get; set; } + + /// + /// Justification for nomination or vote + /// + [StringLength(1000)] + public string? Justification { get; set; } + + /// + /// Coalition members supporting this action + /// + public List CoalitionSupport { get; set; } = new(); + + /// + /// Qualifications being presented (for nominations) + /// + public Dictionary? Qualifications { get; set; } + + /// + /// Proposed leadership structure + /// + public Dictionary? LeadershipStructure { get; set; } + + /// + /// Selection parameters and preferences + /// + public Dictionary? SelectionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionResponseDto.cs new file mode 100644 index 0000000..9ecaf0c --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/HostSelectionResponseDto.cs @@ -0,0 +1,86 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\HostSelectionResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for KvK host selection and democratic leadership + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for KvK host selection and democratic leadership + /// + public class HostSelectionResponseDto + { + /// + /// Unique identifier for the host selection process + /// + public int SelectionId { get; set; } + + /// + /// KvK event this selection is for + /// + public int KvKEventId { get; set; } + + /// + /// Current host alliance (if selected) + /// + public int? HostAllianceId { get; set; } + + /// + /// Name of the host alliance + /// + public string? HostAllianceName { get; set; } + + /// + /// Alliances eligible to be hosts + /// + public List> EligibleHosts { get; set; } = new(); + + /// + /// Current voting results + /// + public Dictionary VotingResults { get; set; } = new(); + + /// + /// Alliances that have voted + /// + public List> VotingParticipants { get; set; } = new(); + + /// + /// Selection criteria and requirements + /// + public Dictionary SelectionCriteria { get; set; } = new(); + + /// + /// Time remaining for voting + /// + public TimeSpan? VotingTimeRemaining { get; set; } + + /// + /// Minimum votes required for selection + /// + public int MinimumVotes { get; set; } + + /// + /// Selection status (Nominating, Voting, Completed, Failed) + /// + public string SelectionStatus { get; set; } = string.Empty; + + /// + /// Host responsibilities and privileges + /// + public Dictionary HostResponsibilities { get; set; } = new(); + + /// + /// When the selection process started + /// + public DateTime SelectionStarted { get; set; } + + /// + /// When this selection information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionRequestDto.cs new file mode 100644 index 0000000..e87b58b --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionRequestDto.cs @@ -0,0 +1,70 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\LeadershipElectionRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance leadership election operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance leadership election operations + /// + public class LeadershipElectionRequestDto + { + /// + /// Position to elect (Leader, Officer, Diplomat, etc.) + /// + [Required] + [StringLength(50)] + public string Position { get; set; } = string.Empty; + + /// + /// Election action (StartElection, Nominate, Vote, Withdraw, Challenge) + /// + [Required] + [StringLength(50)] + public string Action { get; set; } = string.Empty; + + /// + /// Player being nominated or voted for + /// + public int? TargetPlayerId { get; set; } + + /// + /// Vote choice (for voting actions) + /// + public int? VoteChoice { get; set; } + + /// + /// Campaign platform or justification + /// + [StringLength(2000)] + public string? Platform { get; set; } + + /// + /// Qualifications being presented + /// + public Dictionary? Qualifications { get; set; } + + /// + /// Election duration in hours + /// + [Range(24, 168)] + public int ElectionDurationHours { get; set; } = 72; + + /// + /// Minimum participation required for valid election (percentage) + /// + [Range(25, 100)] + public int MinimumParticipation { get; set; } = 50; + + /// + /// Election parameters and special rules + /// + public Dictionary? ElectionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionResponseDto.cs new file mode 100644 index 0000000..7c8c36d --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/LeadershipElectionResponseDto.cs @@ -0,0 +1,96 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\LeadershipElectionResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance leadership election results and status + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance leadership election results and status + /// + public class LeadershipElectionResponseDto + { + /// + /// Unique identifier for the election + /// + public int ElectionId { get; set; } + + /// + /// Alliance conducting the election + /// + public int AllianceId { get; set; } + + /// + /// Position being elected (Leader, Officer, Diplomat, etc.) + /// + public string Position { get; set; } = string.Empty; + + /// + /// Current elected leader (if election completed) + /// + public int? ElectedPlayerId { get; set; } + + /// + /// Name of the elected player + /// + public string? ElectedPlayerName { get; set; } + + /// + /// Candidates in the election + /// + public List> Candidates { get; set; } = new(); + + /// + /// Current vote tallies + /// + public Dictionary VoteTallies { get; set; } = new(); + + /// + /// Members who have voted + /// + public List> VotingMembers { get; set; } = new(); + + /// + /// Total eligible voters + /// + public int EligibleVoters { get; set; } + + /// + /// Votes cast so far + /// + public int VotesCast { get; set; } + + /// + /// Voting participation percentage + /// + public decimal ParticipationPercentage { get; set; } + + /// + /// Time remaining for voting + /// + public TimeSpan? VotingTimeRemaining { get; set; } + + /// + /// Election status (Nominating, Voting, Completed, Contested, Cancelled) + /// + public string ElectionStatus { get; set; } = string.Empty; + + /// + /// Election rules and requirements + /// + public Dictionary ElectionRules { get; set; } = new(); + + /// + /// When the election started + /// + public DateTime ElectionStarted { get; set; } + + /// + /// When this election information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberActivityResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberActivityResponseDto.cs new file mode 100644 index 0000000..fbab042 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberActivityResponseDto.cs @@ -0,0 +1,81 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MemberActivityResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance member activity tracking and statistics + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance member activity tracking and statistics + /// + public class MemberActivityResponseDto + { + /// + /// Alliance ID for member activity + /// + public int AllianceId { get; set; } + + /// + /// Total alliance member count + /// + public int TotalMembers { get; set; } + + /// + /// Active members in last 24 hours + /// + public int ActiveMembers24h { get; set; } + + /// + /// Active members in last 7 days + /// + public int ActiveMembers7d { get; set; } + + /// + /// Detailed member activity statistics + /// + public List> MemberActivities { get; set; } = new(); + + /// + /// Activity categories and participation + /// + public Dictionary ActivityCategories { get; set; } = new(); + + /// + /// Top contributors by activity type + /// + public Dictionary>> TopContributors { get; set; } = new(); + + /// + /// Inactive members requiring attention + /// + public List> InactiveMembers { get; set; } = new(); + + /// + /// Activity trends over time + /// + public Dictionary>> ActivityTrends { get; set; } = new(); + + /// + /// Alliance activity score (0-100) + /// + public decimal AllianceActivityScore { get; set; } + + /// + /// Activity benchmarks and goals + /// + public Dictionary ActivityBenchmarks { get; set; } = new(); + + /// + /// Time period for this activity report + /// + public Dictionary ReportPeriod { get; set; } = new(); + + /// + /// When this activity report was generated + /// + public DateTime ReportGenerated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalRequestDto.cs new file mode 100644 index 0000000..eab4b05 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalRequestDto.cs @@ -0,0 +1,65 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MemberRemovalRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance member removal operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance member removal operations + /// + public class MemberRemovalRequestDto + { + /// + /// Player to remove from alliance + /// + [Required] + public int PlayerId { get; set; } + + /// + /// Type of removal (Kick, Ban, Voluntary, Inactive, Disciplinary) + /// + [Required] + [StringLength(50)] + public string RemovalType { get; set; } = string.Empty; + + /// + /// Reason for removal + /// + [Required] + [StringLength(500)] + public string RemovalReason { get; set; } = string.Empty; + + /// + /// Whether to notify the player of removal + /// + public bool NotifyPlayer { get; set; } = true; + + /// + /// Cooldown period before player can rejoin (hours) + /// + [Range(0, 8760)] // 0 to 1 year + public int RejoinCooldownHours { get; set; } = 0; + + /// + /// Whether to blacklist player from future applications + /// + public bool BlacklistPlayer { get; set; } = false; + + /// + /// How to handle player's alliance assets + /// + [StringLength(50)] + public string AssetHandling { get; set; } = "ReturnToPlayer"; + + /// + /// Additional removal parameters and conditions + /// + public Dictionary? RemovalParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalResponseDto.cs new file mode 100644 index 0000000..fc486a7 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MemberRemovalResponseDto.cs @@ -0,0 +1,96 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MemberRemovalResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance member removal operations and results + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance member removal operations and results + /// + public class MemberRemovalResponseDto + { + /// + /// Unique identifier for the removal operation + /// + public int RemovalId { get; set; } + + /// + /// Alliance performing the removal + /// + public int AllianceId { get; set; } + + /// + /// Player being removed + /// + public int PlayerId { get; set; } + + /// + /// Name of the player being removed + /// + public string PlayerName { get; set; } = string.Empty; + + /// + /// Type of removal (Kick, Ban, Voluntary, Inactive, Disciplinary) + /// + public string RemovalType { get; set; } = string.Empty; + + /// + /// Officer who initiated the removal + /// + public int InitiatedBy { get; set; } + + /// + /// Name of the officer who initiated removal + /// + public string InitiatedByName { get; set; } = string.Empty; + + /// + /// Reason for removal + /// + public string RemovalReason { get; set; } = string.Empty; + + /// + /// Player's alliance statistics at time of removal + /// + public Dictionary PlayerStats { get; set; } = new(); + + /// + /// Resources or assets to be handled + /// + public Dictionary AssetHandling { get; set; } = new(); + + /// + /// Impact on ongoing alliance operations + /// + public Dictionary OperationalImpact { get; set; } = new(); + + /// + /// Cooldown period before player can rejoin + /// + public TimeSpan? RejoinCooldown { get; set; } + + /// + /// Whether removal was successful + /// + public bool RemovalSuccessful { get; set; } + + /// + /// Any errors or issues during removal + /// + public string? RemovalErrors { get; set; } + + /// + /// Post-removal alliance statistics + /// + public Dictionary PostRemovalStats { get; set; } = new(); + + /// + /// When the removal was completed + /// + public DateTime RemovalCompleted { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingRequestDto.cs new file mode 100644 index 0000000..6516c5e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingRequestDto.cs @@ -0,0 +1,69 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MembershipProcessingRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance membership processing operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance membership processing operations + /// + public class MembershipProcessingRequestDto + { + /// + /// Alliance to apply to (for applications) + /// + public int? AllianceId { get; set; } + + /// + /// Processing action (Apply, Review, Approve, Reject, Withdraw) + /// + [Required] + [StringLength(50)] + public string Action { get; set; } = string.Empty; + + /// + /// Application ID (for review actions) + /// + public int? ApplicationId { get; set; } + + /// + /// Player being processed (for officer actions) + /// + public int? PlayerId { get; set; } + + /// + /// Application message from player + /// + [StringLength(1000)] + public string? ApplicationMessage { get; set; } + + /// + /// Review decision (for officer reviews) + /// + [StringLength(50)] + public string? ReviewDecision { get; set; } + + /// + /// Review comments from officer + /// + [StringLength(500)] + public string? ReviewComments { get; set; } + + /// + /// Priority level for processing (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Processing parameters and special conditions + /// + public Dictionary? ProcessingParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingResponseDto.cs new file mode 100644 index 0000000..f98b469 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/MembershipProcessingResponseDto.cs @@ -0,0 +1,91 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\MembershipProcessingResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance membership processing and application status + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance membership processing and application status + /// + public class MembershipProcessingResponseDto + { + /// + /// Unique identifier for the membership application + /// + public int ApplicationId { get; set; } + + /// + /// Alliance being applied to + /// + public int AllianceId { get; set; } + + /// + /// Player applying for membership + /// + public int PlayerId { get; set; } + + /// + /// Player name + /// + public string PlayerName { get; set; } = string.Empty; + + /// + /// Application status (Pending, UnderReview, Approved, Rejected, Withdrawn) + /// + public string ApplicationStatus { get; set; } = string.Empty; + + /// + /// Player statistics and qualifications + /// + public Dictionary PlayerStats { get; set; } = new(); + + /// + /// Application message from player + /// + public string ApplicationMessage { get; set; } = string.Empty; + + /// + /// Requirements met by the applicant + /// + public Dictionary RequirementsMet { get; set; } = new(); + + /// + /// Alliance requirements for membership + /// + public Dictionary AllianceRequirements { get; set; } = new(); + + /// + /// Reviews from alliance officers + /// + public List> OfficerReviews { get; set; } = new(); + + /// + /// Processing timeline and history + /// + public List> ProcessingHistory { get; set; } = new(); + + /// + /// Estimated time for decision + /// + public TimeSpan? EstimatedDecisionTime { get; set; } + + /// + /// Reason for rejection (if applicable) + /// + public string? RejectionReason { get; set; } + + /// + /// When the application was submitted + /// + public DateTime ApplicationSubmitted { get; set; } + + /// + /// When this application information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementResponseDto.cs new file mode 100644 index 0000000..204457f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementResponseDto.cs @@ -0,0 +1,81 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResearchAdvancementResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance research advancement operations + * Last Edit Notes: Initial implementation for research tree progression results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance research advancement operations + /// + public class ResearchAdvancementResponseDto + { + /// + /// Alliance identifier conducting research + /// + public int AllianceId { get; set; } + + /// + /// Research advancement success status + /// + public bool Success { get; set; } + + /// + /// Advancement result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Research project that was advanced + /// + public Dictionary ResearchProject { get; set; } = new(); + + /// + /// New research level achieved + /// + public int NewLevel { get; set; } + + /// + /// Previous research level + /// + public int PreviousLevel { get; set; } + + /// + /// Benefits unlocked by this advancement + /// + public List> UnlockedBenefits { get; set; } = new(); + + /// + /// Resource costs for the advancement + /// + public Dictionary AdvancementCosts { get; set; } = new(); + + /// + /// Alliance members who contributed to research + /// + public List> Contributors { get; set; } = new(); + + /// + /// Next available research opportunities + /// + public List> NextResearchOptions { get; set; } = new(); + + /// + /// Research advancement timestamp + /// + public DateTime AdvancedAt { get; set; } + + /// + /// Estimated time for next research level + /// + public TimeSpan? EstimatedNextAdvancement { get; set; } + + /// + /// Alliance-wide bonuses gained from advancement + /// + public Dictionary AllianceBonuses { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchBenefitsResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchBenefitsResponseDto.cs new file mode 100644 index 0000000..aa878c0 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchBenefitsResponseDto.cs @@ -0,0 +1,76 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResearchBenefitsResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance research benefits information + * Last Edit Notes: Initial implementation for research tree benefit and bonus retrieval + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance research benefits information + /// + public class ResearchBenefitsResponseDto + { + /// + /// Alliance identifier receiving benefits + /// + public int AllianceId { get; set; } + + /// + /// All active research benefits by category + /// + public Dictionary>> ActiveBenefits { get; set; } = new(); + + /// + /// Military research benefits and bonuses + /// + public Dictionary MilitaryBenefits { get; set; } = new(); + + /// + /// Economic research benefits and bonuses + /// + public Dictionary EconomicBenefits { get; set; } = new(); + + /// + /// Technology research benefits and bonuses + /// + public Dictionary TechnologyBenefits { get; set; } = new(); + + /// + /// Diplomatic and social research benefits + /// + public Dictionary DiplomaticBenefits { get; set; } = new(); + + /// + /// Territory and construction research benefits + /// + public Dictionary TerritoryBenefits { get; set; } = new(); + + /// + /// Coalition-specific research bonuses + /// + public Dictionary CoalitionBonuses { get; set; } = new(); + + /// + /// Member-specific benefits distribution + /// + public Dictionary> MemberBenefits { get; set; } = new(); + + /// + /// Total research power and effectiveness ratings + /// + public Dictionary EffectivenessRatings { get; set; } = new(); + + /// + /// Upcoming research benefits that can be unlocked + /// + public List> UpcomingBenefits { get; set; } = new(); + + /// + /// When benefits information was last calculated + /// + public DateTime LastCalculated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchStatusResponseDto.cs new file mode 100644 index 0000000..b896fe0 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchStatusResponseDto.cs @@ -0,0 +1,86 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResearchStatusResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance research status information + * Last Edit Notes: Initial implementation for research tree progress and status retrieval + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance research status information + /// + public class ResearchStatusResponseDto + { + /// + /// Alliance identifier for research status + /// + public int AllianceId { get; set; } + + /// + /// Overall alliance research power level + /// + public int OverallResearchLevel { get; set; } + + /// + /// Total research points accumulated + /// + public long TotalResearchPoints { get; set; } + + /// + /// Available research points for spending + /// + public long AvailableResearchPoints { get; set; } + + /// + /// Military research tree progress + /// + public Dictionary MilitaryResearch { get; set; } = new(); + + /// + /// Economic research tree progress + /// + public Dictionary EconomicResearch { get; set; } = new(); + + /// + /// Technology research tree progress + /// + public Dictionary TechnologyResearch { get; set; } = new(); + + /// + /// Diplomatic research tree progress + /// + public Dictionary DiplomaticResearch { get; set; } = new(); + + /// + /// Territory and construction research progress + /// + public Dictionary TerritoryResearch { get; set; } = new(); + + /// + /// Currently active research projects + /// + public List> ActiveProjects { get; set; } = new(); + + /// + /// Research projects available for starting + /// + public List> AvailableProjects { get; set; } = new(); + + /// + /// Member contribution statistics + /// + public Dictionary> MemberContributions { get; set; } = new(); + + /// + /// Research rate and efficiency bonuses + /// + public Dictionary ResearchBonuses { get; set; } = new(); + + /// + /// When research status was last updated + /// + public DateTime LastUpdated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingRequestDto.cs new file mode 100644 index 0000000..a12c03d --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingRequestDto.cs @@ -0,0 +1,80 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResourceTradingRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance resource trading operations and market participation + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance resource trading operations and market participation + /// + public class ResourceTradingRequestDto + { + /// + /// Type of trade (Direct, Market, Coalition, Emergency) + /// + [Required] + [StringLength(50)] + public string TradeType { get; set; } = string.Empty; + + /// + /// Trading action (CreateOffer, AcceptOffer, CounterOffer, CancelTrade) + /// + [Required] + [StringLength(50)] + public string TradeAction { get; set; } = string.Empty; + + /// + /// Resources to offer in trade + /// + public Dictionary OfferedResources { get; set; } = new(); + + /// + /// Resources to request in trade + /// + public Dictionary RequestedResources { get; set; } = new(); + + /// + /// Target alliance for direct trades + /// + public int? TargetAllianceId { get; set; } + + /// + /// Existing trade ID (for modifications) + /// + public int? ExistingTradeId { get; set; } + + /// + /// Maximum acceptable exchange rate variance (percentage) + /// + [Range(0, 100)] + public decimal MaxRateVariance { get; set; } = 10; + + /// + /// Trade duration in hours + /// + [Range(1, 168)] + public int TradeDurationHours { get; set; } = 24; + + /// + /// Priority level for this trade (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Whether to include coalition allies in trade + /// + public bool IncludeCoalitionAllies { get; set; } = false; + + /// + /// Trading parameters and special conditions + /// + public Dictionary? TradingParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingResponseDto.cs new file mode 100644 index 0000000..2e8362e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResourceTradingResponseDto.cs @@ -0,0 +1,96 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResourceTradingResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance resource trading operations and market data + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance resource trading operations and market data + /// + public class ResourceTradingResponseDto + { + /// + /// Unique identifier for the trading operation + /// + public int TradeId { get; set; } + + /// + /// Alliance initiating the trade + /// + public int InitiatingAllianceId { get; set; } + + /// + /// Alliance receiving the trade (if direct trade) + /// + public int? TargetAllianceId { get; set; } + + /// + /// Type of trade (Direct, Market, Coalition, Emergency) + /// + public string TradeType { get; set; } = string.Empty; + + /// + /// Resources being offered + /// + public Dictionary OfferedResources { get; set; } = new(); + + /// + /// Resources being requested + /// + public Dictionary RequestedResources { get; set; } = new(); + + /// + /// Current trade exchange rates + /// + public Dictionary ExchangeRates { get; set; } = new(); + + /// + /// Trade status (Pending, Active, Completed, Cancelled, Expired) + /// + public string TradeStatus { get; set; } = string.Empty; + + /// + /// Available trading partners + /// + public List> TradingPartners { get; set; } = new(); + + /// + /// Active market offers + /// + public List> MarketOffers { get; set; } = new(); + + /// + /// Trade history and trends + /// + public List> TradeHistory { get; set; } = new(); + + /// + /// Coalition trading benefits + /// + public Dictionary CoalitionBenefits { get; set; } = new(); + + /// + /// Trade completion percentage + /// + public decimal CompletionPercentage { get; set; } + + /// + /// Time remaining for trade completion + /// + public TimeSpan? TradeTimeRemaining { get; set; } + + /// + /// Trading fees and costs + /// + public Dictionary TradingCosts { get; set; } = new(); + + /// + /// When this trading information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementRequestDto.cs new file mode 100644 index 0000000..8d638fc --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementRequestDto.cs @@ -0,0 +1,65 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\RoleManagementRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance role management operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance role management operations + /// + public class RoleManagementRequestDto + { + /// + /// Player to modify role for + /// + [Required] + public int PlayerId { get; set; } + + /// + /// Action to take (Promote, Demote, Assign, Remove, Transfer) + /// + [Required] + [StringLength(50)] + public string Action { get; set; } = string.Empty; + + /// + /// Target role for the action + /// + [Required] + [StringLength(50)] + public string TargetRole { get; set; } = string.Empty; + + /// + /// Previous role (for validation) + /// + [StringLength(50)] + public string? PreviousRole { get; set; } + + /// + /// Justification for the role change + /// + [StringLength(500)] + public string? Justification { get; set; } + + /// + /// Whether to notify the player of the change + /// + public bool NotifyPlayer { get; set; } = true; + + /// + /// Custom permissions to grant (if supported) + /// + public Dictionary? CustomPermissions { get; set; } + + /// + /// Role change parameters and conditions + /// + public Dictionary? RoleParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementResponseDto.cs new file mode 100644 index 0000000..e59d65e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/RoleManagementResponseDto.cs @@ -0,0 +1,71 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\RoleManagementResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance role management and hierarchy + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance role management and hierarchy + /// + public class RoleManagementResponseDto + { + /// + /// Alliance ID for role management + /// + public int AllianceId { get; set; } + + /// + /// Complete alliance hierarchy structure + /// + public Dictionary AllianceHierarchy { get; set; } = new(); + + /// + /// Available roles and their permissions + /// + public List> AvailableRoles { get; set; } = new(); + + /// + /// Current role assignments + /// + public List> RoleAssignments { get; set; } = new(); + + /// + /// Role change history + /// + public List> RoleHistory { get; set; } = new(); + + /// + /// Permission matrix for each role + /// + public Dictionary> PermissionMatrix { get; set; } = new(); + + /// + /// Members eligible for promotion + /// + public List> PromotionCandidates { get; set; } = new(); + + /// + /// Pending role change requests + /// + public List> PendingRequests { get; set; } = new(); + + /// + /// Role capacity limits + /// + public Dictionary RoleCapacities { get; set; } = new(); + + /// + /// Current role utilization + /// + public Dictionary RoleUtilization { get; set; } = new(); + + /// + /// When role information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimRequestDto.cs new file mode 100644 index 0000000..197a35c --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimRequestDto.cs @@ -0,0 +1,56 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TerritoryClaimRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance territory claim operations + * Last Edit Notes: Initial implementation for territory acquisition input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance territory claim operations + /// + public class TerritoryClaimRequestDto + { + /// + /// Target territory coordinates for claiming + /// + [Required] + public Dictionary TargetCoordinates { get; set; } = new(); + + /// + /// Claim strategy and approach + /// + [Required] + public string ClaimStrategy { get; set; } = string.Empty; + + /// + /// Resource allocation for territory claim + /// + public Dictionary? ResourceAllocation { get; set; } + + /// + /// Military units assigned to claim operation + /// + public List>? MilitaryAssignment { get; set; } + + /// + /// Claim priority level + /// + [Range(1, 10)] + public int ClaimPriority { get; set; } = 5; + + /// + /// Expected claim duration + /// + public TimeSpan? ExpectedDuration { get; set; } + + /// + /// Coalition coordination for claim + /// + public Dictionary? CoalitionCoordination { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimResponseDto.cs new file mode 100644 index 0000000..ab5eae5 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryClaimResponseDto.cs @@ -0,0 +1,66 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TerritoryClaimResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance territory claim operations + * Last Edit Notes: Initial implementation for territory acquisition results + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance territory claim operations + /// + public class TerritoryClaimResponseDto + { + /// + /// Alliance identifier claiming territory + /// + public int AllianceId { get; set; } + + /// + /// Territory claim success status + /// + public bool Success { get; set; } + + /// + /// Claim result message + /// + public string Message { get; set; } = string.Empty; + + /// + /// Claimed territory information + /// + public Dictionary ClaimedTerritory { get; set; } = new(); + + /// + /// Territory coordinates and boundaries + /// + public Dictionary TerritoryBoundaries { get; set; } = new(); + + /// + /// Resource nodes and strategic points in territory + /// + public List> TerritoryAssets { get; set; } = new(); + + /// + /// Claim costs and requirements met + /// + public Dictionary ClaimCosts { get; set; } = new(); + + /// + /// Territory claim timestamp + /// + public DateTime ClaimedAt { get; set; } + + /// + /// Territory control percentage + /// + public double ControlPercentage { get; set; } + + /// + /// Neighboring territories and potential conflicts + /// + public List> NeighboringTerritories { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseRequestDto.cs new file mode 100644 index 0000000..61990ca --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseRequestDto.cs @@ -0,0 +1,68 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TerritoryDefenseRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance territory defense operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance territory defense operations + /// + public class TerritoryDefenseRequestDto + { + /// + /// Territory to defend + /// + [Required] + public int TerritoryId { get; set; } + + /// + /// Type of defense operation (Prepare, Reinforce, Evacuate, CounterAttack) + /// + [Required] + [StringLength(50)] + public string DefenseType { get; set; } = string.Empty; + + /// + /// Forces to deploy for defense + /// + public Dictionary ForceDeployment { get; set; } = new(); + + /// + /// Coalition allies to request support from + /// + public List CoalitionSupportRequest { get; set; } = new(); + + /// + /// Defense strategy and tactics + /// + [StringLength(500)] + public string? DefenseStrategy { get; set; } + + /// + /// Priority level for this defense (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 4; + + /// + /// Resources to allocate for defense + /// + public Dictionary ResourceAllocation { get; set; } = new(); + + /// + /// Whether to use emergency protocols + /// + public bool UseEmergencyProtocols { get; set; } = false; + + /// + /// Defense parameters and special conditions + /// + public Dictionary? DefenseParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseResponseDto.cs new file mode 100644 index 0000000..ee1491c --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TerritoryDefenseResponseDto.cs @@ -0,0 +1,86 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TerritoryDefenseResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance territory defense operations + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance territory defense operations + /// + public class TerritoryDefenseResponseDto + { + /// + /// Unique identifier for the defense operation + /// + public int DefenseId { get; set; } + + /// + /// Alliance ID defending the territory + /// + public int DefendingAllianceId { get; set; } + + /// + /// Territory being defended + /// + public Dictionary Territory { get; set; } = new(); + + /// + /// Current threat level (1-10) + /// + public int ThreatLevel { get; set; } + + /// + /// Attacking forces detected + /// + public List> AttackingForces { get; set; } = new(); + + /// + /// Defensive forces deployed + /// + public Dictionary DefensiveForces { get; set; } = new(); + + /// + /// Defensive structures and their status + /// + public Dictionary DefensiveStructures { get; set; } = new(); + + /// + /// Coalition allies providing support + /// + public List> CoalitionSupport { get; set; } = new(); + + /// + /// Defense strategy being employed + /// + public string DefenseStrategy { get; set; } = string.Empty; + + /// + /// Estimated time until attack arrives + /// + public TimeSpan? TimeToAttack { get; set; } + + /// + /// Defense readiness percentage (0-100) + /// + public decimal ReadinessPercentage { get; set; } + + /// + /// Recent defensive actions taken + /// + public List> RecentActions { get; set; } = new(); + + /// + /// Defense status (Preparing, Ready, UnderAttack, Repelled, Breached) + /// + public string DefenseStatus { get; set; } = string.Empty; + + /// + /// When this defense information was last updated + /// + public DateTime LastUpdated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationRequestDto.cs new file mode 100644 index 0000000..bb51124 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationRequestDto.cs @@ -0,0 +1,69 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TreasuryOperationRequestDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Request DTO for alliance treasury operations and resource management + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for alliance treasury operations and resource management + /// + public class TreasuryOperationRequestDto + { + /// + /// Type of operation (Deposit, Withdraw, Transfer, Allocation, Tax) + /// + [Required] + [StringLength(50)] + public string OperationType { get; set; } = string.Empty; + + /// + /// Resources to operate on + /// + [Required] + public Dictionary ResourceAmounts { get; set; } = new(); + + /// + /// Purpose or reason for the operation + /// + [Required] + [StringLength(500)] + public string OperationPurpose { get; set; } = string.Empty; + + /// + /// Target alliance (for transfers) + /// + public int? TargetAllianceId { get; set; } + + /// + /// Target player (for distributions) + /// + public int? TargetPlayerId { get; set; } + + /// + /// Priority level for this operation (1-5) + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Whether to require officer approval + /// + public bool RequireApproval { get; set; } = true; + + /// + /// Scheduled execution time (for delayed operations) + /// + public DateTime? ScheduledExecution { get; set; } + + /// + /// Operation parameters and special conditions + /// + public Dictionary? OperationParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationResponseDto.cs new file mode 100644 index 0000000..7f45042 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryOperationResponseDto.cs @@ -0,0 +1,91 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TreasuryOperationResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance treasury operations and transactions + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance treasury operations and transactions + /// + public class TreasuryOperationResponseDto + { + /// + /// Unique identifier for the treasury operation + /// + public int OperationId { get; set; } + + /// + /// Alliance treasury involved + /// + public int AllianceId { get; set; } + + /// + /// Type of operation (Deposit, Withdraw, Transfer, Allocation, Tax) + /// + public string OperationType { get; set; } = string.Empty; + + /// + /// Player who initiated the operation + /// + public int InitiatedBy { get; set; } + + /// + /// Name of the player who initiated operation + /// + public string InitiatedByName { get; set; } = string.Empty; + + /// + /// Resources involved in the operation + /// + public Dictionary ResourceAmounts { get; set; } = new(); + + /// + /// Treasury balances before operation + /// + public Dictionary BalancesBefore { get; set; } = new(); + + /// + /// Treasury balances after operation + /// + public Dictionary BalancesAfter { get; set; } = new(); + + /// + /// Purpose or reason for the operation + /// + public string OperationPurpose { get; set; } = string.Empty; + + /// + /// Whether the operation was successful + /// + public bool OperationSuccessful { get; set; } + + /// + /// Any errors or issues during operation + /// + public string? OperationErrors { get; set; } + + /// + /// Officers who approved the operation + /// + public List> ApprovalChain { get; set; } = new(); + + /// + /// Transaction fees or costs + /// + public Dictionary TransactionCosts { get; set; } = new(); + + /// + /// Impact on alliance operations + /// + public Dictionary OperationalImpact { get; set; } = new(); + + /// + /// When the operation was completed + /// + public DateTime OperationCompleted { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryStatusResponseDto.cs new file mode 100644 index 0000000..0e7ddf8 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/TreasuryStatusResponseDto.cs @@ -0,0 +1,96 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\TreasuryStatusResponseDto.cs + * Created: 2025-10-22 + * Last Modified: 2025-10-22 + * Description: Response DTO for alliance treasury status and financial overview + * Last Edit Notes: Initial creation following established Alliance DTO patterns + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance treasury status and financial overview + /// + public class TreasuryStatusResponseDto + { + /// + /// Alliance ID for treasury status + /// + public int AllianceId { get; set; } + + /// + /// Alliance name + /// + public string AllianceName { get; set; } = string.Empty; + + /// + /// Current treasury balances by resource type + /// + public Dictionary CurrentBalances { get; set; } = new(); + + /// + /// Treasury capacity limits + /// + public Dictionary CapacityLimits { get; set; } = new(); + + /// + /// Treasury utilization percentages + /// + public Dictionary UtilizationPercentages { get; set; } = new(); + + /// + /// Daily income from various sources + /// + public Dictionary DailyIncome { get; set; } = new(); + + /// + /// Daily expenditures by category + /// + public Dictionary DailyExpenses { get; set; } = new(); + + /// + /// Net daily treasury flow (income - expenses) + /// + public Dictionary NetDailyFlow { get; set; } = new(); + + /// + /// Recent treasury transactions + /// + public List> RecentTransactions { get; set; } = new(); + + /// + /// Pending treasury operations + /// + public List> PendingOperations { get; set; } = new(); + + /// + /// Treasury access permissions by role + /// + public Dictionary> AccessPermissions { get; set; } = new(); + + /// + /// Financial health indicators + /// + public Dictionary HealthIndicators { get; set; } = new(); + + /// + /// Resource allocation by category + /// + public Dictionary ResourceAllocations { get; set; } = new(); + + /// + /// Treasury growth trends over time + /// + public Dictionary>> GrowthTrends { get; set; } = new(); + + /// + /// Emergency reserve status + /// + public Dictionary EmergencyReserves { get; set; } = new(); + + /// + /// When this treasury status was last calculated + /// + public DateTime StatusCalculated { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file