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:
parent
206ca8e6b6
commit
9a7fa52bc4
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user