Updated delete logic for voice works.
This commit is contained in:
@@ -20,28 +20,39 @@ public class VoiceWorkWriter(AppDbContext dbContext) : IVoiceWorkWriter
|
||||
|
||||
public async Task<DeleteVoiceWorkResponse> DeleteAsync(DeleteVoiceWorkRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
Dictionary<int, bool> isSuccess = [];
|
||||
Dictionary<int, DeleteVoiceWorkStatus> results = request.VoiceWorkIds.Select(x => x)
|
||||
.ToDictionary(x => x, x => DeleteVoiceWorkStatus.NotFound);
|
||||
|
||||
VoiceWork[] voiceWorks = [.. dbContext.VoiceWorks.Where(voiceWork => request.VoiceWorkIds.Contains(voiceWork.VoiceWorkId))
|
||||
.Include(x => x.Circle)];
|
||||
|
||||
foreach (VoiceWork voiceWork in voiceWorks)
|
||||
{
|
||||
isSuccess.Add(voiceWork.VoiceWorkId, false);
|
||||
if (results.ContainsKey(voiceWork.VoiceWorkId) == false)
|
||||
{
|
||||
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotFound;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (voiceWork.Circle is null)
|
||||
{
|
||||
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotFound;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (voiceWork.IsValid == true && voiceWork.Circle.Spam == false)
|
||||
{
|
||||
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.NotAllowed;
|
||||
continue;
|
||||
}
|
||||
|
||||
dbContext.Remove(voiceWork);
|
||||
isSuccess[voiceWork.VoiceWorkId] = true;
|
||||
results[voiceWork.VoiceWorkId] = DeleteVoiceWorkStatus.Deleted;
|
||||
}
|
||||
|
||||
dbContext.SaveChanges();
|
||||
await dbContext.SaveChangesAsync(cancellationToken);
|
||||
|
||||
return new DeleteVoiceWorkResponse(isSuccess);
|
||||
return new DeleteVoiceWorkResponse(results);
|
||||
}
|
||||
|
||||
private async Task<VoiceWork> GetVoiceWorkAsync(int voiceWorkId, CancellationToken cancellationToken)
|
||||
|
||||
Reference in New Issue
Block a user