Add Controller that returns logged characters

This commit is contained in:
Karol Górzyński 2020-12-20 15:46:00 +01:00
parent 11af142a09
commit bf5604871d
4 changed files with 47 additions and 14 deletions

View File

@ -7,6 +7,7 @@ using SessionCompanion.ViewModels.CharacterViewModels;
namespace SessionCompanion.Controllers namespace SessionCompanion.Controllers
{ {
using SessionCompanion.Hubs;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
@ -16,10 +17,12 @@ namespace SessionCompanion.Controllers
public class CharacterController : Controller public class CharacterController : Controller
{ {
private readonly ICharacterService _service; private readonly ICharacterService _service;
private readonly SessionHubData _sessionHubData;
public CharacterController(ICharacterService service) public CharacterController(ICharacterService service)
{ {
this._service = service; this._service = service;
this._sessionHubData = new SessionHubData();
} }
/// <summary> /// <summary>
@ -44,7 +47,7 @@ namespace SessionCompanion.Controllers
/// Metoda zwraca listę postaci przypisanych do danego użytkownika /// Metoda zwraca listę postaci przypisanych do danego użytkownika
/// </summary> /// </summary>
/// <param name="userId"> Identyfikator użytkownika </param> /// <param name="userId"> Identyfikator użytkownika </param>
/// <returns> Lista postać lub wiadomość błędu </returns> /// <returns> Lista postaci lub wiadomość błędu </returns>
[HttpGet("userCharactersList")] [HttpGet("userCharactersList")]
public async Task<Either<List<CharacterForLoginViewModel>, ErrorResponse>> GetCharacterListForUser([Required] int userId) public async Task<Either<List<CharacterForLoginViewModel>, ErrorResponse>> GetCharacterListForUser([Required] int userId)
{ {
@ -61,5 +64,27 @@ namespace SessionCompanion.Controllers
Message = "No characters with given user id" Message = "No characters with given user id"
}; };
} }
/// <summary>
/// Metoda zwraca listę postaci przypisanych do danego użytkownika
/// </summary>
/// <returns> Lista zalogowanych postaci lub wiadomość błędu </returns>
[HttpGet("loggedCharacters")]
public async Task<Either<List<CharacterBasicStatsViewModel>, ErrorResponse>> GetLoggedUsersCharacters()
{
List<CharacterBasicStatsViewModel> characters = new List<CharacterBasicStatsViewModel>();
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"
};
}
} }
} }

View File

@ -34,7 +34,7 @@ namespace SessionCompanion.Hubs
} }
/// <summary> /// <summary>
/// Zwraca lub ustawia listę zalogowanych graczy /// Zwraca lub ustawia listę zalogowanych postaci
/// </summary> /// </summary>
public Dictionary<string, int> ConnectedCharacters_Prop public Dictionary<string, int> ConnectedCharacters_Prop
{ {

View File

@ -1,4 +1,4 @@
{ {
"iisSettings": { "iisSettings": {
"windowsAuthentication": false, "windowsAuthentication": false,
"anonymousAuthentication": true, "anonymousAuthentication": true,
@ -18,10 +18,10 @@
"SessionCompanion": { "SessionCompanion": {
"commandName": "Project", "commandName": "Project",
"launchBrowser": true, "launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": { "environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
} },
"applicationUrl": "https://localhost:5001;http://localhost:5000"
} }
} }
} }

View File

@ -11,6 +11,19 @@
<param name="characterId">Identyfikator postaci</param> <param name="characterId">Identyfikator postaci</param>
<returns>ViewModel Postaci/ErrorResponse</returns> <returns>ViewModel Postaci/ErrorResponse</returns>
</member> </member>
<member name="M:SessionCompanion.Controllers.CharacterController.GetCharacterListForUser(System.Int32)">
<summary>
Metoda zwraca listę postaci przypisanych do danego użytkownika
</summary>
<param name="userId"> Identyfikator użytkownika </param>
<returns> Lista postaci lub wiadomość błędu </returns>
</member>
<member name="M:SessionCompanion.Controllers.CharacterController.GetLoggedUsersCharacters">
<summary>
Metoda zwraca listę postaci przypisanych do danego użytkownika
</summary>
<returns> Lista zalogowanych postaci lub wiadomość błędu </returns>
</member>
<member name="M:SessionCompanion.Controllers.UserController.Login(System.String,System.String)"> <member name="M:SessionCompanion.Controllers.UserController.Login(System.String,System.String)">
<summary> <summary>
Metoda przyjmuje login oraz hasło i sprawdza czy istnieje użytkownik o podanych parametrach Metoda przyjmuje login oraz hasło i sprawdza czy istnieje użytkownik o podanych parametrach
@ -32,14 +45,9 @@
</summary> </summary>
<returns>true jesli ktoś jest już zalogowany i false jeśli nie</returns> <returns>true jesli ktoś jest już zalogowany i false jeśli nie</returns>
</member> </member>
<member name="F:SessionCompanion.Hubs.SessionHub.ConnectedCharacters"> <member name="F:SessionCompanion.Hubs.SessionHub.sessionHubData">
<summary> <summary>
Lista zalogowanych graczy i identyfikator wybranej postaci Klasa zawierająca wszystkie dane potrzebne w SignalR odnośnie aktualnej sesji
</summary>
</member>
<member name="F:SessionCompanion.Hubs.SessionHub.GameMasterConnected">
<summary>
Status, czy GM został już zalogowany
</summary> </summary>
</member> </member>
<member name="M:SessionCompanion.Hubs.SessionHub.OnDisconnectedAsync(System.Exception)"> <member name="M:SessionCompanion.Hubs.SessionHub.OnDisconnectedAsync(System.Exception)">
@ -86,7 +94,7 @@
</member> </member>
<member name="P:SessionCompanion.Hubs.SessionHubData.ConnectedCharacters_Prop"> <member name="P:SessionCompanion.Hubs.SessionHubData.ConnectedCharacters_Prop">
<summary> <summary>
Zwraca lub ustawia listę zalogowanych graczy Zwraca lub ustawia listę zalogowanych postaci
</summary> </summary>
</member> </member>
</members> </members>