matt 9a7fa52bc4 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
2025-10-22 17:11:29 -05:00

96 lines
2.9 KiB
C#

/*
* 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;
}
}