This commit is contained in:
2025-09-05 20:16:58 +04:30
parent f46bb814cc
commit 9b75ddca8a
32 changed files with 660 additions and 125 deletions
@@ -0,0 +1,33 @@
using VizhTalk.BuildingBlocks.Domain;
using VizhTalk.Learning.Domain.TypeIds;
using VizhTalk.Learning.Domain.ValueObjects;
namespace VizhTalk.Learning.Domain.Entities;
public class FileGroup : Entity<FileGroupId>
{
public FileGroup()
{
}
private FileGroup(FileGroupKey key,
FileGroupTitle title,
bool isSecure,
long mediaGroupId)
{
Title = title;
MediaGroupId = mediaGroupId;
Key = key;
IsSecure = isSecure;
}
public FileGroupTitle Title { get; set; }
public FileGroupKey Key { get; private set; }
public long MediaGroupId { get; private set; }
public bool IsSecure { get; set; }
public static FileGroup CreateNew(FileGroupKey key,
FileGroupTitle title,
bool isSecure,
long mediaGroupId)
=> new(key,title, isSecure, mediaGroupId);
}
@@ -10,15 +10,20 @@ public class Language : Entity<LanguageId>, IAggregateRoot
{
// only EF
}
private Language(LanguageTitle title)
private Language(LanguageTitle title, Media icon)
{
Title = title;
Icon = icon;
}
public LanguageTitle Title { get; private set; }
public Media Icon { get; private set; }
public static Language CreateNew(LanguageTitle title)
=> new(title);
public static Language CreateNew(LanguageTitle title,Media icon)
=> new(title, icon);
public void SetTitle(LanguageTitle title)
=> Title = title;
public void SetIcon(Media icon)
=> Icon = icon;
}
@@ -0,0 +1,14 @@
using VizhTalk.BuildingBlocks.Domain;
using VizhTalk.Learning.Domain.TypeIds;
using VizhTalk.Learning.Domain.ValueObjects;
namespace VizhTalk.Learning.Domain.Entities;
public class Media : Entity<MediaId>
{
public string Name { get; private set; }
public string ContentType { get; private set; }
public int Size { get; private set; }
public EntityType EntityType { get; private set; }
}
@@ -0,0 +1,10 @@
using VizhTalk.BuildingBlocks.Domain;
namespace VizhTalk.Learning.Domain.TypeIds;
public class FileGroupId : TypeIdValueBase<long>
{
public FileGroupId(long value) : base(value)
{
}
}
@@ -7,9 +7,9 @@ using VizhTalk.BuildingBlocks.Domain;
namespace VizhTalk.Learning.Domain.TypeIds
{
public class LanguageId : TypedIdValueBase<int>
public class LanguageId : TypeIdValueBase<short>
{
public LanguageId(int value) : base(value)
public LanguageId(short value) : base(value)
{
}
}
@@ -0,0 +1,10 @@
using VizhTalk.BuildingBlocks.Domain;
namespace VizhTalk.Learning.Domain.TypeIds;
public class MediaId : TypeIdValueBase<Guid>
{
public MediaId(Guid value) : base(value)
{
}
}
@@ -0,0 +1,18 @@
using VizhTalk.BuildingBlocks.Domain;
namespace VizhTalk.Learning.Domain.ValueObjects;
public class EntityType : ValueObject
{
public EntityType(string entityId, EntityTypeEnum type)
{
EntityId = entityId;
Type = type;
}
public string EntityId { get; private set; }
public EntityTypeEnum Type { get; private set; }
}
public enum EntityTypeEnum
{
Language = 0
}
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VizhTalk.BuildingBlocks.Domain;
using VizhTalk.BuildingBlocks.Domain.Guards;
namespace VizhTalk.Learning.Domain.ValueObjects
{
public class FileGroupKey : ValueObject
{
public static FileGroupKey LanguageIcon = new("Language");
public FileGroupKey(string entityName, string? entityId = null)
{
Guard.NullOrEmpty(entityName, entityName);
Guard.MaxLength(entityName, entityName, 30);
if (entityId != null)
Value = $"VizhTalk.Learning.{entityName}.{entityId}";
else
Value = $"VizhTalk.Learning.{entityName}";
}
public string Value { get; private set; }
}
}
@@ -0,0 +1,14 @@
using VizhTalk.BuildingBlocks.Domain.Guards;
using VizhTalk.BuildingBlocks.Domain;
namespace VizhTalk.Learning.Domain.ValueObjects;
public class FileGroupTitle : ValueObject
{
public FileGroupTitle(string value)
{
Guard.NullOrEmpty(value, nameof(FileGroupTitle));
Guard.MaxLength(value, nameof(FileGroupTitle), 50);
}
public string Value { get; set; }
}