sumatube/SumaTube.Domain/Entities/Videos/UserVideo.cs
2025-04-20 23:33:46 -03:00

49 lines
1.4 KiB
C#

using BaseDomain.Results;
using SumaTube.Domain.ValueObjects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SumaTube.Domain.Entities.Videos
{
public class UserVideo
{
public Id Id { get; private set; }
public string Name { get; private set; }
public List<VideoGroup> VideoGroups { get; private set; } = new List<VideoGroup>();
public UserVideo(int userId, string name)
{
this.Id = Guid.NewGuid();
this.Name = name;
}
public Result<bool> AddVideoGroup(string name, string description)
{
if (!VideoGroups.Any(v => v.Name == name))
{
this.VideoGroups.Add(new VideoGroup(name, description));
return true;
}
return false;
}
public Result<bool> AddVideo(string collectionName, string url)
{
var videoCollectionItem = VideoGroups.Find(v => v.Name == collectionName);
if (videoCollectionItem != null)
{
if (videoCollectionItem.Videos.Any(v => v.Url == url)) return false;
videoCollectionItem.AddVideo(this.Id.Value, url);
return true;
}
return false;
}
public static UserVideo Create(int userId, string name) => new UserVideo(userId, name);
}
}