diff --git a/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json b/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json index c739b8f..9106179 100644 --- a/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json +++ b/SessionCompanion/SessionCompanion.Database/JsonData/characters_templates.json @@ -16,7 +16,7 @@ "Name": "Ulora", "ClassId": 2, "RaceId": 3, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 2, "Sex": "Female", "Languages": "Common", @@ -137,7 +137,7 @@ "Name": "Nucate", "ClassId": 1, "RaceId": 1, - "AlignmentId": "LawfulGood", + "AlignmentId": 2, "BackgroundId": 1, "Sex": "Male", "Languages": "Common", @@ -258,7 +258,7 @@ "Name": "Muraraj", "ClassId": 2, "RaceId": 2, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 1, "Sex": "Male", "Languages": "Common", @@ -366,7 +366,7 @@ } }, { - "id": 5, + "id": 4, "userId": -1, "statistics": { "ExperiencePoints": 0, @@ -382,7 +382,7 @@ "Name": "Amarena", "ClassId": 2, "RaceId": 1, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 2, "Sex": "Female", "Languages": "Common", @@ -490,7 +490,7 @@ } }, { - "id": 6, + "id": 5, "userId": -1, "statistics": { "ExperiencePoints": 0, @@ -506,7 +506,7 @@ "Name": "Yaz' uw Emul", "ClassId": 1, "RaceId": 3, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 3, "Sex": "Male", "Languages": "Common", @@ -614,7 +614,7 @@ } }, { - "id": 7, + "id": 6, "userId": -1, "statistics": { "ExperiencePoints": 0, @@ -630,7 +630,7 @@ "Name": "Kamul", "ClassId": 2, "RaceId": 1, - "AlignmentId": "LawfulGood", + "AlignmentId": 2, "BackgroundId": 1, "Sex": "Female", "Languages": "Common", @@ -738,7 +738,7 @@ } }, { - "id": 8, + "id": 7, "userId": -1, "statistics": { "ExperiencePoints": 0, @@ -754,7 +754,7 @@ "Name": "Mu", "ClassId": 1, "RaceId": 3, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 2, "Sex": "Male", "Languages": "Common", @@ -862,7 +862,7 @@ } }, { - "id": 9, + "id": 8, "userId": -1, "statistics": { "ExperiencePoints": 0, @@ -878,7 +878,7 @@ "Name": "Aarak", "ClassId": 2, "RaceId": 3, - "AlignmentId": "LawfulGood", + "AlignmentId": 1, "BackgroundId": 2, "Sex": "Female", "Languages": "Common", diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs index 715f6f3..2a200d2 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs @@ -18,5 +18,6 @@ namespace SessionCompanion.Services.Interfaces Task> GetCharacterStatistics(int characterId); Task GetBasicCharacterbasicInfo(int characterId); Task> GetCharactersFromTemplate(List raceViewModels, List classViewModels); + Task CreateCharactersFromTemplate(int characterId, int userId, string newName); } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs index 808c168..582a349 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs @@ -139,5 +139,31 @@ namespace SessionCompanion.Services.Services } return basicStats; } + /// + /// Function creates chosen template Character for given User, it can also change its name + /// + /// + /// + /// + /// + public async Task CreateCharactersFromTemplate(int characterId, int userId, string newName) + { + const string file = "../SessionCompanion.Database/JsonData/characters_templates.json"; + List characters = new List(); + using (StreamReader reader = new StreamReader(file)) + { + var json = await reader.ReadToEndAsync(); + characters = Newtonsoft.Json.JsonConvert.DeserializeObject>(json); + } + var character = characters.Where(x => x.Id.Equals(characterId)).Single(); + + character.Id = 0; + character.UserId = userId; + if (newName != null) + character.Biography.Name = newName; + + await Repository.Create(character); + await Repository.Save(); + } } } diff --git a/SessionCompanion/SessionCompanion.XUnitTests/UserServiceTest.cs b/SessionCompanion/SessionCompanion.XUnitTests/UserServiceTest.cs index e56fcd9..fc1b82d 100644 --- a/SessionCompanion/SessionCompanion.XUnitTests/UserServiceTest.cs +++ b/SessionCompanion/SessionCompanion.XUnitTests/UserServiceTest.cs @@ -28,7 +28,7 @@ namespace SessionCompanion.XUnitTests this.userServiceMock.Setup(p => p.SearchUserByUsername("test")).ReturnsAsync(test); - this.userController = new UserController(this.userServiceMock.Object); + //this.userController = new UserController(this.userServiceMock.Object); } [Test] diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index 4fd9901..d15c584 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -134,5 +134,29 @@ namespace SessionCompanion.Controllers }; } } + /// + /// Metoda do tworzenia postaci z templatek + /// + /// Id postaci z templatki + /// + /// + /// + [HttpPost("createCharacterFromTemplate")] + public async Task> CreateTemplateCharacters(int characterId, int userId, string newName) + { + try + { + await _service.CreateCharactersFromTemplate(characterId, userId, newName); + return new SuccessResponse("Character created") { SuccessCode = 200 }; + } + catch (Exception e) + { + return new ErrorResponse() + { + StatusCode = 500, + Message = e.Message + }; + } + } } } \ No newline at end of file