50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
using System;
|
|
using JetBrains.Annotations;
|
|
using Portoa.Persistence;
|
|
|
|
namespace VideoGameQuotes.Api {
|
|
public class GamingSystem : Entity<GamingSystem, int>, IDtoMappable<SystemDto> {
|
|
public GamingSystem() {
|
|
Created = DateTime.UtcNow;
|
|
}
|
|
|
|
public virtual DateTime Created { get; set; }
|
|
public virtual DateTime ReleaseDate { get; set; }
|
|
public virtual string Name { get; set; }
|
|
public virtual string Abbreviation { get; set; }
|
|
[CanBeNull]
|
|
public virtual byte[] Icon { get; set; }
|
|
|
|
public virtual SystemDto ToDto() {
|
|
return new SystemDto {
|
|
Id = Id,
|
|
Created = Created,
|
|
ReleaseDate = ReleaseDate,
|
|
Name = Name,
|
|
Icon = Icon != null ? Convert.ToBase64String(Icon) : null,
|
|
Abbreviation = Abbreviation
|
|
};
|
|
}
|
|
}
|
|
|
|
public class SystemDto {
|
|
public int Id { get; set; }
|
|
public DateTime Created { get; set; }
|
|
public DateTime ReleaseDate { get; set; }
|
|
public string Name { get; set; }
|
|
public string Abbreviation { get; set; }
|
|
[CanBeNull]
|
|
public string Icon { get; set; }
|
|
}
|
|
|
|
public static class SystemExtensions {
|
|
[CanBeNull]
|
|
public static string GetBase64EncodedIcon(this GamingSystem system) {
|
|
if (system.Icon == null || system.Icon.Length == 0) {
|
|
return null;
|
|
}
|
|
|
|
return Convert.ToBase64String(system.Icon);
|
|
}
|
|
}
|
|
} |