Player models and interfaces
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace EstusShots.Server.Models
|
||||
@@ -20,5 +22,7 @@ namespace EstusShots.Server.Models
|
||||
public Guid SeasonId { get; set; }
|
||||
|
||||
public Season Season { get; set; } = default!;
|
||||
|
||||
public ICollection<EpisodePlayers> EpisodePlayers { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
13
EstusShots.Server/Models/EpisodePlayers.cs
Normal file
13
EstusShots.Server/Models/EpisodePlayers.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System;
|
||||
|
||||
namespace EstusShots.Server.Models
|
||||
{
|
||||
public class EpisodePlayers
|
||||
{
|
||||
public Guid EpisodeId { get; set; } = default!;
|
||||
public Episode Episode { get; set; } = default!;
|
||||
|
||||
public Guid PlayerId { get; set; } = default!;
|
||||
public Player Player { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
23
EstusShots.Server/Models/Player.cs
Normal file
23
EstusShots.Server/Models/Player.cs
Normal file
@@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace EstusShots.Server.Models
|
||||
{
|
||||
public class Player
|
||||
{
|
||||
public Guid PlayerId { get; set; }
|
||||
|
||||
[MaxLength(4)] public string? HexId { get; set; }
|
||||
|
||||
[MaxLength(30)] public string Name { get; set; } = default!;
|
||||
|
||||
[MaxLength(30)] public string Alias { get; set; } = default!;
|
||||
|
||||
public bool Anonymous { get; set; }
|
||||
|
||||
public string DisplayName => Anonymous ? Alias : Name;
|
||||
|
||||
public ICollection<EpisodePlayers> EpisodePlayers { get; set; } = default!;
|
||||
}
|
||||
}
|
||||
@@ -12,11 +12,25 @@ namespace EstusShots.Server.Services
|
||||
|
||||
public DbSet<Season> Seasons { get; set; } = default!;
|
||||
public DbSet<Episode> Episodes { get; set; } = default!;
|
||||
public DbSet<Player> Players { get; set; } = default!;
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
modelBuilder.Entity<Season>().ToTable(nameof(Season));
|
||||
modelBuilder.Entity<Episode>().ToTable(nameof(Episode));
|
||||
|
||||
modelBuilder.Entity<EpisodePlayers>()
|
||||
.HasKey(t => new {t.EpisodeId, t.PlayerId});
|
||||
|
||||
modelBuilder.Entity<EpisodePlayers>()
|
||||
.HasOne(pt => pt.Episode)
|
||||
.WithMany(p => p.EpisodePlayers)
|
||||
.HasForeignKey(pt => pt.EpisodeId);
|
||||
|
||||
modelBuilder.Entity<EpisodePlayers>()
|
||||
.HasOne(pt => pt.Player)
|
||||
.WithMany(t => t.EpisodePlayers)
|
||||
.HasForeignKey(pt => pt.PlayerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
19
EstusShots.Shared/Dto/Player.cs
Normal file
19
EstusShots.Shared/Dto/Player.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
|
||||
namespace EstusShots.Shared.Dto
|
||||
{
|
||||
public class Player
|
||||
{
|
||||
public Guid PlayerId { get; set; }
|
||||
|
||||
public string HexId { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public string Alias { get; set; }
|
||||
|
||||
public bool Anonymous { get; set; }
|
||||
|
||||
public string DisplayName => Anonymous ? Alias : Name;
|
||||
}
|
||||
}
|
||||
40
EstusShots.Shared/Interfaces/IPlayersController.cs
Normal file
40
EstusShots.Shared/Interfaces/IPlayersController.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System.Threading.Tasks;
|
||||
using EstusShots.Shared.Models;
|
||||
using EstusShots.Shared.Models.Parameters;
|
||||
|
||||
namespace EstusShots.Shared.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// Load and manipulate player objects
|
||||
/// </summary>
|
||||
public interface IPlayersController
|
||||
{
|
||||
/// <summary>
|
||||
/// Loads a list of all players in the database
|
||||
/// </summary>
|
||||
/// <param name="parameter">An <see cref="GetPlayersParameter"/> instance</param>
|
||||
/// <returns>An ApiResponse instance of type <see cref="GetPlayersResponse"/></returns>
|
||||
Task<ApiResponse<GetPlayersResponse>> GetPlayers(GetPlayersParameter parameter);
|
||||
|
||||
/// <summary>
|
||||
/// Loads detailed information on a single player
|
||||
/// </summary>
|
||||
/// <param name="parameter">An <see cref="GetPlayerDetailsParameter"/> instance</param>
|
||||
/// <returns>An ApiResponse instance of type <see cref="GetPlayerDetailsResponse"/></returns>
|
||||
Task<ApiResponse<GetPlayerDetailsResponse>> GetPlayerDetails(GetPlayerDetailsParameter parameter);
|
||||
|
||||
/// <summary>
|
||||
/// Creates or updates a player object
|
||||
/// </summary>
|
||||
/// <param name="parameter">An <see cref="SavePlayerParameter"/> instance</param>
|
||||
/// <returns>An ApiResponse instance of type <see cref="SavePlayerResponse"/></returns>
|
||||
Task<ApiResponse<SavePlayerResponse>> SavePlayer(SavePlayerParameter parameter);
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a player
|
||||
/// </summary>
|
||||
/// <param name="parameter">An <see cref="DeletePlayerParameter"/> instance</param>
|
||||
/// <returns>An ApiResponse instance of type <see cref="DeletePlayerResponse"/></returns>
|
||||
Task<ApiResponse<DeletePlayerResponse>> DeletePlayers(DeletePlayerParameter parameter);
|
||||
}
|
||||
}
|
||||
163
EstusShots.Shared/Models/Parameters/PlayerParameters.cs
Normal file
163
EstusShots.Shared/Models/Parameters/PlayerParameters.cs
Normal file
@@ -0,0 +1,163 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EstusShots.Shared.Dto;
|
||||
using EstusShots.Shared.Interfaces;
|
||||
|
||||
namespace EstusShots.Shared.Models.Parameters
|
||||
{
|
||||
# region GetPlayers
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class for the GetPlayers API controller.
|
||||
/// </summary>
|
||||
public class GetPlayersParameter : IApiParameter
|
||||
{
|
||||
public GetPlayersParameter()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class returned from the GetPlayers API controller.
|
||||
/// </summary>
|
||||
public class GetPlayersResponse : IApiResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// All players in the database
|
||||
/// </summary>
|
||||
public List<Player> Players { get; set; }
|
||||
|
||||
public GetPlayersResponse(List<Player> players)
|
||||
{
|
||||
Players = players;
|
||||
}
|
||||
|
||||
public GetPlayersResponse()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region GetPlayerDetails
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class for the GetPlayerDetails API controller.
|
||||
/// </summary>
|
||||
public class GetPlayerDetailsParameter : IApiParameter
|
||||
{
|
||||
/// <summary>
|
||||
/// ID of the player that should be loaded
|
||||
/// </summary>
|
||||
public Guid PlayerId { get; set; }
|
||||
|
||||
public GetPlayerDetailsParameter(Guid playerId)
|
||||
{
|
||||
PlayerId = playerId;
|
||||
}
|
||||
|
||||
public GetPlayerDetailsParameter()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class returned from the GetPlayerDetails API controller.
|
||||
/// </summary>
|
||||
public class GetPlayerDetailsResponse : IApiResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// The loaded player
|
||||
/// </summary>
|
||||
public Player Player { get; set; }
|
||||
|
||||
public GetPlayerDetailsResponse(Player player)
|
||||
{
|
||||
Player = player;
|
||||
}
|
||||
|
||||
public GetPlayerDetailsResponse()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region SavePlayer
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class for the SavePlayer API controller.
|
||||
/// </summary>
|
||||
public class SavePlayerParameter : IApiParameter
|
||||
{
|
||||
/// <summary>
|
||||
/// The player to save
|
||||
/// </summary>
|
||||
public Player Player { get; set; }
|
||||
|
||||
public SavePlayerParameter(Player player)
|
||||
{
|
||||
Player = player;
|
||||
}
|
||||
|
||||
public SavePlayerParameter()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class returned from the SavePlayer API controller.
|
||||
/// </summary>
|
||||
public class SavePlayerResponse : IApiResponse
|
||||
{
|
||||
/// <summary>
|
||||
/// ID of the newly created or updated player
|
||||
/// </summary>
|
||||
public Guid PlayerId { get; set; }
|
||||
|
||||
public SavePlayerResponse(Guid playerId)
|
||||
{
|
||||
PlayerId = playerId;
|
||||
}
|
||||
|
||||
public SavePlayerResponse()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
# region DeletePlayer
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class for the DeletePlayer API controller.
|
||||
/// </summary>
|
||||
public class DeletePlayerParameter : IApiParameter
|
||||
{
|
||||
/// <summary>
|
||||
/// ID of the player that should be deleted
|
||||
/// </summary>
|
||||
public Guid PlayerId { get; set; }
|
||||
|
||||
public DeletePlayerParameter(Guid playerId)
|
||||
{
|
||||
PlayerId = playerId;
|
||||
}
|
||||
|
||||
public DeletePlayerParameter()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Parameter class returned from the DeletePlayer API controller.
|
||||
/// </summary>
|
||||
public class DeletePlayerResponse : IApiResponse
|
||||
{
|
||||
public DeletePlayerResponse()
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
}
|
||||
Reference in New Issue
Block a user