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
(