#50 notifying moderators on moderation request
This commit is contained in:
parent
7ae09c2783
commit
975d03ed3f
@ -5738,7 +5738,12 @@
|
||||
Messaging service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementationa.RecitationService.#ctor(RMuseum.DbContext.RMuseumDbContext,Microsoft.Extensions.Configuration.IConfiguration,RMuseum.Services.IBackgroundTaskQueue,RMuseum.Services.IRNotificationService)">
|
||||
<member name="F:RMuseum.Services.Implementationa.RecitationService._userService">
|
||||
<summary>
|
||||
Users service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementationa.RecitationService.#ctor(RMuseum.DbContext.RMuseumDbContext,Microsoft.Extensions.Configuration.IConfiguration,RMuseum.Services.IBackgroundTaskQueue,RMuseum.Services.IRNotificationService,RSecurityBackend.Services.IAppUserService)">
|
||||
<summary>
|
||||
constructor
|
||||
</summary>
|
||||
@ -5746,6 +5751,7 @@
|
||||
<param name="configuration"></param>
|
||||
<param name="backgroundTaskQueue"></param>
|
||||
<param name="notificationService"></param>
|
||||
<param name="userService"></param>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IPictureFileService">
|
||||
<summary>
|
||||
|
||||
@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Renci.SshNet;
|
||||
using RMuseum.DbContext;
|
||||
using RMuseum.Models.Auth.Memory;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RMuseum.Models.GanjoorAudio;
|
||||
using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
@ -14,6 +15,7 @@ using RMuseum.Models.UploadSession.ViewModels;
|
||||
using RMuseum.Services.Implementation;
|
||||
using RMuseum.Services.Implementation.ImportedFromDesktopGanjoor;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using RSecurityBackend.Services;
|
||||
using RSecurityBackend.Services.Implementation;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -421,9 +423,14 @@ namespace RMuseum.Services.Implementationa
|
||||
return new RServiceResult<RecitationViewModel>(null, err);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Recitation narration = await _context.Recitations.Include(a => a.Owner).Where(a => a.Id == id).SingleOrDefaultAsync();
|
||||
if(narration == null)
|
||||
return new RServiceResult<RecitationViewModel>(null, "404");
|
||||
|
||||
bool bNewPendingRequest = narration.ReviewStatus == AudioReviewStatus.Draft && metadata.ReviewStatus == AudioReviewStatus.Pending;
|
||||
|
||||
narration.AudioTitle = metadata.AudioTitle;
|
||||
narration.AudioArtist = metadata.AudioArtist;
|
||||
narration.AudioArtistUrl = metadata.AudioArtistUrl;
|
||||
@ -433,6 +440,25 @@ namespace RMuseum.Services.Implementationa
|
||||
_context.Recitations.Update(narration);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
if(bNewPendingRequest)
|
||||
{
|
||||
var moderators = await _userService.GetUsersHavingPermission(RMuseumSecurableItem.AudioRecitationEntityShortName, RMuseumSecurableItem.ModerateOperationShortName);
|
||||
if(string.IsNullOrEmpty(moderators.ExceptionString)) //if not, do nothing!
|
||||
{
|
||||
foreach(var moderator in moderators.Result)
|
||||
{
|
||||
await new RNotificationService(_context).PushNotification
|
||||
(
|
||||
(Guid)moderator.Id ,
|
||||
"درخواست بررسی خوانش",
|
||||
$"درخواستی برای بررسی خوانشی از «{narration.AudioArtist}» ثبت شده است. در صورت تمایل صورت تمایل به بررسی بخش «خوانشهای در انتظار تأیید» را ببینید.{ Environment.NewLine}" +
|
||||
$"توجه فرمایید که اگر کاربر دیگری که دارای مجوز بررسی خوانشهاست پیش از شما به آن رسیدگی کرده باشد آن را در صف نخواهید دید."
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(narration.ReviewStatus == AudioReviewStatus.Approved)
|
||||
{
|
||||
narration.AudioSyncStatus = AudioSyncStatus.MetadataChanged;
|
||||
@ -2028,6 +2054,11 @@ namespace RMuseum.Services.Implementationa
|
||||
/// </summary>
|
||||
protected readonly IRNotificationService _notificationService;
|
||||
|
||||
/// <summary>
|
||||
/// Users service
|
||||
/// </summary>
|
||||
protected readonly IAppUserService _userService;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
@ -2036,12 +2067,14 @@ namespace RMuseum.Services.Implementationa
|
||||
/// <param name="configuration"></param>
|
||||
/// <param name="backgroundTaskQueue"></param>
|
||||
/// <param name="notificationService"></param>
|
||||
public RecitationService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IRNotificationService notificationService)
|
||||
/// <param name="userService"></param>
|
||||
public RecitationService(RMuseumDbContext context, IConfiguration configuration, IBackgroundTaskQueue backgroundTaskQueue, IRNotificationService notificationService, IAppUserService userService)
|
||||
{
|
||||
_context = context;
|
||||
Configuration = configuration;
|
||||
_backgroundTaskQueue = backgroundTaskQueue;
|
||||
_notificationService = notificationService;
|
||||
_userService = userService;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1924,6 +1924,14 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.IAppUserService.GetUsersHavingPermission(System.String,System.String)">
|
||||
<summary>
|
||||
all users having a certain permission
|
||||
</summary>
|
||||
<param name="securableItemShortName"></param>
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.IAppUserService.AddUser(RSecurityBackend.Models.Auth.ViewModels.RegisterRAppUser)">
|
||||
<summary>
|
||||
add a new user
|
||||
@ -2265,6 +2273,14 @@
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.Implementation.AppUserService.GetUsersHavingPermission(System.String,System.String)">
|
||||
<summary>
|
||||
all users having a certain permission
|
||||
</summary>
|
||||
<param name="securableItemShortName"></param>
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.Implementation.AppUserService.AddUser(RSecurityBackend.Models.Auth.ViewModels.RegisterRAppUser)">
|
||||
<summary>
|
||||
add a new user
|
||||
@ -2795,6 +2811,14 @@
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.Implementation.RoleServiceBase.GetRolesHavingPermission(System.String,System.String)">
|
||||
<summary>
|
||||
roles having specific permission
|
||||
</summary>
|
||||
<param name="securableItemShortName"></param>
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.Implementation.RoleServiceBase.GetSecurableItems">
|
||||
<summary>
|
||||
gets list of SecurableItem, should be reimplemented in end user applications
|
||||
@ -2939,6 +2963,14 @@
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.IUserRoleService.GetRolesHavingPermission(System.String,System.String)">
|
||||
<summary>
|
||||
roles having specific permission
|
||||
</summary>
|
||||
<param name="securableItemShortName"></param>
|
||||
<param name="operationShortName"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RSecurityBackend.Services.IUserRoleService.GetSecurableItems">
|
||||
<summary>
|
||||
gets list of SecurableItem, should be reimplemented in end user applications
|
||||
|
||||
@ -121,6 +121,14 @@ namespace RSecurityBackend.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<PublicRAppUser[]>> GetAllUsersInformation();
|
||||
|
||||
/// <summary>
|
||||
/// all users having a certain permission
|
||||
/// </summary>
|
||||
/// <param name="securableItemShortName"></param>
|
||||
/// <param name="operationShortName"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<PublicRAppUser[]>> GetUsersHavingPermission(string securableItemShortName, string operationShortName);
|
||||
|
||||
/// <summary>
|
||||
/// add a new user
|
||||
/// </summary>
|
||||
|
||||
@ -56,6 +56,14 @@ namespace RSecurityBackend.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> HasPermission(string roleName, string securableItemShortName, string operationShortName);
|
||||
|
||||
/// <summary>
|
||||
/// roles having specific permission
|
||||
/// </summary>
|
||||
/// <param name="securableItemShortName"></param>
|
||||
/// <param name="operationShortName"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<RAppRole[]>> GetRolesHavingPermission(string securableItemShortName, string operationShortName);
|
||||
|
||||
/// <summary>
|
||||
/// gets list of SecurableItem, should be reimplemented in end user applications
|
||||
/// </summary>
|
||||
|
||||
@ -592,6 +592,47 @@ namespace RSecurityBackend.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// all users having a certain permission
|
||||
/// </summary>
|
||||
/// <param name="securableItemShortName"></param>
|
||||
/// <param name="operationShortName"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<PublicRAppUser[]>> GetUsersHavingPermission(string securableItemShortName, string operationShortName)
|
||||
{
|
||||
try
|
||||
{
|
||||
var rolesResult = await _userRoleService.GetRolesHavingPermission(securableItemShortName, operationShortName);
|
||||
if(!string.IsNullOrEmpty(rolesResult.ExceptionString))
|
||||
{
|
||||
return new RServiceResult<PublicRAppUser[]>(null, rolesResult.ExceptionString);
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<PublicRAppUser> lstPublicUsersInfo = new List<PublicRAppUser>();
|
||||
|
||||
RAppRole[] roles = rolesResult.Result;
|
||||
foreach(RAppRole role in roles)
|
||||
{
|
||||
var usersInRole = _userManager.GetUsersInRoleAsync(role.Name);
|
||||
foreach(var user in usersInRole.Result)
|
||||
{
|
||||
if(lstPublicUsersInfo.Where(u => u.Id == user.Id).FirstOrDefault() == null )
|
||||
{
|
||||
lstPublicUsersInfo.Add(new PublicRAppUser(user));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new RServiceResult<PublicRAppUser[]>(lstPublicUsersInfo.ToArray());
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<PublicRAppUser[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// add a new user
|
||||
|
||||
@ -33,6 +33,7 @@ namespace RSecurityBackend.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// returns user role information
|
||||
/// </summary>
|
||||
@ -184,6 +185,28 @@ namespace RSecurityBackend.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// roles having specific permission
|
||||
/// </summary>
|
||||
/// <param name="securableItemShortName"></param>
|
||||
/// <param name="operationShortName"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<RAppRole[]>> GetRolesHavingPermission(string securableItemShortName, string operationShortName)
|
||||
{
|
||||
try
|
||||
{
|
||||
RAppRole[] rolesInfo = await _roleManager.Roles
|
||||
.Include(r => r.Permissions)
|
||||
.Where(r => r.Permissions.Any(p => p.SecurableItemShortName == securableItemShortName && p.OperationShortName == operationShortName) )
|
||||
.ToArrayAsync();
|
||||
return new RServiceResult<RAppRole[]>(rolesInfo);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<RAppRole[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// gets list of SecurableItem, should be reimplemented in end user applications
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user