feat: add feedback comments activity notifications
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
namespace Socialize.Api.Modules.Feedback.Data;
|
||||
|
||||
public class FeedbackActivityEntry
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid FeedbackReportId { get; set; }
|
||||
public Guid ActorUserId { get; set; }
|
||||
public string ActorDisplayName { get; set; } = string.Empty;
|
||||
public string ActorEmail { get; set; } = string.Empty;
|
||||
public string ActivityType { get; set; } = string.Empty;
|
||||
public string? FromValue { get; set; }
|
||||
public string? ToValue { get; set; }
|
||||
public string? Note { get; set; }
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
|
||||
public FeedbackReport? FeedbackReport { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace Socialize.Api.Modules.Feedback.Data;
|
||||
|
||||
public class FeedbackComment
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid FeedbackReportId { get; set; }
|
||||
public Guid AuthorUserId { get; set; }
|
||||
public string AuthorDisplayName { get; set; } = string.Empty;
|
||||
public string AuthorEmail { get; set; } = string.Empty;
|
||||
public string AuthorRole { get; set; } = string.Empty;
|
||||
public string Body { get; set; } = string.Empty;
|
||||
public DateTimeOffset CreatedAt { get; set; }
|
||||
|
||||
public FeedbackReport? FeedbackReport { get; set; }
|
||||
}
|
||||
@@ -61,6 +61,44 @@ public static class FeedbackModelConfiguration
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FeedbackComment>(comment =>
|
||||
{
|
||||
comment.ToTable("FeedbackComments");
|
||||
comment.HasKey(x => x.Id);
|
||||
comment.Property(x => x.AuthorDisplayName).HasMaxLength(256).IsRequired();
|
||||
comment.Property(x => x.AuthorEmail).HasMaxLength(256).IsRequired();
|
||||
comment.Property(x => x.AuthorRole).HasMaxLength(32).IsRequired();
|
||||
comment.Property(x => x.Body).HasMaxLength(8000).IsRequired();
|
||||
comment.Property(x => x.CreatedAt).ValueGeneratedOnAdd().HasDefaultValueSql("CURRENT_TIMESTAMP");
|
||||
comment.HasIndex(x => x.FeedbackReportId);
|
||||
comment.HasIndex(x => x.AuthorUserId);
|
||||
comment.HasIndex(x => x.CreatedAt);
|
||||
comment.HasOne(x => x.FeedbackReport)
|
||||
.WithMany(x => x.Comments)
|
||||
.HasForeignKey(x => x.FeedbackReportId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
modelBuilder.Entity<FeedbackActivityEntry>(activity =>
|
||||
{
|
||||
activity.ToTable("FeedbackActivityEntries");
|
||||
activity.HasKey(x => x.Id);
|
||||
activity.Property(x => x.ActorDisplayName).HasMaxLength(256).IsRequired();
|
||||
activity.Property(x => x.ActorEmail).HasMaxLength(256).IsRequired();
|
||||
activity.Property(x => x.ActivityType).HasMaxLength(64).IsRequired();
|
||||
activity.Property(x => x.FromValue).HasMaxLength(512);
|
||||
activity.Property(x => x.ToValue).HasMaxLength(512);
|
||||
activity.Property(x => x.Note).HasMaxLength(2000);
|
||||
activity.Property(x => x.CreatedAt).ValueGeneratedOnAdd().HasDefaultValueSql("CURRENT_TIMESTAMP");
|
||||
activity.HasIndex(x => x.FeedbackReportId);
|
||||
activity.HasIndex(x => x.ActorUserId);
|
||||
activity.HasIndex(x => x.CreatedAt);
|
||||
activity.HasOne(x => x.FeedbackReport)
|
||||
.WithMany(x => x.ActivityEntries)
|
||||
.HasForeignKey(x => x.FeedbackReportId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
});
|
||||
|
||||
return modelBuilder;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,5 +28,7 @@ public class FeedbackReport
|
||||
public Guid? CancelledByUserId { get; set; }
|
||||
public string? CancellationReason { get; set; }
|
||||
public ICollection<FeedbackTag> Tags { get; } = new List<FeedbackTag>();
|
||||
public ICollection<FeedbackComment> Comments { get; } = new List<FeedbackComment>();
|
||||
public ICollection<FeedbackActivityEntry> ActivityEntries { get; } = new List<FeedbackActivityEntry>();
|
||||
public FeedbackScreenshot? Screenshot { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user