Модуль связей и Klipy

This commit is contained in:
Халимов Рустам
2026-03-27 01:22:20 +03:00
parent 7ef73b414c
commit b399649cfd
31 changed files with 603 additions and 472 deletions

View File

@@ -0,0 +1,40 @@
using Knot.Shared.Kernel;
using System;
namespace Knot.Modules.Relations.Domain;
public enum ContactStatus
{
Pending,
Accepted,
Declined,
Blocked
}
public sealed class Contact : Entity<Guid>, IAggregateRoot
{
public Guid UserId { get; private set; }
public Guid ContactId { get; private set; }
public ContactStatus Status { get; private set; }
public DateTime CreatedAt { get; private set; }
private Contact() : base(Guid.NewGuid()) { }
private Contact(Guid id, Guid userId, Guid contactId, ContactStatus status) : base(id)
{
UserId = userId;
ContactId = contactId;
Status = status;
CreatedAt = DateTime.UtcNow;
}
public static Contact CreateRequest(Guid userId, Guid contactId)
{
return new Contact(Guid.NewGuid(), userId, contactId, ContactStatus.Pending);
}
public void Accept() => Status = ContactStatus.Accepted;
public void Decline() => Status = ContactStatus.Declined;
public void Block() => Status = ContactStatus.Blocked;
public void Unblock() => Status = ContactStatus.Accepted; // Or Pending if it was pending
}