From 11af142a092285f13e7e9a5f8eb78a5e75cb9661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20G=C3=B3rzy=C5=84ski?= Date: Sun, 20 Dec 2020 15:45:29 +0100 Subject: [PATCH 1/5] Added Service to show character basic properties --- .../Intefraces/ICharacterService.cs | 1 + .../Services/CharacterService.cs | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs index 876ce7f..10a23bd 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs @@ -10,6 +10,7 @@ namespace SessionCompanion.Services.Interfaces { public interface ICharacterService : IServiceBase { + Task GetBasicCharacterData(int characterId); Task> GetUserLoginCharacters(int userId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs index 28c96e8..1a1a176 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs @@ -37,5 +37,19 @@ namespace SessionCompanion.Services.Services return result; } + /// + /// Funkcja zwraca podstawowy widok postaci na podstawie ich id + /// + /// identyfikator postaci + /// Podstawowy widok danej postaci + public async Task GetBasicCharacterData(int characterId) + { + var characters = await Repository.Get(c => c.Id == characterId) + .Include(x => x.Biography) + .Include(x => x.Statistics).ToListAsync(); + var result = Mapper.Map(characters); + return result; + } + } } From bf5604871d7b2b9b9b1356acb27a904b78594918 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20G=C3=B3rzy=C5=84ski?= Date: Sun, 20 Dec 2020 15:46:00 +0100 Subject: [PATCH 2/5] Add Controller that returns logged characters --- .../Controllers/CharacterController.cs | 27 ++++++++++++++++++- .../SessionCompanion/Hubs/SessionHubData.cs | 2 +- .../Properties/launchSettings.json | 8 +++--- .../SessionCompanion/SessionCompanion.xml | 24 +++++++++++------ 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index cb6e42e..ad9edc9 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -7,6 +7,7 @@ using SessionCompanion.ViewModels.CharacterViewModels; namespace SessionCompanion.Controllers { + using SessionCompanion.Hubs; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -16,10 +17,12 @@ namespace SessionCompanion.Controllers public class CharacterController : Controller { private readonly ICharacterService _service; + private readonly SessionHubData _sessionHubData; public CharacterController(ICharacterService service) { this._service = service; + this._sessionHubData = new SessionHubData(); } /// @@ -44,7 +47,7 @@ namespace SessionCompanion.Controllers /// Metoda zwraca listę postaci przypisanych do danego użytkownika /// /// Identyfikator użytkownika - /// Lista postać lub wiadomość błędu + /// Lista postaci lub wiadomość błędu [HttpGet("userCharactersList")] public async Task, ErrorResponse>> GetCharacterListForUser([Required] int userId) { @@ -61,5 +64,27 @@ namespace SessionCompanion.Controllers Message = "No characters with given user id" }; } + /// + /// Metoda zwraca listę postaci przypisanych do danego użytkownika + /// + /// Lista zalogowanych postaci lub wiadomość błędu + [HttpGet("loggedCharacters")] + public async Task, ErrorResponse>> GetLoggedUsersCharacters() + { + List characters = new List(); + var connectedCharacters = _sessionHubData.ConnectedCharacters_Prop; + + foreach (var characterId in connectedCharacters.Values) + characters.Add(await _service.GetBasicCharacterData(characterId)); + + if (characters.Any()) + return characters; + + return new ErrorResponse() + { + StatusCode = 204, + Message = "No logged characters" + }; + } } } \ No newline at end of file diff --git a/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs b/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs index d370d20..c92bfaa 100644 --- a/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs +++ b/SessionCompanion/SessionCompanion/Hubs/SessionHubData.cs @@ -34,7 +34,7 @@ namespace SessionCompanion.Hubs } /// - /// Zwraca lub ustawia listę zalogowanych graczy + /// Zwraca lub ustawia listę zalogowanych postaci /// public Dictionary ConnectedCharacters_Prop { diff --git a/SessionCompanion/SessionCompanion/Properties/launchSettings.json b/SessionCompanion/SessionCompanion/Properties/launchSettings.json index bb3389e..b03ba01 100644 --- a/SessionCompanion/SessionCompanion/Properties/launchSettings.json +++ b/SessionCompanion/SessionCompanion/Properties/launchSettings.json @@ -1,4 +1,4 @@ -{ +{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, @@ -18,10 +18,10 @@ "SessionCompanion": { "commandName": "Project", "launchBrowser": true, - "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "applicationUrl": "https://localhost:5001;http://localhost:5000" } } -} +} \ No newline at end of file diff --git a/SessionCompanion/SessionCompanion/SessionCompanion.xml b/SessionCompanion/SessionCompanion/SessionCompanion.xml index 13641ce..46effbd 100644 --- a/SessionCompanion/SessionCompanion/SessionCompanion.xml +++ b/SessionCompanion/SessionCompanion/SessionCompanion.xml @@ -11,6 +11,19 @@ Identyfikator postaci ViewModel Postaci/ErrorResponse + + + Metoda zwraca listę postaci przypisanych do danego użytkownika + + Identyfikator użytkownika + Lista postaci lub wiadomość błędu + + + + Metoda zwraca listę postaci przypisanych do danego użytkownika + + Lista zalogowanych postaci lub wiadomość błędu + Metoda przyjmuje login oraz hasło i sprawdza czy istnieje użytkownik o podanych parametrach @@ -32,14 +45,9 @@ true jesli ktoś jest już zalogowany i false jeśli nie - + - Lista zalogowanych graczy i identyfikator wybranej postaci - - - - - Status, czy GM został już zalogowany + Klasa zawierająca wszystkie dane potrzebne w SignalR odnośnie aktualnej sesji @@ -86,7 +94,7 @@ - Zwraca lub ustawia listę zalogowanych graczy + Zwraca lub ustawia listę zalogowanych postaci From 2c302d7f091f703f08b365f9efaf08fa560e3759 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20G=C3=B3rzy=C5=84ski?= Date: Sun, 20 Dec 2020 16:30:15 +0100 Subject: [PATCH 3/5] remove error response from GetLoggedUsersCharacters --- .../SessionCompanion/Controllers/CharacterController.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index ad9edc9..1fcb3d9 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -77,14 +77,7 @@ namespace SessionCompanion.Controllers foreach (var characterId in connectedCharacters.Values) characters.Add(await _service.GetBasicCharacterData(characterId)); - if (characters.Any()) - return characters; - - return new ErrorResponse() - { - StatusCode = 204, - Message = "No logged characters" - }; + return characters; } } } \ No newline at end of file From 0de41a2ce82860e5c57eb5cfe98d39cf7ba96898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20G=C3=B3rzy=C5=84ski?= Date: Mon, 21 Dec 2020 13:30:59 +0100 Subject: [PATCH 4/5] Changed method to return characters --- .../Intefraces/ICharacterService.cs | 2 +- .../Services/CharacterService.cs | 14 +++++++------- .../Controllers/CharacterController.cs | 7 ++----- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs index 10a23bd..4f33dba 100644 --- a/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Intefraces/ICharacterService.cs @@ -10,7 +10,7 @@ namespace SessionCompanion.Services.Interfaces { public interface ICharacterService : IServiceBase { - Task GetBasicCharacterData(int characterId); + Task> GetBasicCharactersData(List charactersId); Task> GetUserLoginCharacters(int userId); } } diff --git a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs index 1a1a176..a336d42 100644 --- a/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs +++ b/SessionCompanion/SessionCompanion.Services/Services/CharacterService.cs @@ -40,14 +40,14 @@ namespace SessionCompanion.Services.Services /// /// Funkcja zwraca podstawowy widok postaci na podstawie ich id /// - /// identyfikator postaci - /// Podstawowy widok danej postaci - public async Task GetBasicCharacterData(int characterId) + /// Lista identyfikatorów postaci + /// Podstawowy widok podanych postaci + public async Task> GetBasicCharactersData(List charactersId) { - var characters = await Repository.Get(c => c.Id == characterId) - .Include(x => x.Biography) - .Include(x => x.Statistics).ToListAsync(); - var result = Mapper.Map(characters); + var characters = await Repository.Get(c => charactersId.Contains(c.Id)) + .Include(x => x.Biography) + .Include(x => x.Statistics).ToListAsync(); + var result = Mapper.Map>(characters); return result; } diff --git a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs index 1fcb3d9..d35eb6f 100644 --- a/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs +++ b/SessionCompanion/SessionCompanion/Controllers/CharacterController.cs @@ -71,13 +71,10 @@ namespace SessionCompanion.Controllers [HttpGet("loggedCharacters")] public async Task, ErrorResponse>> GetLoggedUsersCharacters() { - List characters = new List(); var connectedCharacters = _sessionHubData.ConnectedCharacters_Prop; + var characters = await _service.GetBasicCharactersData(connectedCharacters.Values.ToList()); - foreach (var characterId in connectedCharacters.Values) - characters.Add(await _service.GetBasicCharacterData(characterId)); - - return characters; + return characters.ToList(); } } } \ No newline at end of file From 441e09a12f30fbfcfe42dd4674e8f646ef79e0c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20G=C3=B3reczny?= Date: Mon, 21 Dec 2020 13:40:11 +0100 Subject: [PATCH 5/5] change login path --- .../ClientApp/src/app/components/sign-in/sign-in.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/sign-in/sign-in.component.ts b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/sign-in/sign-in.component.ts index 9961b76..1682af3 100644 --- a/SessionCompanion/SessionCompanion/ClientApp/src/app/components/sign-in/sign-in.component.ts +++ b/SessionCompanion/SessionCompanion/ClientApp/src/app/components/sign-in/sign-in.component.ts @@ -35,7 +35,7 @@ export class SignInComponent implements OnDestroy { this.signInFormGroup.get('signIn').value['username'], this.signInFormGroup.get('signIn').value['password']).subscribe( (success) => { - this.router.navigate(['player']); + this.router.navigate(['select-character']); }, (error: ErrorResponse | HttpErrorResponse) => { if (error instanceof HttpErrorResponse) {