diff --git a/RMuseum/Models/GanjoorAudio/ViewModels/PoemNarrationModerateViewModel.cs b/RMuseum/Models/GanjoorAudio/ViewModels/PoemNarrationModerateViewModel.cs index 067e972b..fc175969 100644 --- a/RMuseum/Models/GanjoorAudio/ViewModels/PoemNarrationModerateViewModel.cs +++ b/RMuseum/Models/GanjoorAudio/ViewModels/PoemNarrationModerateViewModel.cs @@ -1,14 +1,33 @@ namespace RMuseum.Models.GanjoorAudio.ViewModels { + /// + /// Moderation Result + /// + public enum PoemNarrationModerationResult + { + /// + /// no moderation + /// + MetadataNeedsFixation = 0, + /// + /// approve + /// + Approve = 1, + /// + /// reject + /// + Reject = 2 + } + /// /// Poem Narration Moderation View Model /// public class PoemNarrationModerateViewModel { /// - /// Approve or Reject + /// Moderation Result /// - public bool Approve { get; set; } + public PoemNarrationModerationResult Result { get; set; } /// /// Rejection Message diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index ad039a78..1b97784f 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -1916,14 +1916,34 @@ is default + + + Moderation Result + + + + + no moderation + + + + + approve + + + + + reject + + Poem Narration Moderation View Model - + - Approve or Reject + Moderation Result diff --git a/RMuseum/Services/Implementation/AudioNarrationService.cs b/RMuseum/Services/Implementation/AudioNarrationService.cs index 28bad31d..6a6b15a4 100644 --- a/RMuseum/Services/Implementation/AudioNarrationService.cs +++ b/RMuseum/Services/Implementation/AudioNarrationService.cs @@ -519,8 +519,11 @@ namespace RMuseum.Services.Implementation return new RServiceResult(false, "خوانش می‌بایست در وضعیت در انتظار بازبینی باشد."); narration.ReviewDate = DateTime.Now; narration.ReviewerId = moderatorId; - narration.ReviewStatus = model.Approve ? AudioReviewStatus.Approved : AudioReviewStatus.Rejected; - if(!model.Approve) + if(model.Result != PoemNarrationModerationResult.MetadataNeedsFixation) + { + narration.ReviewStatus = model.Result == PoemNarrationModerationResult.Approve ? AudioReviewStatus.Approved : AudioReviewStatus.Rejected; + } + if (narration.ReviewStatus == AudioReviewStatus.Rejected) { narration.AudioSyncStatus = (int)AudioSyncStatus.SynchronizedOrRejected; //TODO: delete rejected items files passed a certain period of time in a maintenance job @@ -529,7 +532,18 @@ namespace RMuseum.Services.Implementation _context.AudioFiles.Update(narration); await _context.SaveChangesAsync(); - if(narration.ReviewStatus == AudioReviewStatus.Rejected) + if (model.Result == PoemNarrationModerationResult.MetadataNeedsFixation) + { + await _notificationService.PushNotification + ( + narration.OwnerId, + "نیاز به بررسی خوانش ارسالی", + $"خوانش شما بررسی شده و نیاز به اعمال تغییرات دارد.{Environment.NewLine}" + + $"می‌توانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید." + ); + } + else + if (narration.ReviewStatus == AudioReviewStatus.Rejected) { await _notificationService.PushNotification ( @@ -539,7 +553,7 @@ namespace RMuseum.Services.Implementation $"می‌توانید با مراجعه به این صفحه TODO: client url وضعیت آن را بررسی کنید." ); } - else + else //approved: { _backgroundTaskQueue.QueueBackgroundWorkItem (