bash# Navigate to your repository

cd D:\shadowed-realms-mobile\ShadowedRealmsMobile\

# Add all the Alliance DTO files
git add src/server/ShadowedRealms.Shared/DTOs/Alliance/

# Commit with descriptive message
git commit -m "Complete Alliance DTOs: 42 files for comprehensive alliance system

- Add all Request/Response DTO pairs for alliance operations
- Include alliance creation, updates, and status management
- Add coalition formation, management, and dissolution DTOs
- Include democratic leadership election and voting DTOs
- Add territory claiming, defense, and contested zone DTOs
- Include member management, activity tracking, and removal DTOs
- Add treasury operations, resource trading, and status DTOs
- Include role management and permission DTOs
- Add research advancement and building construction DTOs

Features supported:
* Complete alliance lifecycle management with democratic processes
* Coalition mechanics preserving alliance identity during KvK events
* Territory system with contested zones and defensive operations
* Treasury and resource management with trading capabilities
* Member activity tracking and automated management tools
* Research trees with collective advancement and benefits
* Building construction with collaborative resource commitment
* Anti-pay-to-win democratic leadership selection processes

All DTOs include:
- Proper file headers with creation dates and descriptions
- Comprehensive XML documentation for all properties
- Validation attributes on request DTOs following established patterns
- Consistent naming conventions and extensible Dictionary properties
- Kingdom-scoped design considerations for horizontal scaling
- Production-ready structure supporting server-authoritative design
This commit is contained in:
matt 2025-10-22 17:11:29 -05:00
parent 206ca8e6b6
commit 9a7fa52bc4
39 changed files with 2936 additions and 0 deletions

View File

@ -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
{
/// <summary>
/// Request DTO for alliance creation operations
/// </summary>
public class AllianceCreationRequestDto
{
/// <summary>
/// Name for the new alliance
/// </summary>
[Required]
[StringLength(100, MinimumLength = 3)]
public string AllianceName { get; set; } = string.Empty;
/// <summary>
/// Alliance description or motto
/// </summary>
[StringLength(500)]
public string? Description { get; set; }
/// <summary>
/// Alliance tag/abbreviation
/// </summary>
[StringLength(10, MinimumLength = 2)]
public string? AllianceTag { get; set; }
/// <summary>
/// Initial alliance settings and configuration
/// </summary>
public Dictionary<string, object>? InitialSettings { get; set; }
/// <summary>
/// Recruitment settings (open, invite-only, etc.)
/// </summary>
public Dictionary<string, object>? RecruitmentSettings { get; set; }
/// <summary>
/// Initial member invitations
/// </summary>
public List<int>? InitialInvitations { get; set; }
/// <summary>
/// Alliance focus areas (military, economic, diplomatic)
/// </summary>
public List<string>? FocusAreas { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance creation operations
/// </summary>
public class AllianceCreationResponseDto
{
/// <summary>
/// Newly created alliance identifier
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Alliance name that was created
/// </summary>
public string AllianceName { get; set; } = string.Empty;
/// <summary>
/// Success status of alliance creation
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Creation result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Initial alliance settings and configuration
/// </summary>
public Dictionary<string, object> InitialSettings { get; set; } = new();
/// <summary>
/// Leader assignment information
/// </summary>
public Dictionary<string, object> LeaderInfo { get; set; } = new();
/// <summary>
/// Alliance creation timestamp
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// Initial member information
/// </summary>
public List<Dictionary<string, object>> InitialMembers { get; set; } = new();
/// <summary>
/// Starting alliance level and experience
/// </summary>
public Dictionary<string, object> StartingLevel { get; set; } = new();
/// <summary>
/// Available alliance features based on level
/// </summary>
public List<string> AvailableFeatures { get; set; } = new();
/// <summary>
/// Resource costs for alliance creation
/// </summary>
public Dictionary<string, long> CreationCosts { get; set; } = new();
/// <summary>
/// Initial alliance treasury and resource allocation
/// </summary>
public Dictionary<string, object> InitialTreasury { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance information retrieval
/// </summary>
public class AllianceInfoResponseDto
{
/// <summary>
/// Alliance identifier
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Alliance name
/// </summary>
public string AllianceName { get; set; } = string.Empty;
/// <summary>
/// Alliance description
/// </summary>
public string Description { get; set; } = string.Empty;
/// <summary>
/// Alliance leader information
/// </summary>
public Dictionary<string, object> LeaderInfo { get; set; } = new();
/// <summary>
/// Current member count
/// </summary>
public int MemberCount { get; set; }
/// <summary>
/// Maximum member capacity
/// </summary>
public int MaxMembers { get; set; }
/// <summary>
/// Alliance level and experience
/// </summary>
public Dictionary<string, object> AllianceLevel { get; set; } = new();
/// <summary>
/// Alliance power rating
/// </summary>
public long TotalPower { get; set; }
/// <summary>
/// Current coalition memberships
/// </summary>
public List<Dictionary<string, object>> CoalitionMemberships { get; set; } = new();
/// <summary>
/// Alliance territory holdings
/// </summary>
public Dictionary<string, object> Territory { get; set; } = new();
/// <summary>
/// Research tree progress
/// </summary>
public Dictionary<string, object> ResearchProgress { get; set; } = new();
/// <summary>
/// Alliance recruitment settings
/// </summary>
public Dictionary<string, object> RecruitmentSettings { get; set; } = new();
/// <summary>
/// When alliance information was last updated
/// </summary>
public DateTime LastUpdated { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance update operations
/// </summary>
public class AllianceUpdateRequestDto
{
/// <summary>
/// Updated alliance name
/// </summary>
[StringLength(100, MinimumLength = 3)]
public string? AllianceName { get; set; }
/// <summary>
/// Updated alliance description
/// </summary>
[StringLength(500)]
public string? Description { get; set; }
/// <summary>
/// Updated alliance tag/abbreviation
/// </summary>
[StringLength(10, MinimumLength = 2)]
public string? AllianceTag { get; set; }
/// <summary>
/// Updated recruitment settings
/// </summary>
public Dictionary<string, object>? RecruitmentSettings { get; set; }
/// <summary>
/// Updated alliance configuration
/// </summary>
public Dictionary<string, object>? AllianceSettings { get; set; }
/// <summary>
/// Updated focus areas
/// </summary>
public List<string>? FocusAreas { get; set; }
/// <summary>
/// Updated leadership structure
/// </summary>
public Dictionary<string, object>? LeadershipStructure { get; set; }
/// <summary>
/// Updated member roles and permissions
/// </summary>
public Dictionary<string, object>? RolePermissions { get; set; }
/// <summary>
/// Reason for the update (for audit trail)
/// </summary>
[StringLength(200)]
public string? UpdateReason { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance update operations
/// </summary>
public class AllianceUpdateResponseDto
{
/// <summary>
/// Alliance identifier that was updated
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Success status of the update operation
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Update result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Updated alliance information
/// </summary>
public Dictionary<string, object> UpdatedInfo { get; set; } = new();
/// <summary>
/// List of fields that were modified
/// </summary>
public List<string> ModifiedFields { get; set; } = new();
/// <summary>
/// Previous values before update (for audit trail)
/// </summary>
public Dictionary<string, object> PreviousValues { get; set; } = new();
/// <summary>
/// New values after update
/// </summary>
public Dictionary<string, object> NewValues { get; set; } = new();
/// <summary>
/// Player who performed the update
/// </summary>
public int UpdatedById { get; set; }
/// <summary>
/// Timestamp when update was performed
/// </summary>
public DateTime UpdatedAt { get; set; }
/// <summary>
/// Any validation warnings or notifications
/// </summary>
public List<string> Warnings { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance voting operations and ballot creation
/// </summary>
public class AllianceVotingRequestDto
{
/// <summary>
/// Vote action (CreateVote, CastVote, ModifyVote, CancelVote)
/// </summary>
[Required]
[StringLength(50)]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Subject of the vote
/// </summary>
[Required]
[StringLength(200)]
public string VoteSubject { get; set; } = string.Empty;
/// <summary>
/// Type of vote (Policy, Leadership, War, Alliance, Coalition)
/// </summary>
[Required]
[StringLength(50)]
public string VoteType { get; set; } = string.Empty;
/// <summary>
/// Available voting options
/// </summary>
public List<string> VotingOptions { get; set; } = new();
/// <summary>
/// Vote choice (for casting votes)
/// </summary>
public int? VoteChoice { get; set; }
/// <summary>
/// Detailed description of the vote
/// </summary>
[StringLength(2000)]
public string? VoteDescription { get; set; }
/// <summary>
/// Voting duration in hours
/// </summary>
[Range(24, 168)]
public int VotingDurationHours { get; set; } = 48;
/// <summary>
/// Minimum participation required (percentage)
/// </summary>
[Range(25, 100)]
public int MinimumParticipation { get; set; } = 50;
/// <summary>
/// Roles eligible to vote
/// </summary>
public List<string> EligibleRoles { get; set; } = new();
/// <summary>
/// Vote parameters and special conditions
/// </summary>
public Dictionary<string, object>? VoteParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance voting processes and results
/// </summary>
public class AllianceVotingResponseDto
{
/// <summary>
/// Unique identifier for the vote
/// </summary>
public int VoteId { get; set; }
/// <summary>
/// Alliance conducting the vote
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Subject of the vote
/// </summary>
public string VoteSubject { get; set; } = string.Empty;
/// <summary>
/// Type of vote (Policy, Leadership, War, Alliance, Coalition)
/// </summary>
public string VoteType { get; set; } = string.Empty;
/// <summary>
/// Available voting options
/// </summary>
public List<Dictionary<string, object>> VotingOptions { get; set; } = new();
/// <summary>
/// Current vote tallies
/// </summary>
public Dictionary<string, int> VoteTallies { get; set; } = new();
/// <summary>
/// Members who have voted
/// </summary>
public List<Dictionary<string, object>> Voters { get; set; } = new();
/// <summary>
/// Total eligible voters
/// </summary>
public int EligibleVoters { get; set; }
/// <summary>
/// Votes cast so far
/// </summary>
public int VotesCast { get; set; }
/// <summary>
/// Voting participation percentage
/// </summary>
public decimal ParticipationPercentage { get; set; }
/// <summary>
/// Time remaining for voting
/// </summary>
public TimeSpan? VotingTimeRemaining { get; set; }
/// <summary>
/// Minimum votes required for valid decision
/// </summary>
public int MinimumVotes { get; set; }
/// <summary>
/// Vote status (Active, Completed, Failed, Cancelled)
/// </summary>
public string VoteStatus { get; set; } = string.Empty;
/// <summary>
/// Vote results (if completed)
/// </summary>
public Dictionary<string, object>? VoteResults { get; set; }
/// <summary>
/// When the vote started
/// </summary>
public DateTime VoteStarted { get; set; }
/// <summary>
/// When this vote information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance building construction operations
/// </summary>
public class BuildingConstructionRequestDto
{
/// <summary>
/// Type of building to construct
/// </summary>
[Required]
[StringLength(100)]
public string BuildingType { get; set; } = string.Empty;
/// <summary>
/// Target level for construction
/// </summary>
[Required]
[Range(1, 50)]
public int TargetLevel { get; set; }
/// <summary>
/// Initial resource contribution
/// </summary>
public Dictionary<string, decimal> ResourceContribution { get; set; } = new();
/// <summary>
/// Priority level for this construction (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 3;
/// <summary>
/// Whether to use alliance treasury funds
/// </summary>
public bool UseTreasuryFunds { get; set; } = false;
/// <summary>
/// Construction parameters and options
/// </summary>
public Dictionary<string, object>? ConstructionParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for coalition dissolution operations
/// </summary>
public class CoalitionDissolutionRequestDto
{
/// <summary>
/// Reason for dissolving the coalition
/// </summary>
[Required]
[StringLength(300)]
public string DissolutionReason { get; set; } = string.Empty;
/// <summary>
/// Resource distribution plan for member alliances
/// </summary>
public Dictionary<string, object>? ResourceDistribution { get; set; }
/// <summary>
/// Whether to notify all members before dissolution
/// </summary>
public bool NotifyMembers { get; set; } = true;
/// <summary>
/// Grace period before dissolution takes effect (hours)
/// </summary>
[Range(0, 168)] // 0 to 7 days
public int GracePeriodHours { get; set; } = 24;
/// <summary>
/// Final message to coalition members
/// </summary>
[StringLength(500)]
public string? FinalMessage { get; set; }
/// <summary>
/// Whether to preserve coalition statistics for historical records
/// </summary>
public bool PreserveStatistics { get; set; } = true;
/// <summary>
/// Emergency dissolution (immediate, bypasses grace period)
/// </summary>
public bool EmergencyDissolution { get; set; } = false;
/// <summary>
/// Confirmation that the requesting player understands the consequences
/// </summary>
[Required]
public bool ConfirmDissolution { get; set; }
/// <summary>
/// Additional dissolution parameters
/// </summary>
public Dictionary<string, object>? DissolutionParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for coalition dissolution operations
/// </summary>
public class CoalitionDissolutionResponseDto
{
/// <summary>
/// Coalition identifier that was dissolved
/// </summary>
public string CoalitionId { get; set; } = string.Empty;
/// <summary>
/// Coalition name that was dissolved
/// </summary>
public string CoalitionName { get; set; } = string.Empty;
/// <summary>
/// Success status of dissolution operation
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Dissolution result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Final member alliances that were part of the coalition
/// </summary>
public List<Dictionary<string, object>> FormerMemberAlliances { get; set; } = new();
/// <summary>
/// Resource distribution results after dissolution
/// </summary>
public Dictionary<string, object> ResourceDistribution { get; set; } = new();
/// <summary>
/// Final coalition statistics and achievements
/// </summary>
public Dictionary<string, object> FinalStatistics { get; set; } = new();
/// <summary>
/// Dissolution timestamp
/// </summary>
public DateTime DissolvedAt { get; set; }
/// <summary>
/// Player who initiated the dissolution
/// </summary>
public int DissolvedById { get; set; }
/// <summary>
/// Reason for dissolution
/// </summary>
public string DissolutionReason { get; set; } = string.Empty;
/// <summary>
/// Alliance statuses after coalition dissolution
/// </summary>
public List<Dictionary<string, object>> PostDissolutionStatus { get; set; } = new();
/// <summary>
/// Any cleanup actions performed during dissolution
/// </summary>
public List<string> CleanupActions { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for coalition formation operations
/// </summary>
public class CoalitionFormationRequestDto
{
/// <summary>
/// Name for the new coalition
/// </summary>
[Required]
[StringLength(100, MinimumLength = 3)]
public string CoalitionName { get; set; } = string.Empty;
/// <summary>
/// Alliances to invite into the coalition
/// </summary>
[Required]
[MinLength(2)]
public List<int> InvitedAlliances { get; set; } = new();
/// <summary>
/// Coalition purpose and objectives
/// </summary>
[StringLength(500)]
public string? Purpose { get; set; }
/// <summary>
/// Coalition leadership structure preferences
/// </summary>
public Dictionary<string, object>? LeadershipStructure { get; set; }
/// <summary>
/// Resource sharing and coordination settings
/// </summary>
public Dictionary<string, object>? CoordinationSettings { get; set; }
/// <summary>
/// Expected coalition duration (temporary, permanent, event-based)
/// </summary>
public Dictionary<string, object>? Duration { get; set; }
/// <summary>
/// Coalition formation conditions and requirements
/// </summary>
public Dictionary<string, object>? FormationConditions { get; set; }
/// <summary>
/// Invitation message to other alliances
/// </summary>
[StringLength(300)]
public string? InvitationMessage { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for coalition formation operations
/// </summary>
public class CoalitionFormationResponseDto
{
/// <summary>
/// Newly formed coalition identifier
/// </summary>
public string CoalitionId { get; set; } = string.Empty;
/// <summary>
/// Coalition name that was created
/// </summary>
public string CoalitionName { get; set; } = string.Empty;
/// <summary>
/// Success status of coalition formation
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Formation result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Member alliances that joined the coalition
/// </summary>
public List<Dictionary<string, object>> MemberAlliances { get; set; } = new();
/// <summary>
/// Coalition leadership structure
/// </summary>
public Dictionary<string, object> LeadershipStructure { get; set; } = new();
/// <summary>
/// Coalition objectives and purpose
/// </summary>
public Dictionary<string, object> CoalitionObjectives { get; set; } = new();
/// <summary>
/// Shared resources and coordination settings
/// </summary>
public Dictionary<string, object> CoordinationSettings { get; set; } = new();
/// <summary>
/// Coalition formation timestamp
/// </summary>
public DateTime FormedAt { get; set; }
/// <summary>
/// Alliance that initiated the coalition
/// </summary>
public int InitiatingAllianceId { get; set; }
/// <summary>
/// Expected coalition duration or permanence
/// </summary>
public Dictionary<string, object> Duration { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for coalition management operations
/// </summary>
public class CoalitionManagementRequestDto
{
/// <summary>
/// Management action to perform
/// </summary>
[Required]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Target alliance for management action (if applicable)
/// </summary>
public int? TargetAllianceId { get; set; }
/// <summary>
/// Updated coalition settings
/// </summary>
public Dictionary<string, object>? CoalitionSettings { get; set; }
/// <summary>
/// Leadership role assignments
/// </summary>
public Dictionary<string, object>? LeadershipAssignments { get; set; }
/// <summary>
/// Member alliance permissions and roles
/// </summary>
public Dictionary<string, object>? MemberPermissions { get; set; }
/// <summary>
/// Coordination and resource sharing settings
/// </summary>
public Dictionary<string, object>? CoordinationSettings { get; set; }
/// <summary>
/// Coalition objectives updates
/// </summary>
public Dictionary<string, object>? UpdatedObjectives { get; set; }
/// <summary>
/// Reason for the management action
/// </summary>
[StringLength(300)]
public string? ManagementReason { get; set; }
/// <summary>
/// Additional parameters for specific management actions
/// </summary>
public Dictionary<string, object>? ActionParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for coalition management operations
/// </summary>
public class CoalitionManagementResponseDto
{
/// <summary>
/// Coalition identifier being managed
/// </summary>
public string CoalitionId { get; set; } = string.Empty;
/// <summary>
/// Management operation success status
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Management operation result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Updated coalition information after management action
/// </summary>
public Dictionary<string, object> UpdatedCoalitionInfo { get; set; } = new();
/// <summary>
/// Current member alliances and their status
/// </summary>
public List<Dictionary<string, object>> MemberAlliances { get; set; } = new();
/// <summary>
/// Updated leadership assignments
/// </summary>
public Dictionary<string, object> Leadership { get; set; } = new();
/// <summary>
/// Coalition coordination settings
/// </summary>
public Dictionary<string, object> CoordinationSettings { get; set; } = new();
/// <summary>
/// Management action timestamp
/// </summary>
public DateTime ManagedAt { get; set; }
/// <summary>
/// Player who performed the management action
/// </summary>
public int ManagedById { get; set; }
/// <summary>
/// Any notifications or alerts generated by the management action
/// </summary>
public List<string> Notifications { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for contested zone operations and challenges
/// </summary>
public class ContestedZoneRequestDto
{
/// <summary>
/// Zone to target for contest
/// </summary>
[Required]
public int ZoneId { get; set; }
/// <summary>
/// Type of zone operation (Challenge, Reinforce, Withdraw, Scout)
/// </summary>
[Required]
[StringLength(50)]
public string OperationType { get; set; } = string.Empty;
/// <summary>
/// Forces to commit to the operation
/// </summary>
public Dictionary<string, int> ForceCommitment { get; set; } = new();
/// <summary>
/// Coalition allies to invite for support
/// </summary>
public List<int> CoalitionAllies { get; set; } = new();
/// <summary>
/// Battle strategy and tactics
/// </summary>
[StringLength(500)]
public string? Strategy { get; set; }
/// <summary>
/// Priority level for this operation (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 3;
/// <summary>
/// Maximum duration for the operation in hours
/// </summary>
[Range(1, 168)]
public int MaxDurationHours { get; set; } = 24;
/// <summary>
/// Operation parameters and special conditions
/// </summary>
public Dictionary<string, object>? OperationParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for contested zone information and battles
/// </summary>
public class ContestedZoneResponseDto
{
/// <summary>
/// Unique identifier for the contested zone
/// </summary>
public int ZoneId { get; set; }
/// <summary>
/// Zone name or identifier
/// </summary>
public string ZoneName { get; set; } = string.Empty;
/// <summary>
/// Current controlling alliance
/// </summary>
public int? ControllingAllianceId { get; set; }
/// <summary>
/// Name of controlling alliance
/// </summary>
public string? ControllingAllianceName { get; set; }
/// <summary>
/// Alliances currently contesting this zone
/// </summary>
public List<Dictionary<string, object>> ContestingAlliances { get; set; } = new();
/// <summary>
/// Zone coordinates and boundaries
/// </summary>
public Dictionary<string, object> ZoneCoordinates { get; set; } = new();
/// <summary>
/// Resources and benefits provided by controlling this zone
/// </summary>
public Dictionary<string, object> ZoneBenefits { get; set; } = new();
/// <summary>
/// Active battles in this zone
/// </summary>
public List<Dictionary<string, object>> ActiveBattles { get; set; } = new();
/// <summary>
/// Control percentage for each alliance (0-100)
/// </summary>
public Dictionary<string, decimal> ControlPercentages { get; set; } = new();
/// <summary>
/// Time remaining in contest period
/// </summary>
public TimeSpan? ContestTimeRemaining { get; set; }
/// <summary>
/// Zone contest status (Open, Contested, Locked, Cooldown)
/// </summary>
public string ContestStatus { get; set; } = string.Empty;
/// <summary>
/// Historical control changes
/// </summary>
public List<Dictionary<string, object>> ControlHistory { get; set; } = new();
/// <summary>
/// When this zone information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for KvK host selection and democratic voting
/// </summary>
public class HostSelectionRequestDto
{
/// <summary>
/// KvK event to select host for
/// </summary>
[Required]
public int KvKEventId { get; set; }
/// <summary>
/// Action to take (Nominate, Vote, Withdraw, Challenge)
/// </summary>
[Required]
[StringLength(50)]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Alliance being nominated or voted for
/// </summary>
public int? TargetAllianceId { get; set; }
/// <summary>
/// Vote choice (for voting actions)
/// </summary>
public int? VoteChoice { get; set; }
/// <summary>
/// Justification for nomination or vote
/// </summary>
[StringLength(1000)]
public string? Justification { get; set; }
/// <summary>
/// Coalition members supporting this action
/// </summary>
public List<int> CoalitionSupport { get; set; } = new();
/// <summary>
/// Qualifications being presented (for nominations)
/// </summary>
public Dictionary<string, object>? Qualifications { get; set; }
/// <summary>
/// Proposed leadership structure
/// </summary>
public Dictionary<string, object>? LeadershipStructure { get; set; }
/// <summary>
/// Selection parameters and preferences
/// </summary>
public Dictionary<string, object>? SelectionParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for KvK host selection and democratic leadership
/// </summary>
public class HostSelectionResponseDto
{
/// <summary>
/// Unique identifier for the host selection process
/// </summary>
public int SelectionId { get; set; }
/// <summary>
/// KvK event this selection is for
/// </summary>
public int KvKEventId { get; set; }
/// <summary>
/// Current host alliance (if selected)
/// </summary>
public int? HostAllianceId { get; set; }
/// <summary>
/// Name of the host alliance
/// </summary>
public string? HostAllianceName { get; set; }
/// <summary>
/// Alliances eligible to be hosts
/// </summary>
public List<Dictionary<string, object>> EligibleHosts { get; set; } = new();
/// <summary>
/// Current voting results
/// </summary>
public Dictionary<string, int> VotingResults { get; set; } = new();
/// <summary>
/// Alliances that have voted
/// </summary>
public List<Dictionary<string, object>> VotingParticipants { get; set; } = new();
/// <summary>
/// Selection criteria and requirements
/// </summary>
public Dictionary<string, object> SelectionCriteria { get; set; } = new();
/// <summary>
/// Time remaining for voting
/// </summary>
public TimeSpan? VotingTimeRemaining { get; set; }
/// <summary>
/// Minimum votes required for selection
/// </summary>
public int MinimumVotes { get; set; }
/// <summary>
/// Selection status (Nominating, Voting, Completed, Failed)
/// </summary>
public string SelectionStatus { get; set; } = string.Empty;
/// <summary>
/// Host responsibilities and privileges
/// </summary>
public Dictionary<string, object> HostResponsibilities { get; set; } = new();
/// <summary>
/// When the selection process started
/// </summary>
public DateTime SelectionStarted { get; set; }
/// <summary>
/// When this selection information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance leadership election operations
/// </summary>
public class LeadershipElectionRequestDto
{
/// <summary>
/// Position to elect (Leader, Officer, Diplomat, etc.)
/// </summary>
[Required]
[StringLength(50)]
public string Position { get; set; } = string.Empty;
/// <summary>
/// Election action (StartElection, Nominate, Vote, Withdraw, Challenge)
/// </summary>
[Required]
[StringLength(50)]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Player being nominated or voted for
/// </summary>
public int? TargetPlayerId { get; set; }
/// <summary>
/// Vote choice (for voting actions)
/// </summary>
public int? VoteChoice { get; set; }
/// <summary>
/// Campaign platform or justification
/// </summary>
[StringLength(2000)]
public string? Platform { get; set; }
/// <summary>
/// Qualifications being presented
/// </summary>
public Dictionary<string, object>? Qualifications { get; set; }
/// <summary>
/// Election duration in hours
/// </summary>
[Range(24, 168)]
public int ElectionDurationHours { get; set; } = 72;
/// <summary>
/// Minimum participation required for valid election (percentage)
/// </summary>
[Range(25, 100)]
public int MinimumParticipation { get; set; } = 50;
/// <summary>
/// Election parameters and special rules
/// </summary>
public Dictionary<string, object>? ElectionParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance leadership election results and status
/// </summary>
public class LeadershipElectionResponseDto
{
/// <summary>
/// Unique identifier for the election
/// </summary>
public int ElectionId { get; set; }
/// <summary>
/// Alliance conducting the election
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Position being elected (Leader, Officer, Diplomat, etc.)
/// </summary>
public string Position { get; set; } = string.Empty;
/// <summary>
/// Current elected leader (if election completed)
/// </summary>
public int? ElectedPlayerId { get; set; }
/// <summary>
/// Name of the elected player
/// </summary>
public string? ElectedPlayerName { get; set; }
/// <summary>
/// Candidates in the election
/// </summary>
public List<Dictionary<string, object>> Candidates { get; set; } = new();
/// <summary>
/// Current vote tallies
/// </summary>
public Dictionary<string, int> VoteTallies { get; set; } = new();
/// <summary>
/// Members who have voted
/// </summary>
public List<Dictionary<string, object>> VotingMembers { get; set; } = new();
/// <summary>
/// Total eligible voters
/// </summary>
public int EligibleVoters { get; set; }
/// <summary>
/// Votes cast so far
/// </summary>
public int VotesCast { get; set; }
/// <summary>
/// Voting participation percentage
/// </summary>
public decimal ParticipationPercentage { get; set; }
/// <summary>
/// Time remaining for voting
/// </summary>
public TimeSpan? VotingTimeRemaining { get; set; }
/// <summary>
/// Election status (Nominating, Voting, Completed, Contested, Cancelled)
/// </summary>
public string ElectionStatus { get; set; } = string.Empty;
/// <summary>
/// Election rules and requirements
/// </summary>
public Dictionary<string, object> ElectionRules { get; set; } = new();
/// <summary>
/// When the election started
/// </summary>
public DateTime ElectionStarted { get; set; }
/// <summary>
/// When this election information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance member activity tracking and statistics
/// </summary>
public class MemberActivityResponseDto
{
/// <summary>
/// Alliance ID for member activity
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Total alliance member count
/// </summary>
public int TotalMembers { get; set; }
/// <summary>
/// Active members in last 24 hours
/// </summary>
public int ActiveMembers24h { get; set; }
/// <summary>
/// Active members in last 7 days
/// </summary>
public int ActiveMembers7d { get; set; }
/// <summary>
/// Detailed member activity statistics
/// </summary>
public List<Dictionary<string, object>> MemberActivities { get; set; } = new();
/// <summary>
/// Activity categories and participation
/// </summary>
public Dictionary<string, int> ActivityCategories { get; set; } = new();
/// <summary>
/// Top contributors by activity type
/// </summary>
public Dictionary<string, List<Dictionary<string, object>>> TopContributors { get; set; } = new();
/// <summary>
/// Inactive members requiring attention
/// </summary>
public List<Dictionary<string, object>> InactiveMembers { get; set; } = new();
/// <summary>
/// Activity trends over time
/// </summary>
public Dictionary<string, List<Dictionary<string, object>>> ActivityTrends { get; set; } = new();
/// <summary>
/// Alliance activity score (0-100)
/// </summary>
public decimal AllianceActivityScore { get; set; }
/// <summary>
/// Activity benchmarks and goals
/// </summary>
public Dictionary<string, object> ActivityBenchmarks { get; set; } = new();
/// <summary>
/// Time period for this activity report
/// </summary>
public Dictionary<string, DateTime> ReportPeriod { get; set; } = new();
/// <summary>
/// When this activity report was generated
/// </summary>
public DateTime ReportGenerated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance member removal operations
/// </summary>
public class MemberRemovalRequestDto
{
/// <summary>
/// Player to remove from alliance
/// </summary>
[Required]
public int PlayerId { get; set; }
/// <summary>
/// Type of removal (Kick, Ban, Voluntary, Inactive, Disciplinary)
/// </summary>
[Required]
[StringLength(50)]
public string RemovalType { get; set; } = string.Empty;
/// <summary>
/// Reason for removal
/// </summary>
[Required]
[StringLength(500)]
public string RemovalReason { get; set; } = string.Empty;
/// <summary>
/// Whether to notify the player of removal
/// </summary>
public bool NotifyPlayer { get; set; } = true;
/// <summary>
/// Cooldown period before player can rejoin (hours)
/// </summary>
[Range(0, 8760)] // 0 to 1 year
public int RejoinCooldownHours { get; set; } = 0;
/// <summary>
/// Whether to blacklist player from future applications
/// </summary>
public bool BlacklistPlayer { get; set; } = false;
/// <summary>
/// How to handle player's alliance assets
/// </summary>
[StringLength(50)]
public string AssetHandling { get; set; } = "ReturnToPlayer";
/// <summary>
/// Additional removal parameters and conditions
/// </summary>
public Dictionary<string, object>? RemovalParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance member removal operations and results
/// </summary>
public class MemberRemovalResponseDto
{
/// <summary>
/// Unique identifier for the removal operation
/// </summary>
public int RemovalId { get; set; }
/// <summary>
/// Alliance performing the removal
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Player being removed
/// </summary>
public int PlayerId { get; set; }
/// <summary>
/// Name of the player being removed
/// </summary>
public string PlayerName { get; set; } = string.Empty;
/// <summary>
/// Type of removal (Kick, Ban, Voluntary, Inactive, Disciplinary)
/// </summary>
public string RemovalType { get; set; } = string.Empty;
/// <summary>
/// Officer who initiated the removal
/// </summary>
public int InitiatedBy { get; set; }
/// <summary>
/// Name of the officer who initiated removal
/// </summary>
public string InitiatedByName { get; set; } = string.Empty;
/// <summary>
/// Reason for removal
/// </summary>
public string RemovalReason { get; set; } = string.Empty;
/// <summary>
/// Player's alliance statistics at time of removal
/// </summary>
public Dictionary<string, object> PlayerStats { get; set; } = new();
/// <summary>
/// Resources or assets to be handled
/// </summary>
public Dictionary<string, object> AssetHandling { get; set; } = new();
/// <summary>
/// Impact on ongoing alliance operations
/// </summary>
public Dictionary<string, object> OperationalImpact { get; set; } = new();
/// <summary>
/// Cooldown period before player can rejoin
/// </summary>
public TimeSpan? RejoinCooldown { get; set; }
/// <summary>
/// Whether removal was successful
/// </summary>
public bool RemovalSuccessful { get; set; }
/// <summary>
/// Any errors or issues during removal
/// </summary>
public string? RemovalErrors { get; set; }
/// <summary>
/// Post-removal alliance statistics
/// </summary>
public Dictionary<string, object> PostRemovalStats { get; set; } = new();
/// <summary>
/// When the removal was completed
/// </summary>
public DateTime RemovalCompleted { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance membership processing operations
/// </summary>
public class MembershipProcessingRequestDto
{
/// <summary>
/// Alliance to apply to (for applications)
/// </summary>
public int? AllianceId { get; set; }
/// <summary>
/// Processing action (Apply, Review, Approve, Reject, Withdraw)
/// </summary>
[Required]
[StringLength(50)]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Application ID (for review actions)
/// </summary>
public int? ApplicationId { get; set; }
/// <summary>
/// Player being processed (for officer actions)
/// </summary>
public int? PlayerId { get; set; }
/// <summary>
/// Application message from player
/// </summary>
[StringLength(1000)]
public string? ApplicationMessage { get; set; }
/// <summary>
/// Review decision (for officer reviews)
/// </summary>
[StringLength(50)]
public string? ReviewDecision { get; set; }
/// <summary>
/// Review comments from officer
/// </summary>
[StringLength(500)]
public string? ReviewComments { get; set; }
/// <summary>
/// Priority level for processing (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 3;
/// <summary>
/// Processing parameters and special conditions
/// </summary>
public Dictionary<string, object>? ProcessingParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance membership processing and application status
/// </summary>
public class MembershipProcessingResponseDto
{
/// <summary>
/// Unique identifier for the membership application
/// </summary>
public int ApplicationId { get; set; }
/// <summary>
/// Alliance being applied to
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Player applying for membership
/// </summary>
public int PlayerId { get; set; }
/// <summary>
/// Player name
/// </summary>
public string PlayerName { get; set; } = string.Empty;
/// <summary>
/// Application status (Pending, UnderReview, Approved, Rejected, Withdrawn)
/// </summary>
public string ApplicationStatus { get; set; } = string.Empty;
/// <summary>
/// Player statistics and qualifications
/// </summary>
public Dictionary<string, object> PlayerStats { get; set; } = new();
/// <summary>
/// Application message from player
/// </summary>
public string ApplicationMessage { get; set; } = string.Empty;
/// <summary>
/// Requirements met by the applicant
/// </summary>
public Dictionary<string, bool> RequirementsMet { get; set; } = new();
/// <summary>
/// Alliance requirements for membership
/// </summary>
public Dictionary<string, object> AllianceRequirements { get; set; } = new();
/// <summary>
/// Reviews from alliance officers
/// </summary>
public List<Dictionary<string, object>> OfficerReviews { get; set; } = new();
/// <summary>
/// Processing timeline and history
/// </summary>
public List<Dictionary<string, object>> ProcessingHistory { get; set; } = new();
/// <summary>
/// Estimated time for decision
/// </summary>
public TimeSpan? EstimatedDecisionTime { get; set; }
/// <summary>
/// Reason for rejection (if applicable)
/// </summary>
public string? RejectionReason { get; set; }
/// <summary>
/// When the application was submitted
/// </summary>
public DateTime ApplicationSubmitted { get; set; }
/// <summary>
/// When this application information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance research advancement operations
/// </summary>
public class ResearchAdvancementResponseDto
{
/// <summary>
/// Alliance identifier conducting research
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Research advancement success status
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Advancement result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Research project that was advanced
/// </summary>
public Dictionary<string, object> ResearchProject { get; set; } = new();
/// <summary>
/// New research level achieved
/// </summary>
public int NewLevel { get; set; }
/// <summary>
/// Previous research level
/// </summary>
public int PreviousLevel { get; set; }
/// <summary>
/// Benefits unlocked by this advancement
/// </summary>
public List<Dictionary<string, object>> UnlockedBenefits { get; set; } = new();
/// <summary>
/// Resource costs for the advancement
/// </summary>
public Dictionary<string, long> AdvancementCosts { get; set; } = new();
/// <summary>
/// Alliance members who contributed to research
/// </summary>
public List<Dictionary<string, object>> Contributors { get; set; } = new();
/// <summary>
/// Next available research opportunities
/// </summary>
public List<Dictionary<string, object>> NextResearchOptions { get; set; } = new();
/// <summary>
/// Research advancement timestamp
/// </summary>
public DateTime AdvancedAt { get; set; }
/// <summary>
/// Estimated time for next research level
/// </summary>
public TimeSpan? EstimatedNextAdvancement { get; set; }
/// <summary>
/// Alliance-wide bonuses gained from advancement
/// </summary>
public Dictionary<string, object> AllianceBonuses { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance research benefits information
/// </summary>
public class ResearchBenefitsResponseDto
{
/// <summary>
/// Alliance identifier receiving benefits
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// All active research benefits by category
/// </summary>
public Dictionary<string, List<Dictionary<string, object>>> ActiveBenefits { get; set; } = new();
/// <summary>
/// Military research benefits and bonuses
/// </summary>
public Dictionary<string, object> MilitaryBenefits { get; set; } = new();
/// <summary>
/// Economic research benefits and bonuses
/// </summary>
public Dictionary<string, object> EconomicBenefits { get; set; } = new();
/// <summary>
/// Technology research benefits and bonuses
/// </summary>
public Dictionary<string, object> TechnologyBenefits { get; set; } = new();
/// <summary>
/// Diplomatic and social research benefits
/// </summary>
public Dictionary<string, object> DiplomaticBenefits { get; set; } = new();
/// <summary>
/// Territory and construction research benefits
/// </summary>
public Dictionary<string, object> TerritoryBenefits { get; set; } = new();
/// <summary>
/// Coalition-specific research bonuses
/// </summary>
public Dictionary<string, object> CoalitionBonuses { get; set; } = new();
/// <summary>
/// Member-specific benefits distribution
/// </summary>
public Dictionary<int, Dictionary<string, object>> MemberBenefits { get; set; } = new();
/// <summary>
/// Total research power and effectiveness ratings
/// </summary>
public Dictionary<string, double> EffectivenessRatings { get; set; } = new();
/// <summary>
/// Upcoming research benefits that can be unlocked
/// </summary>
public List<Dictionary<string, object>> UpcomingBenefits { get; set; } = new();
/// <summary>
/// When benefits information was last calculated
/// </summary>
public DateTime LastCalculated { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance research status information
/// </summary>
public class ResearchStatusResponseDto
{
/// <summary>
/// Alliance identifier for research status
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Overall alliance research power level
/// </summary>
public int OverallResearchLevel { get; set; }
/// <summary>
/// Total research points accumulated
/// </summary>
public long TotalResearchPoints { get; set; }
/// <summary>
/// Available research points for spending
/// </summary>
public long AvailableResearchPoints { get; set; }
/// <summary>
/// Military research tree progress
/// </summary>
public Dictionary<string, object> MilitaryResearch { get; set; } = new();
/// <summary>
/// Economic research tree progress
/// </summary>
public Dictionary<string, object> EconomicResearch { get; set; } = new();
/// <summary>
/// Technology research tree progress
/// </summary>
public Dictionary<string, object> TechnologyResearch { get; set; } = new();
/// <summary>
/// Diplomatic research tree progress
/// </summary>
public Dictionary<string, object> DiplomaticResearch { get; set; } = new();
/// <summary>
/// Territory and construction research progress
/// </summary>
public Dictionary<string, object> TerritoryResearch { get; set; } = new();
/// <summary>
/// Currently active research projects
/// </summary>
public List<Dictionary<string, object>> ActiveProjects { get; set; } = new();
/// <summary>
/// Research projects available for starting
/// </summary>
public List<Dictionary<string, object>> AvailableProjects { get; set; } = new();
/// <summary>
/// Member contribution statistics
/// </summary>
public Dictionary<int, Dictionary<string, object>> MemberContributions { get; set; } = new();
/// <summary>
/// Research rate and efficiency bonuses
/// </summary>
public Dictionary<string, double> ResearchBonuses { get; set; } = new();
/// <summary>
/// When research status was last updated
/// </summary>
public DateTime LastUpdated { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance resource trading operations and market participation
/// </summary>
public class ResourceTradingRequestDto
{
/// <summary>
/// Type of trade (Direct, Market, Coalition, Emergency)
/// </summary>
[Required]
[StringLength(50)]
public string TradeType { get; set; } = string.Empty;
/// <summary>
/// Trading action (CreateOffer, AcceptOffer, CounterOffer, CancelTrade)
/// </summary>
[Required]
[StringLength(50)]
public string TradeAction { get; set; } = string.Empty;
/// <summary>
/// Resources to offer in trade
/// </summary>
public Dictionary<string, decimal> OfferedResources { get; set; } = new();
/// <summary>
/// Resources to request in trade
/// </summary>
public Dictionary<string, decimal> RequestedResources { get; set; } = new();
/// <summary>
/// Target alliance for direct trades
/// </summary>
public int? TargetAllianceId { get; set; }
/// <summary>
/// Existing trade ID (for modifications)
/// </summary>
public int? ExistingTradeId { get; set; }
/// <summary>
/// Maximum acceptable exchange rate variance (percentage)
/// </summary>
[Range(0, 100)]
public decimal MaxRateVariance { get; set; } = 10;
/// <summary>
/// Trade duration in hours
/// </summary>
[Range(1, 168)]
public int TradeDurationHours { get; set; } = 24;
/// <summary>
/// Priority level for this trade (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 3;
/// <summary>
/// Whether to include coalition allies in trade
/// </summary>
public bool IncludeCoalitionAllies { get; set; } = false;
/// <summary>
/// Trading parameters and special conditions
/// </summary>
public Dictionary<string, object>? TradingParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance resource trading operations and market data
/// </summary>
public class ResourceTradingResponseDto
{
/// <summary>
/// Unique identifier for the trading operation
/// </summary>
public int TradeId { get; set; }
/// <summary>
/// Alliance initiating the trade
/// </summary>
public int InitiatingAllianceId { get; set; }
/// <summary>
/// Alliance receiving the trade (if direct trade)
/// </summary>
public int? TargetAllianceId { get; set; }
/// <summary>
/// Type of trade (Direct, Market, Coalition, Emergency)
/// </summary>
public string TradeType { get; set; } = string.Empty;
/// <summary>
/// Resources being offered
/// </summary>
public Dictionary<string, decimal> OfferedResources { get; set; } = new();
/// <summary>
/// Resources being requested
/// </summary>
public Dictionary<string, decimal> RequestedResources { get; set; } = new();
/// <summary>
/// Current trade exchange rates
/// </summary>
public Dictionary<string, decimal> ExchangeRates { get; set; } = new();
/// <summary>
/// Trade status (Pending, Active, Completed, Cancelled, Expired)
/// </summary>
public string TradeStatus { get; set; } = string.Empty;
/// <summary>
/// Available trading partners
/// </summary>
public List<Dictionary<string, object>> TradingPartners { get; set; } = new();
/// <summary>
/// Active market offers
/// </summary>
public List<Dictionary<string, object>> MarketOffers { get; set; } = new();
/// <summary>
/// Trade history and trends
/// </summary>
public List<Dictionary<string, object>> TradeHistory { get; set; } = new();
/// <summary>
/// Coalition trading benefits
/// </summary>
public Dictionary<string, object> CoalitionBenefits { get; set; } = new();
/// <summary>
/// Trade completion percentage
/// </summary>
public decimal CompletionPercentage { get; set; }
/// <summary>
/// Time remaining for trade completion
/// </summary>
public TimeSpan? TradeTimeRemaining { get; set; }
/// <summary>
/// Trading fees and costs
/// </summary>
public Dictionary<string, decimal> TradingCosts { get; set; } = new();
/// <summary>
/// When this trading information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance role management operations
/// </summary>
public class RoleManagementRequestDto
{
/// <summary>
/// Player to modify role for
/// </summary>
[Required]
public int PlayerId { get; set; }
/// <summary>
/// Action to take (Promote, Demote, Assign, Remove, Transfer)
/// </summary>
[Required]
[StringLength(50)]
public string Action { get; set; } = string.Empty;
/// <summary>
/// Target role for the action
/// </summary>
[Required]
[StringLength(50)]
public string TargetRole { get; set; } = string.Empty;
/// <summary>
/// Previous role (for validation)
/// </summary>
[StringLength(50)]
public string? PreviousRole { get; set; }
/// <summary>
/// Justification for the role change
/// </summary>
[StringLength(500)]
public string? Justification { get; set; }
/// <summary>
/// Whether to notify the player of the change
/// </summary>
public bool NotifyPlayer { get; set; } = true;
/// <summary>
/// Custom permissions to grant (if supported)
/// </summary>
public Dictionary<string, bool>? CustomPermissions { get; set; }
/// <summary>
/// Role change parameters and conditions
/// </summary>
public Dictionary<string, object>? RoleParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance role management and hierarchy
/// </summary>
public class RoleManagementResponseDto
{
/// <summary>
/// Alliance ID for role management
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Complete alliance hierarchy structure
/// </summary>
public Dictionary<string, object> AllianceHierarchy { get; set; } = new();
/// <summary>
/// Available roles and their permissions
/// </summary>
public List<Dictionary<string, object>> AvailableRoles { get; set; } = new();
/// <summary>
/// Current role assignments
/// </summary>
public List<Dictionary<string, object>> RoleAssignments { get; set; } = new();
/// <summary>
/// Role change history
/// </summary>
public List<Dictionary<string, object>> RoleHistory { get; set; } = new();
/// <summary>
/// Permission matrix for each role
/// </summary>
public Dictionary<string, Dictionary<string, bool>> PermissionMatrix { get; set; } = new();
/// <summary>
/// Members eligible for promotion
/// </summary>
public List<Dictionary<string, object>> PromotionCandidates { get; set; } = new();
/// <summary>
/// Pending role change requests
/// </summary>
public List<Dictionary<string, object>> PendingRequests { get; set; } = new();
/// <summary>
/// Role capacity limits
/// </summary>
public Dictionary<string, int> RoleCapacities { get; set; } = new();
/// <summary>
/// Current role utilization
/// </summary>
public Dictionary<string, int> RoleUtilization { get; set; } = new();
/// <summary>
/// When role information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance territory claim operations
/// </summary>
public class TerritoryClaimRequestDto
{
/// <summary>
/// Target territory coordinates for claiming
/// </summary>
[Required]
public Dictionary<string, object> TargetCoordinates { get; set; } = new();
/// <summary>
/// Claim strategy and approach
/// </summary>
[Required]
public string ClaimStrategy { get; set; } = string.Empty;
/// <summary>
/// Resource allocation for territory claim
/// </summary>
public Dictionary<string, long>? ResourceAllocation { get; set; }
/// <summary>
/// Military units assigned to claim operation
/// </summary>
public List<Dictionary<string, object>>? MilitaryAssignment { get; set; }
/// <summary>
/// Claim priority level
/// </summary>
[Range(1, 10)]
public int ClaimPriority { get; set; } = 5;
/// <summary>
/// Expected claim duration
/// </summary>
public TimeSpan? ExpectedDuration { get; set; }
/// <summary>
/// Coalition coordination for claim
/// </summary>
public Dictionary<string, object>? CoalitionCoordination { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance territory claim operations
/// </summary>
public class TerritoryClaimResponseDto
{
/// <summary>
/// Alliance identifier claiming territory
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Territory claim success status
/// </summary>
public bool Success { get; set; }
/// <summary>
/// Claim result message
/// </summary>
public string Message { get; set; } = string.Empty;
/// <summary>
/// Claimed territory information
/// </summary>
public Dictionary<string, object> ClaimedTerritory { get; set; } = new();
/// <summary>
/// Territory coordinates and boundaries
/// </summary>
public Dictionary<string, object> TerritoryBoundaries { get; set; } = new();
/// <summary>
/// Resource nodes and strategic points in territory
/// </summary>
public List<Dictionary<string, object>> TerritoryAssets { get; set; } = new();
/// <summary>
/// Claim costs and requirements met
/// </summary>
public Dictionary<string, long> ClaimCosts { get; set; } = new();
/// <summary>
/// Territory claim timestamp
/// </summary>
public DateTime ClaimedAt { get; set; }
/// <summary>
/// Territory control percentage
/// </summary>
public double ControlPercentage { get; set; }
/// <summary>
/// Neighboring territories and potential conflicts
/// </summary>
public List<Dictionary<string, object>> NeighboringTerritories { get; set; } = new();
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance territory defense operations
/// </summary>
public class TerritoryDefenseRequestDto
{
/// <summary>
/// Territory to defend
/// </summary>
[Required]
public int TerritoryId { get; set; }
/// <summary>
/// Type of defense operation (Prepare, Reinforce, Evacuate, CounterAttack)
/// </summary>
[Required]
[StringLength(50)]
public string DefenseType { get; set; } = string.Empty;
/// <summary>
/// Forces to deploy for defense
/// </summary>
public Dictionary<string, int> ForceDeployment { get; set; } = new();
/// <summary>
/// Coalition allies to request support from
/// </summary>
public List<int> CoalitionSupportRequest { get; set; } = new();
/// <summary>
/// Defense strategy and tactics
/// </summary>
[StringLength(500)]
public string? DefenseStrategy { get; set; }
/// <summary>
/// Priority level for this defense (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 4;
/// <summary>
/// Resources to allocate for defense
/// </summary>
public Dictionary<string, decimal> ResourceAllocation { get; set; } = new();
/// <summary>
/// Whether to use emergency protocols
/// </summary>
public bool UseEmergencyProtocols { get; set; } = false;
/// <summary>
/// Defense parameters and special conditions
/// </summary>
public Dictionary<string, object>? DefenseParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance territory defense operations
/// </summary>
public class TerritoryDefenseResponseDto
{
/// <summary>
/// Unique identifier for the defense operation
/// </summary>
public int DefenseId { get; set; }
/// <summary>
/// Alliance ID defending the territory
/// </summary>
public int DefendingAllianceId { get; set; }
/// <summary>
/// Territory being defended
/// </summary>
public Dictionary<string, object> Territory { get; set; } = new();
/// <summary>
/// Current threat level (1-10)
/// </summary>
public int ThreatLevel { get; set; }
/// <summary>
/// Attacking forces detected
/// </summary>
public List<Dictionary<string, object>> AttackingForces { get; set; } = new();
/// <summary>
/// Defensive forces deployed
/// </summary>
public Dictionary<string, int> DefensiveForces { get; set; } = new();
/// <summary>
/// Defensive structures and their status
/// </summary>
public Dictionary<string, object> DefensiveStructures { get; set; } = new();
/// <summary>
/// Coalition allies providing support
/// </summary>
public List<Dictionary<string, object>> CoalitionSupport { get; set; } = new();
/// <summary>
/// Defense strategy being employed
/// </summary>
public string DefenseStrategy { get; set; } = string.Empty;
/// <summary>
/// Estimated time until attack arrives
/// </summary>
public TimeSpan? TimeToAttack { get; set; }
/// <summary>
/// Defense readiness percentage (0-100)
/// </summary>
public decimal ReadinessPercentage { get; set; }
/// <summary>
/// Recent defensive actions taken
/// </summary>
public List<Dictionary<string, object>> RecentActions { get; set; } = new();
/// <summary>
/// Defense status (Preparing, Ready, UnderAttack, Repelled, Breached)
/// </summary>
public string DefenseStatus { get; set; } = string.Empty;
/// <summary>
/// When this defense information was last updated
/// </summary>
public DateTime LastUpdated { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Request DTO for alliance treasury operations and resource management
/// </summary>
public class TreasuryOperationRequestDto
{
/// <summary>
/// Type of operation (Deposit, Withdraw, Transfer, Allocation, Tax)
/// </summary>
[Required]
[StringLength(50)]
public string OperationType { get; set; } = string.Empty;
/// <summary>
/// Resources to operate on
/// </summary>
[Required]
public Dictionary<string, decimal> ResourceAmounts { get; set; } = new();
/// <summary>
/// Purpose or reason for the operation
/// </summary>
[Required]
[StringLength(500)]
public string OperationPurpose { get; set; } = string.Empty;
/// <summary>
/// Target alliance (for transfers)
/// </summary>
public int? TargetAllianceId { get; set; }
/// <summary>
/// Target player (for distributions)
/// </summary>
public int? TargetPlayerId { get; set; }
/// <summary>
/// Priority level for this operation (1-5)
/// </summary>
[Range(1, 5)]
public int Priority { get; set; } = 3;
/// <summary>
/// Whether to require officer approval
/// </summary>
public bool RequireApproval { get; set; } = true;
/// <summary>
/// Scheduled execution time (for delayed operations)
/// </summary>
public DateTime? ScheduledExecution { get; set; }
/// <summary>
/// Operation parameters and special conditions
/// </summary>
public Dictionary<string, object>? OperationParameters { get; set; }
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance treasury operations and transactions
/// </summary>
public class TreasuryOperationResponseDto
{
/// <summary>
/// Unique identifier for the treasury operation
/// </summary>
public int OperationId { get; set; }
/// <summary>
/// Alliance treasury involved
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Type of operation (Deposit, Withdraw, Transfer, Allocation, Tax)
/// </summary>
public string OperationType { get; set; } = string.Empty;
/// <summary>
/// Player who initiated the operation
/// </summary>
public int InitiatedBy { get; set; }
/// <summary>
/// Name of the player who initiated operation
/// </summary>
public string InitiatedByName { get; set; } = string.Empty;
/// <summary>
/// Resources involved in the operation
/// </summary>
public Dictionary<string, decimal> ResourceAmounts { get; set; } = new();
/// <summary>
/// Treasury balances before operation
/// </summary>
public Dictionary<string, decimal> BalancesBefore { get; set; } = new();
/// <summary>
/// Treasury balances after operation
/// </summary>
public Dictionary<string, decimal> BalancesAfter { get; set; } = new();
/// <summary>
/// Purpose or reason for the operation
/// </summary>
public string OperationPurpose { get; set; } = string.Empty;
/// <summary>
/// Whether the operation was successful
/// </summary>
public bool OperationSuccessful { get; set; }
/// <summary>
/// Any errors or issues during operation
/// </summary>
public string? OperationErrors { get; set; }
/// <summary>
/// Officers who approved the operation
/// </summary>
public List<Dictionary<string, object>> ApprovalChain { get; set; } = new();
/// <summary>
/// Transaction fees or costs
/// </summary>
public Dictionary<string, decimal> TransactionCosts { get; set; } = new();
/// <summary>
/// Impact on alliance operations
/// </summary>
public Dictionary<string, object> OperationalImpact { get; set; } = new();
/// <summary>
/// When the operation was completed
/// </summary>
public DateTime OperationCompleted { get; set; } = DateTime.UtcNow;
}
}

View File

@ -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
{
/// <summary>
/// Response DTO for alliance treasury status and financial overview
/// </summary>
public class TreasuryStatusResponseDto
{
/// <summary>
/// Alliance ID for treasury status
/// </summary>
public int AllianceId { get; set; }
/// <summary>
/// Alliance name
/// </summary>
public string AllianceName { get; set; } = string.Empty;
/// <summary>
/// Current treasury balances by resource type
/// </summary>
public Dictionary<string, decimal> CurrentBalances { get; set; } = new();
/// <summary>
/// Treasury capacity limits
/// </summary>
public Dictionary<string, decimal> CapacityLimits { get; set; } = new();
/// <summary>
/// Treasury utilization percentages
/// </summary>
public Dictionary<string, decimal> UtilizationPercentages { get; set; } = new();
/// <summary>
/// Daily income from various sources
/// </summary>
public Dictionary<string, decimal> DailyIncome { get; set; } = new();
/// <summary>
/// Daily expenditures by category
/// </summary>
public Dictionary<string, decimal> DailyExpenses { get; set; } = new();
/// <summary>
/// Net daily treasury flow (income - expenses)
/// </summary>
public Dictionary<string, decimal> NetDailyFlow { get; set; } = new();
/// <summary>
/// Recent treasury transactions
/// </summary>
public List<Dictionary<string, object>> RecentTransactions { get; set; } = new();
/// <summary>
/// Pending treasury operations
/// </summary>
public List<Dictionary<string, object>> PendingOperations { get; set; } = new();
/// <summary>
/// Treasury access permissions by role
/// </summary>
public Dictionary<string, Dictionary<string, bool>> AccessPermissions { get; set; } = new();
/// <summary>
/// Financial health indicators
/// </summary>
public Dictionary<string, decimal> HealthIndicators { get; set; } = new();
/// <summary>
/// Resource allocation by category
/// </summary>
public Dictionary<string, decimal> ResourceAllocations { get; set; } = new();
/// <summary>
/// Treasury growth trends over time
/// </summary>
public Dictionary<string, List<Dictionary<string, object>>> GrowthTrends { get; set; } = new();
/// <summary>
/// Emergency reserve status
/// </summary>
public Dictionary<string, object> EmergencyReserves { get; set; } = new();
/// <summary>
/// When this treasury status was last calculated
/// </summary>
public DateTime StatusCalculated { get; set; } = DateTime.UtcNow;
}
}