using System.Collections.Generic;
using System.Threading.Tasks;
using xCommons.Extensions;
using xIdentityModels.Dtos;
namespace xIds.Providers
{
public partial class XIdentityManager
{
#region Admin Actions ...
///
/// Retrieve All UnBanned Users Identifiers
///
/// caller user identifier
/// a collection of user identifiers
public async Task> GetAllUnbanned(
ICollection userSelectByParam
)
{
//
var result = new List();
if (!userSelectByParam.HasChild())
{
return result;
}
//
foreach (var uParam in userSelectByParam)
{
//
var destUser = await ValidateUserExistsAndRetrieve(uParam, checkIsBanned: false);
if (!destUser.IsBanned)
{
result.Add(uParam);
}
}
//
return result;
}
///
/// Get All Banned Users Identifiers
///
/// caller user identifier
/// a collection of user identifiers
public async Task> GetAllBanned(
ICollection userSelectByParam
)
{
//
var result = new List();
if (!userSelectByParam.HasChild())
{
return result;
}
//
foreach (var uParam in userSelectByParam)
{
//
var destUser = await ValidateUserExistsAndRetrieve(uParam, checkIsBanned: false);
if (destUser.IsBanned)
{
result.Add(uParam);
}
}
//
return result;
}
///
/// Ban a Collection of Users
///
/// caller user identifier
/// an instance of XUserNameIdRequest which represents user identifier list to Ban
/// a collection of user identifiers
public async Task> Ban(
string userSelectByParam,
XUserNameIdRequest model
)
{
//
// Validate Args ...
ValidationProvider.NotEmpty(userSelectByParam);
ValidationProvider.NotNull(model);
ValidationProvider.NotZeroChilds(model.Ids);
//
var user = await ValidateUserExistsAndRetrieve(
userSelectByParam,
forceAdmin: true,
checkIsBanned: true,
containDetails: false,
ignoreDisabledUser: false,
checkCanLoginPolicies: true
);
//
var result = new List();
foreach (var uParam in model.Ids)
{
//
var destUser = await ValidateUserExistsAndRetrieve(uParam, checkIsBanned: false);
//
var isBanned = destUser.IsBanned;
if (!isBanned)
{
//
destUser.IsBanned = true;
//
await UpdateUserAsync(
user,
checkCanLoginPolicies: false,
checkIsBanned: false
);
//
result.Add(destUser.Id);
}
}
//
return result;
}
///
/// UnBan a Collection of Users
///
/// caller user identifier
/// an instance of XUserNameIdRequest which represents user identifier list to Ban
/// a collection of user identifiers
public async Task> UnBan(
string userSelectByParam,
XUserNameIdRequest model
)
{
//
// Validate Args ...
ValidationProvider.NotEmpty(userSelectByParam);
ValidationProvider.NotNull(model);
ValidationProvider.NotZeroChilds(model.Ids);
//
var user = await ValidateUserExistsAndRetrieve(
userSelectByParam,
forceAdmin: true,
checkIsBanned: true,
containDetails: false,
ignoreDisabledUser: false,
checkCanLoginPolicies: true
);
//
var result = new List();
foreach (var uParam in model.Ids)
{
//
var destUser = await ValidateUserExistsAndRetrieve(uParam, checkIsBanned: false);
//
var isBanned = destUser.IsBanned;
if (isBanned)
{
//
destUser.IsBanned = false;
//
await UpdateUserAsync(
user,
checkCanLoginPolicies: false,
checkIsBanned: false
);
//
result.Add(destUser.Id);
}
}
//
return result;
}
///
/// Detrmines a User is Banned or not
///
/// caller user identifier
/// destination user identifier which checked is banned or not
/// a boolean value which represent user banned or not
public async Task IsBanned(
string userSelectByParam,
string destUserSelectByParam
)
{
//
// Validate Args ...
ValidationProvider.NotEmpty(
userSelectByParam,
destUserSelectByParam
);
//
var user = await ValidateUserExistsAndRetrieve(
userSelectByParam,
forceAdmin: false,
checkIsBanned: true,
containDetails: false,
ignoreDisabledUser: false,
checkCanLoginPolicies: true
);
var destUser = await ValidateUserExistsAndRetrieve(destUserSelectByParam, checkIsBanned: false);
//
var result = destUser.IsBanned;
//
return result;
}
#endregion
}
}