diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceStatusResponseDto.cs new file mode 100644 index 0000000..dc488c5 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/AllianceStatusResponseDto.cs @@ -0,0 +1,56 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\AllianceStatusResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for alliance status information + * Last Edit Notes: Individual file implementation for alliance status and coalition data + */ + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Response DTO for alliance status information + /// + public class AllianceStatusResponseDto + { + /// + /// Alliance identifier + /// + public int AllianceId { get; set; } + + /// + /// Alliance name + /// + public string AllianceName { get; set; } = string.Empty; + + /// + /// Current member count + /// + public int MemberCount { get; set; } + + /// + /// Alliance level and progression + /// + public Dictionary AllianceLevel { get; set; } = new(); + + /// + /// Current coalition memberships + /// + public List> CoalitionMemberships { get; set; } = new(); + + /// + /// Alliance territory information + /// + public Dictionary Territory { get; set; } = new(); + + /// + /// Research progress across all trees + /// + public Dictionary ResearchProgress { get; set; } = new(); + + /// + /// When status was last updated + /// + public DateTime LastUpdated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionCreationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionCreationRequestDto.cs new file mode 100644 index 0000000..bbfb590 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/CoalitionCreationRequestDto.cs @@ -0,0 +1,42 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\CoalitionCreationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for coalition creation + * Last Edit Notes: Individual file implementation for coalition creation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for coalition creation + /// + public class CoalitionCreationRequestDto + { + /// + /// Name for the new coalition + /// + [Required] + [StringLength(100)] + public string CoalitionName { get; set; } = string.Empty; + + /// + /// Initial member alliances + /// + [Required] + public List MemberAlliances { get; set; } = new(); + + /// + /// Coalition purpose and objectives + /// + [StringLength(500)] + public string? Purpose { get; set; } + + /// + /// Coalition parameters and settings + /// + public Dictionary? CoalitionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementRequestDto.cs new file mode 100644 index 0000000..383122e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Alliance/ResearchAdvancementRequestDto.cs @@ -0,0 +1,44 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Alliance\ResearchAdvancementRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for research advancement + * Last Edit Notes: Individual file implementation for research advancement input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Alliance +{ + /// + /// Request DTO for research advancement + /// + public class ResearchAdvancementRequestDto + { + /// + /// Research tree branch (Military, Economic, Technology) + /// + [Required] + [StringLength(50)] + public string ResearchBranch { get; set; } = string.Empty; + + /// + /// Specific research item to advance + /// + [Required] + [StringLength(100)] + public string ResearchItem { get; set; } = string.Empty; + + /// + /// Resource allocation for research + /// + [Required] + public Dictionary ResourceAllocation { get; set; } = new(); + + /// + /// Priority level for research + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleExecutionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleExecutionResponseDto.cs new file mode 100644 index 0000000..5bc1f1e --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleExecutionResponseDto.cs @@ -0,0 +1,56 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\BattleExecutionResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for battle execution results + * Last Edit Notes: Individual file implementation for battle execution results + */ + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Response DTO for battle execution results + /// + public class BattleExecutionResponseDto + { + /// + /// Unique battle identifier + /// + public int BattleId { get; set; } + + /// + /// Attacking player in the battle + /// + public int AttackerPlayerId { get; set; } + + /// + /// Defending player in the battle + /// + public int DefenderPlayerId { get; set; } + + /// + /// Winner of the battle + /// + public string Winner { get; set; } = string.Empty; + + /// + /// Complete battle results and statistics + /// + public Dictionary BattleResults { get; set; } = new(); + + /// + /// Experience gains for participants + /// + public Dictionary ExperienceGains { get; set; } = new(); + + /// + /// Resource transfers from battle + /// + public Dictionary ResourceTransfers { get; set; } = new(); + + /// + /// When the battle was completed + /// + public DateTime BattleTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleReplayResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleReplayResponseDto.cs new file mode 100644 index 0000000..de7b971 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/BattleReplayResponseDto.cs @@ -0,0 +1,41 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\BattleReplayResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for battle replay data + * Last Edit Notes: Individual file implementation for battle replay information + */ + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Response DTO for battle replay data + /// + public class BattleReplayResponseDto + { + /// + /// Battle ID for the replay + /// + public int BattleId { get; set; } + + /// + /// Complete battle replay data + /// + public Dictionary ReplayData { get; set; } = new(); + + /// + /// Battle participants information + /// + public Dictionary Participants { get; set; } = new(); + + /// + /// Battle timeline and phases + /// + public List> BattleTimeline { get; set; } = new(); + + /// + /// When the replay was generated + /// + public DateTime ReplayGeneratedAt { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatAnalyticsResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatAnalyticsResponseDto.cs new file mode 100644 index 0000000..04cda1c --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatAnalyticsResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\CombatAnalyticsResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for combat analytics + * Last Edit Notes: Individual file implementation for combat analytics data + */ + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Response DTO for combat analytics + /// + public class CombatAnalyticsResponseDto + { + /// + /// Player ID for analytics + /// + public int PlayerId { get; set; } + + /// + /// Timeframe covered by analytics + /// + public int TimeframeDays { get; set; } + + /// + /// Complete combat analytics data + /// + public Dictionary Analytics { get; set; } = new(); + + /// + /// Comparative data against kingdom averages + /// + public Dictionary? KingdomComparison { get; set; } + + /// + /// Performance trends over time + /// + public Dictionary? Trends { get; set; } + + /// + /// When analytics were generated + /// + public DateTime GeneratedAt { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatEffectivenessRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatEffectivenessRequestDto.cs new file mode 100644 index 0000000..4fd1881 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/CombatEffectivenessRequestDto.cs @@ -0,0 +1,39 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\CombatEffectivenessRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for combat effectiveness analysis + * Last Edit Notes: Individual file implementation for combat effectiveness analysis input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for combat effectiveness analysis + /// + public class CombatEffectivenessRequestDto + { + /// + /// Timeframe for effectiveness analysis + /// + [Range(1, 365)] + public int TimeframeDays { get; set; } = 30; + + /// + /// Include comparison with spending patterns + /// + public bool IncludeSpendingAnalysis { get; set; } = true; + + /// + /// Specific combat types to analyze + /// + public List? CombatTypes { get; set; } + + /// + /// Additional analysis parameters + /// + public Dictionary? AnalysisParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/DragonValidationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/DragonValidationRequestDto.cs new file mode 100644 index 0000000..9771981 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/DragonValidationRequestDto.cs @@ -0,0 +1,41 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\DragonValidationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for dragon validation in combat + * Last Edit Notes: Individual file implementation for dragon validation input + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for dragon validation in combat + /// + public class DragonValidationRequestDto + { + /// + /// Dragon being validated for combat + /// + [Required] + public Dictionary DragonData { get; set; } = new(); + + /// + /// Combat context for validation + /// + [Required] + [StringLength(50)] + public string CombatContext { get; set; } = string.Empty; + + /// + /// Troop composition the dragon will accompany + /// + public Dictionary? TroopComposition { get; set; } + + /// + /// Target information for validation + /// + public Dictionary? TargetInfo { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/FieldInterceptionRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/FieldInterceptionRequestDto.cs new file mode 100644 index 0000000..f234ff0 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/FieldInterceptionRequestDto.cs @@ -0,0 +1,47 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\FieldInterceptionRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for field interception execution + * Last Edit Notes: Individual file implementation for field interception execution input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for field interception execution + /// + public class FieldInterceptionRequestDto + { + /// + /// Player being intercepted + /// + [Required] + [Range(1, int.MaxValue)] + public int AttackingPlayerId { get; set; } + + /// + /// Interception point coordinates + /// + [Required] + public (int X, int Y) InterceptionPoint { get; set; } + + /// + /// Troops being deployed for interception + /// + [Required] + public Dictionary DefenderTroops { get; set; } = new(); + + /// + /// Dragon deployment for interception + /// + public Dictionary? DragonDeployment { get; set; } + + /// + /// Tactical preferences for the interception + /// + public Dictionary? TacticalPreferences { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionCalculationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionCalculationRequestDto.cs new file mode 100644 index 0000000..07c43a9 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionCalculationRequestDto.cs @@ -0,0 +1,41 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\InterceptionCalculationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for interception opportunities calculation + * Last Edit Notes: Individual file implementation for interception calculation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for interception opportunities calculation + /// + public class InterceptionCalculationRequestDto + { + /// + /// ID of the attacking player to intercept + /// + [Required] + [Range(1, int.MaxValue)] + public int AttackingPlayerId { get; set; } + + /// + /// Attack route information + /// + [Required] + public List<(int X, int Y)> AttackRoute { get; set; } = new(); + + /// + /// Expected arrival time of attacking forces + /// + public DateTime? EstimatedArrivalTime { get; set; } + + /// + /// Additional calculation parameters + /// + public Dictionary? CalculationParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionOpportunitiesResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionOpportunitiesResponseDto.cs new file mode 100644 index 0000000..bed6f9f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/InterceptionOpportunitiesResponseDto.cs @@ -0,0 +1,36 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\InterceptionOpportunitiesResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for field interception opportunities - core innovation feature + * Last Edit Notes: Individual file implementation for defender interception calculation system + */ + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Response DTO for field interception opportunities calculation + /// + public class InterceptionOpportunitiesResponseDto + { + /// + /// Defending player calculating interceptions + /// + public int DefendingPlayerId { get; set; } + + /// + /// Attacking player being intercepted + /// + public int AttackingPlayerId { get; set; } + + /// + /// All available interception opportunities with timing and positioning + /// + public Dictionary InterceptionOpportunities { get; set; } = new(); + + /// + /// When the calculation was performed + /// + public DateTime CalculationTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchCancellationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchCancellationRequestDto.cs new file mode 100644 index 0000000..0811595 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchCancellationRequestDto.cs @@ -0,0 +1,36 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchCancellationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for march cancellation + * Last Edit Notes: Individual file implementation for march cancellation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for march cancellation + /// + public class MarchCancellationRequestDto + { + /// + /// ID of the march to cancel + /// + [Required] + [Range(1, int.MaxValue)] + public int MarchId { get; set; } + + /// + /// Reason for cancellation + /// + [StringLength(200)] + public string? CancellationReason { get; set; } + + /// + /// Whether to apply early return penalties + /// + public bool AcceptPenalties { get; set; } = true; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchInitiationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchInitiationRequestDto.cs new file mode 100644 index 0000000..cf718fb --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchInitiationRequestDto.cs @@ -0,0 +1,52 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchInitiationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for march initiation + * Last Edit Notes: Individual file implementation for march initiation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Request DTO for march initiation + /// + public class MarchInitiationRequestDto + { + /// + /// Target destination coordinates + /// + [Required] + public (int X, int Y) Destination { get; set; } + + /// + /// Troops being marched + /// + [Required] + public Dictionary Troops { get; set; } = new(); + + /// + /// March type (Attack, Rally, Reinforce, etc.) + /// + [Required] + [StringLength(50)] + public string MarchType { get; set; } = string.Empty; + + /// + /// Dragon accompanying the march + /// + public Dictionary? DragonDetails { get; set; } + + /// + /// March priority and speed preferences + /// + public Dictionary? MarchPreferences { get; set; } + + /// + /// Target player ID (for attacks) + /// + public int? TargetPlayerId { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchSpeedResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchSpeedResponseDto.cs new file mode 100644 index 0000000..b2c7cbe --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Combat/MarchSpeedResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Combat\MarchSpeedResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for march speed calculations + * Last Edit Notes: Individual file implementation for march speed calculation results + */ + +namespace ShadowedRealms.Shared.DTOs.Combat +{ + /// + /// Response DTO for march speed calculations + /// + public class MarchSpeedResponseDto + { + /// + /// Base march speed + /// + public decimal BaseSpeed { get; set; } + + /// + /// Final calculated speed after all modifiers + /// + public decimal FinalSpeed { get; set; } + + /// + /// Speed modifiers applied + /// + public Dictionary SpeedModifiers { get; set; } = new(); + + /// + /// Estimated travel time to destination + /// + public TimeSpan EstimatedTravelTime { get; set; } + + /// + /// Any limitations or restrictions on movement + /// + public List MovementRestrictions { get; set; } = new(); + + /// + /// When the calculation was performed + /// + public DateTime CalculatedAt { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/ErrorResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/ErrorResponseDto.cs new file mode 100644 index 0000000..bc57d01 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/ErrorResponseDto.cs @@ -0,0 +1,45 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Common\ErrorResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Standard error response DTO for consistent API error handling across all controllers + * Last Edit Notes: Individual file implementation with validation error support and contextual error information + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Common +{ + /// + /// Standard error response for all API endpoints + /// + public class ErrorResponseDto + { + /// + /// Human-readable error message + /// + [Required] + public string Message { get; set; } = string.Empty; + + /// + /// Error code for client handling + /// + [Required] + public string Code { get; set; } = string.Empty; + + /// + /// Additional error details + /// + public Dictionary? Details { get; set; } + + /// + /// Validation errors from model binding + /// + public Dictionary? ValidationErrors { get; set; } + + /// + /// Timestamp when error occurred + /// + public DateTime Timestamp { get; set; } = DateTime.UtcNow; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/SuccessResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/SuccessResponseDto.cs new file mode 100644 index 0000000..3e3acb6 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Common/SuccessResponseDto.cs @@ -0,0 +1,36 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Common\SuccessResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Standard success response DTO for API operations that don't return specific data + * Last Edit Notes: Individual file implementation for consistent success messaging across controllers + */ + +namespace ShadowedRealms.Shared.DTOs.Common +{ + /// + /// Standard success response for operations that don't return specific data + /// + public class SuccessResponseDto + { + /// + /// Success message + /// + public string Message { get; set; } = "Operation completed successfully"; + + /// + /// Success indicator + /// + public bool Success { get; set; } = true; + + /// + /// Operation timestamp + /// + public DateTime Timestamp { get; set; } = DateTime.UtcNow; + + /// + /// Additional success details + /// + public Dictionary? Details { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KingdomStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KingdomStatusResponseDto.cs new file mode 100644 index 0000000..979cdde --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KingdomStatusResponseDto.cs @@ -0,0 +1,51 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Kingdom\KingdomStatusResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for kingdom status information + * Last Edit Notes: Individual file implementation for kingdom status and leadership data + */ + +namespace ShadowedRealms.Shared.DTOs.Kingdom +{ + /// + /// Response DTO for kingdom status information + /// + public class KingdomStatusResponseDto + { + /// + /// Kingdom identifier + /// + public int KingdomId { get; set; } + + /// + /// Kingdom name + /// + public string KingdomName { get; set; } = string.Empty; + + /// + /// Current population count + /// + public int Population { get; set; } + + /// + /// Kingdom leadership information + /// + public Dictionary Leadership { get; set; } = new(); + + /// + /// Current KvK event status + /// + public Dictionary? KvKStatus { get; set; } + + /// + /// Kingdom statistics and metrics + /// + public Dictionary Statistics { get; set; } = new(); + + /// + /// When the status was last updated + /// + public DateTime LastUpdated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KvKEventRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KvKEventRequestDto.cs new file mode 100644 index 0000000..c607e20 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/KvKEventRequestDto.cs @@ -0,0 +1,47 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Kingdom\KvKEventRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for KvK event creation + * Last Edit Notes: Individual file implementation for KvK event creation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Kingdom +{ + /// + /// Request DTO for KvK event creation + /// + public class KvKEventRequestDto + { + /// + /// Type of KvK event to create + /// + [Required] + [StringLength(50)] + public string EventType { get; set; } = string.Empty; + + /// + /// Opposing kingdoms for the event + /// + [Required] + public List OpposingKingdoms { get; set; } = new(); + + /// + /// Event scheduling preferences + /// + public DateTime? PreferredStartTime { get; set; } + + /// + /// Event duration in hours + /// + [Range(1, 168)] // 1 hour to 1 week + public int DurationHours { get; set; } = 72; + + /// + /// Event-specific parameters + /// + public Dictionary? EventParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/TaxDistributionResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/TaxDistributionResponseDto.cs new file mode 100644 index 0000000..31f1dc4 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/TaxDistributionResponseDto.cs @@ -0,0 +1,41 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Kingdom\TaxDistributionResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for tax distribution operations + * Last Edit Notes: Individual file implementation for tax distribution results + */ + +namespace ShadowedRealms.Shared.DTOs.Kingdom +{ + /// + /// Response DTO for tax distribution operations + /// + public class TaxDistributionResponseDto + { + /// + /// Kingdom performing the distribution + /// + public int KingdomId { get; set; } + + /// + /// Total tax amount distributed + /// + public decimal TotalDistributed { get; set; } + + /// + /// Distribution breakdown by recipient + /// + public Dictionary DistributionBreakdown { get; set; } = new(); + + /// + /// Distribution method used + /// + public string DistributionMethod { get; set; } = string.Empty; + + /// + /// When the distribution was completed + /// + public DateTime DistributionTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/VotingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/VotingRequestDto.cs new file mode 100644 index 0000000..b5e1df2 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Kingdom/VotingRequestDto.cs @@ -0,0 +1,45 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Kingdom\VotingRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for democratic voting operations + * Last Edit Notes: Individual file implementation for democratic voting input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Kingdom +{ + /// + /// Request DTO for democratic voting operations + /// + public class VotingRequestDto + { + /// + /// Type of vote being cast + /// + [Required] + [StringLength(50)] + public string VoteType { get; set; } = string.Empty; + + /// + /// ID of the item being voted on + /// + [Required] + [Range(1, int.MaxValue)] + public int VoteItemId { get; set; } + + /// + /// Vote choice (Yes/No, candidate ID, etc.) + /// + [Required] + [StringLength(100)] + public string VoteChoice { get; set; } = string.Empty; + + /// + /// Optional reasoning for the vote + /// + [StringLength(500)] + public string? VoteReasoning { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/AllianceJoinRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/AllianceJoinRequestDto.cs new file mode 100644 index 0000000..0e874db --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/AllianceJoinRequestDto.cs @@ -0,0 +1,37 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\AllianceJoinRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for alliance join operations + * Last Edit Notes: Individual file implementation for alliance join input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Request DTO for alliance join operations + /// + public class AllianceJoinRequestDto + { + /// + /// Alliance to join + /// + [Required] + [Range(1, int.MaxValue)] + public int AllianceId { get; set; } + + /// + /// Optional message to alliance leadership + /// + [StringLength(500)] + public string? Message { get; set; } + + /// + /// Player's preferred role if accepted + /// + [StringLength(50)] + public string? PreferredRole { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeRequestDto.cs new file mode 100644 index 0000000..1f9d414 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeRequestDto.cs @@ -0,0 +1,34 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CastleUpgradeRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for castle upgrade operations + * Last Edit Notes: Individual file implementation for castle upgrade input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Request DTO for castle upgrade operations + /// + public class CastleUpgradeRequestDto + { + /// + /// Whether to use VIP bonuses if available + /// + public bool UseVipBonuses { get; set; } = true; + + /// + /// Resource allocation for upgrade + /// + public Dictionary ResourceAllocation { get; set; } = new(); + + /// + /// Priority level for upgrade processing + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeResponseDto.cs new file mode 100644 index 0000000..58f5ed9 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CastleUpgradeResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CastleUpgradeResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for castle upgrade operations + * Last Edit Notes: Individual file implementation for castle upgrade results + */ + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for castle upgrade operations + /// + public class CastleUpgradeResponseDto + { + /// + /// Player ID who performed the upgrade + /// + public int PlayerId { get; set; } + + /// + /// Whether the upgrade was successful + /// + public bool Success { get; set; } + + /// + /// New castle level after upgrade + /// + public int NewCastleLevel { get; set; } + + /// + /// Benefits granted from the upgrade + /// + public Dictionary BenefitsGranted { get; set; } = new(); + + /// + /// When the upgrade was completed + /// + public DateTime UpgradeTime { get; set; } + + /// + /// Resources consumed in the upgrade + /// + public Dictionary ResourcesConsumed { get; set; } = new(); + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CombatPreparationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CombatPreparationResponseDto.cs new file mode 100644 index 0000000..852eceb --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/CombatPreparationResponseDto.cs @@ -0,0 +1,36 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\CombatPreparationResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for combat preparation status + * Last Edit Notes: Individual file implementation for combat preparation data + */ + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for combat preparation status + /// + public class CombatPreparationResponseDto + { + /// + /// Player ID preparing for combat + /// + public int PlayerId { get; set; } + + /// + /// Preparation status details + /// + public Dictionary PreparationStatus { get; set; } = new(); + + /// + /// Available march options + /// + public List> MarchOptions { get; set; } = new(); + + /// + /// When preparation was calculated + /// + public DateTime PreparationTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ExperienceProcessingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ExperienceProcessingRequestDto.cs new file mode 100644 index 0000000..5c39fd6 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ExperienceProcessingRequestDto.cs @@ -0,0 +1,42 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ExperienceProcessingRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for experience processing operations + * Last Edit Notes: Individual file implementation for experience processing input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Request DTO for experience processing operations + /// + public class ExperienceProcessingRequestDto + { + /// + /// Type of experience gain + /// + [Required] + [StringLength(50)] + public string ExperienceType { get; set; } = string.Empty; + + /// + /// Amount of experience to process + /// + [Range(0, decimal.MaxValue)] + public decimal ExperienceAmount { get; set; } + + /// + /// Source of the experience + /// + [StringLength(100)] + public string? Source { get; set; } + + /// + /// Additional context for experience processing + /// + public Dictionary? Context { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/PlayerProfileResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/PlayerProfileResponseDto.cs new file mode 100644 index 0000000..4e3aacc --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/PlayerProfileResponseDto.cs @@ -0,0 +1,89 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\PlayerProfileResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for player profile information including core stats and progression + * Last Edit Notes: Individual file implementation with complete player profile data structure + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for comprehensive player profile information + /// + public class PlayerProfileResponseDto + { + /// + /// Player's unique identifier + /// + public int PlayerId { get; set; } + + /// + /// Player's username + /// + [Required] + public string PlayerName { get; set; } = string.Empty; + + /// + /// Current castle level (capped at 30) + /// + public int CastleLevel { get; set; } + + /// + /// Overall player power rating + /// + public decimal Power { get; set; } + + /// + /// Current VIP tier + /// + public int VipTier { get; set; } + + /// + /// Kingdom the player belongs to + /// + public int KingdomId { get; set; } + + /// + /// Alliance ID if player is in an alliance + /// + public int? AllianceId { get; set; } + + /// + /// Alliance name if applicable + /// + public string? AllianceName { get; set; } + + /// + /// Player's position on the map + /// + public (int X, int Y) Position { get; set; } + + /// + /// Player's current resource counts + /// + public Dictionary Resources { get; set; } = new(); + + /// + /// Combat statistics + /// + public Dictionary CombatStats { get; set; } = new(); + + /// + /// Account creation date + /// + public DateTime CreatedAt { get; set; } + + /// + /// Last active timestamp + /// + public DateTime LastActiveAt { get; set; } + + /// + /// Whether player is active + /// + public bool IsActive { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ResourceStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ResourceStatusResponseDto.cs new file mode 100644 index 0000000..77b4cdd --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/ResourceStatusResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\ResourceStatusResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for resource status information + * Last Edit Notes: Individual file implementation for resource status data + */ + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for resource status information + /// + public class ResourceStatusResponseDto + { + /// + /// Player ID for resource status + /// + public int PlayerId { get; set; } + + /// + /// Current resource amounts + /// + public Dictionary CurrentResources { get; set; } = new(); + + /// + /// Resource production rates + /// + public Dictionary ProductionRates { get; set; } = new(); + + /// + /// Storage capacity limits + /// + public Dictionary StorageCapacity { get; set; } = new(); + + /// + /// Protected resource amounts + /// + public Dictionary ProtectedAmounts { get; set; } = new(); + + /// + /// When resources were last calculated + /// + public DateTime LastCalculated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationRequestDto.cs new file mode 100644 index 0000000..252ebd6 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationRequestDto.cs @@ -0,0 +1,40 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\TeleportationRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for teleportation operations + * Last Edit Notes: Individual file implementation for teleportation input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Request DTO for teleportation operations + /// + public class TeleportationRequestDto + { + /// + /// Target destination coordinates + /// + [Required] + public (int X, int Y) Destination { get; set; } + + /// + /// Whether to use VIP teleportation benefits + /// + public bool UseVipBenefits { get; set; } = true; + + /// + /// Teleportation priority level + /// + [Range(1, 5)] + public int Priority { get; set; } = 3; + + /// + /// Override safety restrictions (requires special permissions) + /// + public bool OverrideSafetyRestrictions { get; set; } = false; + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationResponseDto.cs new file mode 100644 index 0000000..7cd0fcc --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/TeleportationResponseDto.cs @@ -0,0 +1,41 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\TeleportationResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for teleportation operations + * Last Edit Notes: Individual file implementation for teleportation results + */ + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for teleportation operations + /// + public class TeleportationResponseDto + { + /// + /// Whether teleportation was successful + /// + public bool Success { get; set; } + + /// + /// New player position after teleportation + /// + public (int X, int Y) NewPosition { get; set; } + + /// + /// Cost breakdown for the teleportation + /// + public Dictionary CostBreakdown { get; set; } = new(); + + /// + /// Any restrictions that were applied + /// + public List RestrictionsApplied { get; set; } = new(); + + /// + /// When the teleportation occurred + /// + public DateTime TeleportationTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/VipStatusResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/VipStatusResponseDto.cs new file mode 100644 index 0000000..773a68f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Player/VipStatusResponseDto.cs @@ -0,0 +1,31 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Player\VipStatusResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for VIP status information + * Last Edit Notes: Individual file implementation for VIP status data + */ + +namespace ShadowedRealms.Shared.DTOs.Player +{ + /// + /// Response DTO for VIP status information + /// + public class VipStatusResponseDto + { + /// + /// Player ID for VIP status + /// + public int PlayerId { get; set; } + + /// + /// Complete VIP status information + /// + public Dictionary VipStatus { get; set; } = new(); + + /// + /// When the status was last updated + /// + public DateTime LastUpdated { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/BalanceMonitoringResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/BalanceMonitoringResponseDto.cs new file mode 100644 index 0000000..711bb8f --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/BalanceMonitoringResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\BalanceMonitoringResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for balance monitoring results + * Last Edit Notes: Individual file implementation for anti-pay-to-win balance monitoring results + */ + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Response DTO for balance monitoring results + /// + public class BalanceMonitoringResponseDto + { + /// + /// Player being monitored + /// + public int PlayerId { get; set; } + + /// + /// Overall balance assessment + /// + public string BalanceStatus { get; set; } = string.Empty; + + /// + /// Detailed balance metrics + /// + public Dictionary BalanceMetrics { get; set; } = new(); + + /// + /// Spending vs performance analysis + /// + public Dictionary SpendingAnalysis { get; set; } = new(); + + /// + /// Recommended adjustments for balance + /// + public List BalanceRecommendations { get; set; } = new(); + + /// + /// When monitoring was performed + /// + public DateTime MonitoringTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/FraudDetectionRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/FraudDetectionRequestDto.cs new file mode 100644 index 0000000..657e85b --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/FraudDetectionRequestDto.cs @@ -0,0 +1,40 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\FraudDetectionRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for fraud detection analysis + * Last Edit Notes: Individual file implementation for fraud detection input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Request DTO for fraud detection analysis + /// + public class FraudDetectionRequestDto + { + /// + /// Transaction details to analyze + /// + [Required] + public Dictionary TransactionData { get; set; } = new(); + + /// + /// Analysis depth level + /// + [Range(1, 5)] + public int AnalysisDepth { get; set; } = 3; + + /// + /// Include historical pattern analysis + /// + public bool IncludeHistoricalAnalysis { get; set; } = true; + + /// + /// Additional fraud detection parameters + /// + public Dictionary? DetectionParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseProcessingRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseProcessingRequestDto.cs new file mode 100644 index 0000000..b3cb0c1 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseProcessingRequestDto.cs @@ -0,0 +1,62 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\PurchaseProcessingRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for purchase processing + * Last Edit Notes: Individual file implementation for purchase processing input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Request DTO for purchase processing + /// + public class PurchaseProcessingRequestDto + { + /// + /// Item or package being purchased + /// + [Required] + [StringLength(100)] + public string ItemId { get; set; } = string.Empty; + + /// + /// Quantity being purchased + /// + [Range(1, int.MaxValue)] + public int Quantity { get; set; } = 1; + + /// + /// Purchase amount in local currency + /// + [Range(0.01, double.MaxValue)] + public decimal PurchaseAmount { get; set; } + + /// + /// Currency code for the purchase + /// + [Required] + [StringLength(3)] + public string CurrencyCode { get; set; } = string.Empty; + + /// + /// External transaction ID from payment processor + /// + [Required] + [StringLength(200)] + public string TransactionId { get; set; } = string.Empty; + + /// + /// Payment method used + /// + [StringLength(50)] + public string? PaymentMethod { get; set; } + + /// + /// Additional purchase metadata + /// + public Dictionary? PurchaseMetadata { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseValidationResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseValidationResponseDto.cs new file mode 100644 index 0000000..822d504 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/PurchaseValidationResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\PurchaseValidationResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for purchase validation results + * Last Edit Notes: Individual file implementation for purchase validation and fraud detection results + */ + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Response DTO for purchase validation results + /// + public class PurchaseValidationResponseDto + { + /// + /// Whether the purchase is valid and approved + /// + public bool IsValid { get; set; } + + /// + /// Player making the purchase + /// + public int PlayerId { get; set; } + + /// + /// Detailed validation results + /// + public Dictionary ValidationResults { get; set; } = new(); + + /// + /// Any warnings about the purchase + /// + public List Warnings { get; set; } = new(); + + /// + /// Fraud risk assessment + /// + public Dictionary FraudRisk { get; set; } = new(); + + /// + /// When validation was performed + /// + public DateTime ValidationTime { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/SpendingAnalyticsResponseDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/SpendingAnalyticsResponseDto.cs new file mode 100644 index 0000000..44a0dbc --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/SpendingAnalyticsResponseDto.cs @@ -0,0 +1,46 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\SpendingAnalyticsResponseDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Response DTO for spending analytics + * Last Edit Notes: Individual file implementation for spending analytics data + */ + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Response DTO for spending analytics + /// + public class SpendingAnalyticsResponseDto + { + /// + /// Player ID for spending analytics + /// + public int PlayerId { get; set; } + + /// + /// Timeframe covered by analytics + /// + public int TimeframeDays { get; set; } + + /// + /// Complete spending analytics + /// + public Dictionary SpendingAnalytics { get; set; } = new(); + + /// + /// Comparative data against other players + /// + public Dictionary? Comparisons { get; set; } + + /// + /// Spending patterns and trends + /// + public Dictionary? Trends { get; set; } + + /// + /// When analytics were generated + /// + public DateTime GeneratedAt { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/VipAdvancementRequestDto.cs b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/VipAdvancementRequestDto.cs new file mode 100644 index 0000000..673cf15 --- /dev/null +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/DTOs/Purchase/VipAdvancementRequestDto.cs @@ -0,0 +1,40 @@ +/* + * File: D:\shadowed-realms-mobile\ShadowedRealmsMobile\src\server\ShadowedRealms.Shared\DTOs\Purchase\VipAdvancementRequestDto.cs + * Created: 2025-10-19 + * Last Modified: 2025-10-19 + * Description: Request DTO for VIP advancement operations + * Last Edit Notes: Individual file implementation for VIP advancement input validation + */ + +using System.ComponentModel.DataAnnotations; + +namespace ShadowedRealms.Shared.DTOs.Purchase +{ + /// + /// Request DTO for VIP advancement operations + /// + public class VipAdvancementRequestDto + { + /// + /// Purchase amount contributing to VIP advancement + /// + [Range(0.01, double.MaxValue)] + public decimal PurchaseAmount { get; set; } + + /// + /// Whether to apply secret tier progression + /// + public bool AllowSecretTiers { get; set; } = true; + + /// + /// External transaction reference + /// + [StringLength(200)] + public string? TransactionReference { get; set; } + + /// + /// Additional advancement parameters + /// + public Dictionary? AdvancementParameters { get; set; } + } +} \ No newline at end of file diff --git a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/ShadowedRealms.Shared.csproj b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/ShadowedRealms.Shared.csproj index d4cabc0..fcb2ffe 100644 --- a/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/ShadowedRealms.Shared.csproj +++ b/ShadowedRealmsMobile/src/server/ShadowedRealms.Shared/ShadowedRealms.Shared.csproj @@ -7,7 +7,6 @@ -