Files
GreenHomeBack/src/GreenHome.Domain/DevicePost.cs
2026-09-10 19:09:36 +03:30

115 lines
2.8 KiB
C#

namespace GreenHome.Domain;
/// <summary>
/// نوع پیام در گروه مجازی دستگاه
/// </summary>
public enum DevicePostType
{
/// <summary>متن</summary>
Text = 0,
/// <summary>تصویر</summary>
Image = 1,
/// <summary>ویس</summary>
Voice = 2,
/// <summary>اسنپ‌شات وضعیت سنسورها و رله‌ها</summary>
SensorSnapshot = 3
}
/// <summary>
/// پست‌های گروه مجازی دستگاه (تایم‌لاین مشترک)
/// </summary>
public sealed class DevicePost
{
public int Id { get; set; }
/// <summary>
/// شناسه دستگاه
/// </summary>
public int DeviceId { get; set; }
public Device Device { get; set; } = null!;
/// <summary>
/// شناسه کاربر نویسنده پست
/// </summary>
public int AuthorUserId { get; set; }
public User AuthorUser { get; set; } = null!;
/// <summary>
/// متن پست
/// </summary>
public string Content { get; set; } = string.Empty;
/// <summary>
/// نوع پیام
/// </summary>
public DevicePostType PostType { get; set; } = DevicePostType.Text;
/// <summary>
/// مسیر نسبی فایل صوتی (برای پیام ویس)
/// </summary>
public string? VoiceFilePath { get; set; }
/// <summary>
/// مدت‌زمان ویس (ثانیه)
/// </summary>
public int? VoiceDurationSeconds { get; set; }
/// <summary>
/// تصاویر پیوست
/// </summary>
public ICollection<DevicePostImage> Images { get; set; } = new List<DevicePostImage>();
/// <summary>
/// زمان ایجاد
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// زمان آخرین ویرایش
/// </summary>
public DateTime? UpdatedAt { get; set; }
}
/// <summary>
/// تصاویر پیوست پست
/// </summary>
public sealed class DevicePostImage
{
public int Id { get; set; }
/// <summary>
/// شناسه پست
/// </summary>
public int DevicePostId { get; set; }
public DevicePost DevicePost { get; set; } = null!;
/// <summary>
/// نام فایل
/// </summary>
public string FileName { get; set; } = string.Empty;
/// <summary>
/// مسیر ذخیره فایل
/// </summary>
public string FilePath { get; set; } = string.Empty;
/// <summary>
/// نوع فایل (MIME type)
/// </summary>
public string ContentType { get; set; } = string.Empty;
/// <summary>
/// حجم فایل (بایت)
/// </summary>
public long FileSize { get; set; }
/// <summary>
/// زمان آپلود
/// </summary>
public DateTime UploadedAt { get; set; }
}