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 } }