using Monitoring.Core.Domain.Primitives;

namespace Monitoring.Core.Domain.EventManagement;

/// <summary>
/// Неисправность.
/// </summary>
public class Fault
{
	/// <summary>
	/// Идентификатор.
	/// </summary>
	public FaultId Id { get; } = default!;

	/// <summary>
	/// Идентификатор события.
	/// </summary>
	public EventId EventId { get; } = default!;

	/// <summary>
	/// Событие.
	/// </summary>
	public Event Event { get; } = default!;

	public ZoneId ZoneId { get; } = default!;
	public Zone Zone { get; } = default!;

	/// <summary>
	/// Создает неисправность.
	/// </summary>
	/// <param name="eventId">Идентификатор события.</param>
	/// <returns>Неисправность.</returns>
	public static Fault Create(EventId eventId, ZoneId zoneId)
	{
		return new Fault(eventId, zoneId);
	}

	private Fault(EventId eventId, ZoneId zoneId)
	{
		Id = new FaultId(Guid.NewGuid());
		EventId = eventId;
		ZoneId = zoneId;
	}

	protected Fault() { }
}