feat: DTOs and interfaces

This commit is contained in:
2025-09-29 17:45:55 +03:00
parent eab5db823b
commit 459f77bcc7
13 changed files with 165 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IDialogueService
{
Task<Dialogue?> GetDialogueByMissionIdAsync(Guid missionId);
Task<Dialogue> CreateDialogueAsync(Dialogue dialogue);
Task<DialogueMessage?> GetDialogueMessageByIdAsync(Guid messageId);
Task<IEnumerable<DialogueMessageResponseOption>> GetResponseOptionsAsync(Guid messageId);
Task<DialogueMessage?> ProcessDialogueResponseAsync(Guid messageId, Guid responseOptionId, Guid playerId);
}

View File

@@ -0,0 +1,13 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IMissionCategoryService
{
Task<MissionCategory?> GetCategoryByIdAsync(Guid categoryId);
Task<MissionCategory?> GetCategoryByTitleAsync(string title);
Task<IEnumerable<MissionCategory>> GetAllCategoriesAsync();
Task<MissionCategory> CreateCategoryAsync(MissionCategory category);
Task<MissionCategory> UpdateCategoryAsync(MissionCategory category);
Task<bool> DeleteCategoryAsync(Guid categoryId);
}

View File

@@ -0,0 +1,17 @@
using GamificationService.Models.Database;
using GamificationService.Models.DTO;
namespace GamificationService.Services.Interfaces;
public interface IMissionService
{
Task<Mission?> GetMissionByIdAsync(Guid missionId);
Task<IEnumerable<Mission>> GetMissionsByCategoryAsync(Guid categoryId);
Task<IEnumerable<Mission>> GetAvailableMissionsForPlayerAsync(Guid playerId);
Task<IEnumerable<Mission>> GetChildMissionsAsync(Guid parentMissionId);
Task<Mission> CreateMissionAsync(Mission mission);
Task<Mission> UpdateMissionAsync(Mission mission);
Task<bool> DeleteMissionAsync(Guid missionId);
Task<bool> IsMissionAvailableForPlayerAsync(Guid missionId, Guid playerId);
Task<MissionCompletionResult> CompleteMissionAsync(Guid missionId, Guid playerId, object? missionProof = null);
}

View File

@@ -0,0 +1,14 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IPlayerService
{
Task<Player?> GetPlayerByUserIdAsync(string userId);
Task<Player> CreatePlayerAsync(string userId, string username);
Task<Player> UpdatePlayerRankAsync(Guid playerId, Guid newRankId);
Task<Player> AddPlayerExperienceAsync(Guid playerId, int experience);
Task<Player> AddPlayerManaAsync(Guid playerId, int mana);
Task<IEnumerable<Player>> GetTopPlayersAsync(int topCount, TimeSpan timeFrame);
Task<Player> GetPlayerWithProgressAsync(Guid playerId);
}

View File

@@ -0,0 +1,14 @@
using GamificationService.Models.Database;
using GamificationService.Models.DTO;
namespace GamificationService.Services.Interfaces;
public interface IProgressTrackingService
{
Task<PlayerMission> StartMissionAsync(Guid missionId, Guid playerId);
Task<PlayerMission> UpdateMissionProgressAsync(Guid playerMissionId, int progressPercentage, object? proof = null);
Task<PlayerMission> CompleteMissionAsync(Guid playerMissionId, object? proof = null);
Task<IEnumerable<PlayerMission>> GetPlayerMissionsAsync(Guid playerId);
Task<PlayerMission?> GetPlayerMissionAsync(Guid playerId, Guid missionId);
Task<PlayerProgress> GetPlayerOverallProgressAsync(Guid playerId);
}

View File

@@ -0,0 +1,15 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IRankService
{
Task<Rank?> GetRankByIdAsync(Guid rankId);
Task<Rank?> GetRankByTitleAsync(string title);
Task<IEnumerable<Rank>> GetAllRanksAsync();
Task<Rank> CreateRankAsync(Rank rank);
Task<Rank> UpdateRankAsync(Rank rank);
Task<bool> DeleteRankAsync(Guid rankId);
Task<bool> CanPlayerAdvanceToRankAsync(Guid playerId, Guid rankId);
Task<Rank?> GetNextRankAsync(Guid currentRankId);
}

View File

@@ -0,0 +1,11 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IRewardService
{
Task<IEnumerable<MissionSkillReward>> GetMissionSkillRewardsAsync(Guid missionId);
Task<IEnumerable<MissionItemReward>> GetMissionItemRewardsAsync(Guid missionId);
Task DistributeMissionRewardsAsync(Guid missionId, Guid playerId);
Task<bool> CanClaimRewardAsync(Guid rewardId, Guid playerId);
}

View File

@@ -0,0 +1,10 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface IRuleValidationService
{
Task<bool> ValidateMissionRankRulesAsync(Guid missionId, Guid playerId);
Task<bool> ValidateRankAdvancementRulesAsync(Guid playerId, Guid targetRankId);
Task<IEnumerable<MissionRankRule>> GetApplicableRankRulesAsync(Guid missionId);
}

View File

@@ -0,0 +1,16 @@
using GamificationService.Models.Database;
namespace GamificationService.Services.Interfaces;
public interface ISkillService
{
Task<Skill?> GetSkillByIdAsync(Guid skillId);
Task<Skill?> GetSkillByTitleAsync(string title);
Task<IEnumerable<Skill>> GetAllSkillsAsync();
Task<Skill> CreateSkillAsync(Skill skill);
Task<Skill> UpdateSkillAsync(Skill skill);
Task<bool> DeleteSkillAsync(Guid skillId);
Task<PlayerSkill> UpdatePlayerSkillAsync(Guid playerId, Guid skillId, int level);
Task<IEnumerable<PlayerSkill>> GetPlayerSkillsAsync(Guid playerId);
Task<int> GetPlayerSkillLevelAsync(Guid playerId, Guid skillId);
}