using System; using JetBrains.Annotations; using Portoa.Persistence; namespace VideoGameQuotes.Api { public class GamingSystem : Entity, IDtoMappable { 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); } } }