diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs index 3c8c5b7..026f0f7 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs @@ -14,5 +14,6 @@ namespace SessionCompanion.Services.Interfaces Task> GetBasicCharactersData(List charactersId); Task> GetUserLoginCharacters(int userId); Task> GetCharacterStatistics(int characterId); + Task GetBasicCharacterbasicInfo(int characterId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/IStatisticsService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/IStatisticsService.cs index f624e0c..0aede4b 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/IStatisticsService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/IStatisticsService.cs @@ -10,5 +10,6 @@ namespace SessionCompanion.Services.Interfaces { public interface IStatisticsService : IServiceBase { + Task SubtractHp(int characterId, int hpToSubtract); } } diff --git a/SessionCompanion/SessionCompanion.Services/Profiles/CharacterProfile.cs b/SessionCompanion/SessionCompanion.Services/Profiles/CharacterProfile.cs index 8893dd7..e856387 100644 --- a/SessionCompanion/SessionCompanion.Services/Profiles/CharacterProfile.cs +++ b/SessionCompanion/SessionCompanion.Services/Profiles/CharacterProfile.cs @@ -25,7 +25,15 @@ namespace SessionCompanion.Services.Profiles .ForMember(vm => vm.Level, conf => conf.MapFrom(charact => charact.Statistics.Level)) .ForMember(vm => vm.CurrentHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.CurrentHealthPoints)) .ForMember(vm => vm.Class, conf => conf.MapFrom(charact => charact.Biography.Class.Name)).ReverseMap(); - + + CreateMap() + .ForMember(vm => vm.Name, conf => conf.MapFrom(charact => charact.Biography.Name)) + .ForMember(vm => vm.Level, conf => conf.MapFrom(charact => charact.Statistics.Level)) + .ForMember(vm => vm.CurrentHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.CurrentHealthPoints)) + .ForMember(vm => vm.MaxHealthPoints, conf => conf.MapFrom(charact => charact.Statistics.HealthPoints)) + .ForMember(vm => vm.Race, conf => conf.MapFrom(charact => charact.Biography.Race.Name)) + .ForMember(vm => vm.Class, conf => conf.MapFrom(charact => charact.Biography.Class.Name)).ReverseMap(); + CreateMap() .ForMember(vm => vm.CanDeception, conf => conf.MapFrom(charact => charact.Charisma.CanDeception)) .ForMember(vm => vm.CanIntimidation, conf => conf.MapFrom(charact => charact.Charisma.CanIntimidation)) diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs index b36f4fa..ddbf698 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs @@ -96,5 +96,20 @@ namespace SessionCompanion.Services.Services return statistics; } + + /// + /// Funkcja zwraca podstawowy widok postaci na podstawie ich id + /// + /// Lista identyfikatorów postaci + /// Podstawowy widok podanych postaci + public async Task GetBasicCharacterbasicInfo(int characterId) + { + var character = await Repository.Get(c => c.Id.Equals(characterId)) + .Include(x => x.Biography).ThenInclude(x => x.Class) + .Include(x => x.Biography).ThenInclude(x => x.Race) + .Include(x => x.Statistics).SingleAsync(); + var result = Mapper.Map(character); + return result; + } } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/StatisticsService.cs b/SessionCompanion/SessionCompanion.Services/Services/StatisticsService.cs index 42935e5..6a0074a 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/StatisticsService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/StatisticsService.cs @@ -17,5 +17,18 @@ namespace SessionCompanion.Services.Services { public StatisticsService(IMapper mapper, IRepository repository) : base(mapper, repository) { } + /// + /// Method subtract hp from given character + /// + /// + /// + /// + public async Task SubtractHp(int characterId, int hpToSubtract) + { + var result = await Repository.Get(c => c.Id.Equals(characterId)).SingleAsync(); + result.CurrentHealthPoints -= hpToSubtract; + await Repository.Update(result); + await Repository.Save(); + } } } diff --git a/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterBasicInfoViewModel.cs b/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterBasicInfoViewModel.cs new file mode 100644 index 0000000..dce943c --- /dev/null +++ b/SessionCompanion/SessionCompanion.ViewModels/CharacterViewModels/CharacterBasicInfoViewModel.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SessionCompanion.ViewModels.CharacterViewModels +{ + public class CharacterBasicInfoViewModel + { + /// + /// Identyfikator postaci + /// + public int Id { get; set; } + + /// + /// Nazwa postaci + /// + public string Name { get; set; } + + /// + /// Poziom postaci + /// + public int Level { get; set; } + + /// + /// Aktualna ilość życia postaci + /// + public int CurrentHealthPoints { get; set; } + + /// + /// Maksymalna ilość życia psotaci + /// + public int MaxHealthPoints { get; set; } + + /// + /// Klasa postaci + /// + public string Class { get; set; } + + /// + /// Rasa postaci + /// + public string Race{ get; set; } + } +} diff --git a/SessionCompanion/SessionCompanion.ViewModels/SessionCompanion.ViewModels.xml b/SessionCompanion/SessionCompanion.ViewModels/SessionCompanion.ViewModels.xml index 96bcdc6..0069b97 100644 --- a/SessionCompanion/SessionCompanion.ViewModels/SessionCompanion.ViewModels.xml +++ b/SessionCompanion/SessionCompanion.ViewModels/SessionCompanion.ViewModels.xml @@ -80,6 +80,41 @@ Płeć postaci + + + Identyfikator postaci + + + + + Nazwa postaci + + + + + Poziom postaci + + + + + Aktualna ilość życia postaci + + + + + Maksymalna ilość życia psotaci + + + + + Klasa postaci + + + + + Rasa postaci + + Identyfikator postaci diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index f05ef4a..f59f3c7 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -88,5 +88,22 @@ namespace SessionCompanion.Controllers var statistics = await _service.GetCharacterStatistics(characterId); return statistics; } + + /// + /// Metoda zwraca podstawowe informacje dla danej postaci + /// + /// + /// Podstawowe informacje dla danej postaci + [HttpGet("characterBasicInfo")] + public async Task> GetCharacterBasicInfo([Required] int characterId) + { + var info = await _service.GetBasicCharacterbasicInfo(characterId); + if (info is null) + return new ErrorResponse() { + Message = "No characters with given id", + StatusCode = 204 + }; + return info; + } } } \ No newline at end of file diff --git a/SessionCompanion/SessionCompanion/SessionCompanion.xml b/SessionCompanion/SessionCompanion/SessionCompanion.xml index 1c7e742..3356692 100644 --- a/SessionCompanion/SessionCompanion/SessionCompanion.xml +++ b/SessionCompanion/SessionCompanion/SessionCompanion.xml @@ -37,6 +37,13 @@ Id postaci Listę wszystkich statystyk + + + Metoda zwraca podstawowe informacje dla danej postaci + + + Podstawowe informacje dla danej postaci + Metoda przyjmuje login oraz hasło i sprawdza czy istnieje użytkownik o podanych parametrach