using System;

namespace Domain
{
  /// <summary>
  /// Entité principale de la plateforme, représente un lien publié par l'utilisateur.
  /// </summary>
  public class Link
  {
    public Guid Id { get; }
    public string Url { get; }
    public DateTime CreatedAt { get; }

    public Link(string url)
    {
      Id = Guid.NewGuid();
      CreatedAt = DateTime.UtcNow;
      Url = url;
    }

    /// <summary>
    /// Crée un commentaire pour ce lien. Permet de valider l'existence du lien et
    /// potentiellement des règles métier de création plus complexes.
    /// </summary>
    /// <param name="content"></param>
    /// <returns></returns>
    public Comment AddComment(string content)
    {
      return new Comment(this.Id, content);
    }
  }
}
