Compare commits

...

2 Commits

2 changed files with 24 additions and 2 deletions

View File

@@ -428,9 +428,30 @@ public class ChatRoomController(
ResourceId = chatRoomResourceId ResourceId = chatRoomResourceId
}); });
db.ChatRooms.Remove(chatRoom); await using var transaction = await db.Database.BeginTransactionAsync();
await db.SaveChangesAsync();
try
{
var now = SystemClock.Instance.GetCurrentInstant();
await db.ChatMessages
.Where(m => m.ChatRoomId == id)
.ExecuteUpdateAsync(s => s.SetProperty(s => s.DeletedAt, now));
await db.ChatMembers
.Where(m => m.ChatRoomId == id)
.ExecuteUpdateAsync(s => s.SetProperty(s => s.DeletedAt, now));
await db.SaveChangesAsync();
db.ChatRooms.Remove(chatRoom);
await db.SaveChangesAsync();
await transaction.CommitAsync();
}
catch (Exception)
{
await transaction.RollbackAsync();
throw;
}
_ = als.CreateActionLogAsync(new CreateActionLogRequest _ = als.CreateActionLogAsync(new CreateActionLogRequest
{ {
Action = "chatrooms.delete", Action = "chatrooms.delete",

View File

@@ -361,6 +361,7 @@ public partial class ChatService(
.DistinctBy(x => x.Id) .DistinctBy(x => x.Id)
.ToList(); .ToList();
messageSenders = await crs.LoadMemberAccounts(messageSenders); messageSenders = await crs.LoadMemberAccounts(messageSenders);
messageSenders = messageSenders.Where(x => x.Account is not null).ToList();
foreach (var message in messages) foreach (var message in messages)
message.Value!.Sender = messageSenders.First(x => x.Id == message.Value.SenderId); message.Value!.Sender = messageSenders.First(x => x.Id == message.Value.SenderId);