diff --git a/MainProject/Config/permissions.json b/MainProject/Config/permissions.json index 57248b8..aeabb85 100644 --- a/MainProject/Config/permissions.json +++ b/MainProject/Config/permissions.json @@ -4,7 +4,7 @@ "System": "base", "RolePermissionModuleOperations": [ { - "Module": "role", + "Module": "roles", "Operations": [ { "Operation": "create", "Roles": [] }, { "Operation": "read", "Roles": [] }, @@ -15,7 +15,7 @@ ] }, { - "Module": "user", + "Module": "users", "Operations": [ { "Operation": "create", "Roles": [] }, { "Operation": "read", "Roles": [] }, diff --git a/MainProject/Services/PermissionService.cs b/MainProject/Services/PermissionService.cs index f56f7bb..5a45384 100644 --- a/MainProject/Services/PermissionService.cs +++ b/MainProject/Services/PermissionService.cs @@ -60,19 +60,28 @@ public interface IPermissionService ); Task DeleteRolePermissionSystemModuleOperationAsync(RolePermissionSystemModuleOperation permission); - Task?> CreatePermissionsOnStartupAsync(); + List CreatePermissionsOnStartupAsync(); } public class PermissionService : BaseService, IPermissionService { private readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly CommonDbMethodsUtils _commonDbMethodsUtils; + public PermissionService( IHttpContextAccessor httpContextAccessor, IConfiguration configuration, SqlServerContext sqlServerContext ) : base(httpContextAccessor, configuration, sqlServerContext) - { } + { + _commonDbMethodsUtils = new CommonDbMethodsUtils(sqlServerContext); + } + + private IQueryable GetRoleByNameQueryable(string name) + { + return _commonDbMethodsUtils.GetRoleByNameQueryable(name); + } private IQueryable GetPermissionSystemsQueryable() { @@ -640,12 +649,608 @@ public class PermissionService : BaseService, IPermissionService - public async Task?> CreatePermissionsOnStartupAsync() + #region "CreatePermissionOnStartup" + + private static List? GetSystemNamesFromFile(PermissionsFile permissionsFile) + { + return permissionsFile?.PermissionInfos?.Where(x => x.System != null).Select(x => x.System)?.ToList(); + } + + private static List? GetModulesNamesFromFile(PermissionsFile permissionsFile) + { + return permissionsFile?.PermissionInfos? + .Where(x => x.RolePermissionModuleOperations != null) + .SelectMany(x => x.RolePermissionModuleOperations!) + .Select(y => y.Module) + .Distinct() + .ToList(); + } + + private static List? GetModulesNamesFromPermissionInfo(PermissionInfo permissionInfo) + { + return permissionInfo.RolePermissionModuleOperations? + .Select(y => y.Module) + .Distinct() + .ToList(); + } + + private static List? GetOperationsNamesFromFile(PermissionInfo permissionInfo) + { + return permissionInfo?.RolePermissionModuleOperations? + .Where(x => x != null) + .Where(x => x.Operations != null) + .SelectMany(y => y.Operations!) + .Select(z => z.Operation) + .Distinct() + .ToList(); + } + + private (List, List) HandlePermissionSystemOnStartup(PermissionsFile permissionsFile) + { + List newPermissions = []; + List systemNames = []; + List permissionSystemList = []; + + List? systems = GetSystemNamesFromFile(permissionsFile); + if (systems != null && systems.Count > 0) + { + foreach (var system in systems) + { + if (!String.IsNullOrEmpty(system)) + { + systemNames.Add(system); + } + } + } + + foreach (var system in systemNames) + { + PermissionSystem? permissionSystem = this.GetPermissionSystemByNameAsync(system).Result; + if (permissionSystem == null) + { + permissionSystem = this.CreatePermissionSystemAsync(system, true).Result; + newPermissions.Add($"Added new PermissionSystem => {permissionSystem?.Name}"); + } + if (permissionSystem != null) + { + permissionSystemList.Add(permissionSystem); + } + } + + return (permissionSystemList, newPermissions); + } + + private (List, List) HandlePermissionModuleOnStartup(PermissionsFile permissionsFile) + { + List newPermissions = []; + List moduleNames = []; + List permissionModuleList = []; + + List? modules = GetModulesNamesFromFile(permissionsFile); + + if (modules != null && modules.Count > 0) + { + foreach (var module in modules) + { + if (!String.IsNullOrEmpty(module)) + { + moduleNames.Add(module); + } + } + } + + foreach (var module in moduleNames) + { + PermissionModule? permissionModule = this.GetPermissionModuleByNameAsync(module).Result; + if (permissionModule == null) + { + permissionModule = this.CreatePermissionModuleAsync(module, true).Result; + newPermissions.Add($"Added new PermissionModule => {permissionModule?.Name}"); + } + if (permissionModule != null) + { + permissionModuleList.Add(permissionModule); + } + } + + return (permissionModuleList, newPermissions); + } + + private (List, List) HandlePermissionOperationOnStartup(PermissionsFile permissionsFile) + { + List newPermissions = []; + List operationNames = []; + List permissionOperationList = []; + + List? operations = permissionsFile.PermissionInfos? + .Where(x => x.RolePermissionModuleOperations != null) + .SelectMany(x => x.RolePermissionModuleOperations!) + .Where(x => x.Operations != null) + .SelectMany(y => y.Operations!) + .Select(z => z.Operation) + .Distinct() + .ToList(); + + if (operations != null && operations.Count > 0) + { + foreach (var operation in operations) + { + if (!String.IsNullOrEmpty(operation)) + { + operationNames.Add(operation); + } + } + } + + foreach (var operation in operationNames) + { + PermissionOperation? permissionOperation = this.GetPermissionOperationByNameAsync(operation).Result; + if (permissionOperation == null) + { + permissionOperation = this.CreatePermissionOperationAsync(operation).Result; + newPermissions.Add($"Added new PermissionOperation => {permissionOperation?.Name}"); + } + if (permissionOperation != null) + { + permissionOperationList.Add(permissionOperation); + } + } + + return (permissionOperationList, newPermissions); + } + + private async Task> HandleRolesOnStartup(PermissionsFile permissionsFile) + { + List roleNames = []; + List rolesList = []; + + List? roles = permissionsFile.PermissionInfos? + .Where(x => x.RolePermissionModuleOperations != null)? + .SelectMany(x => x.RolePermissionModuleOperations!)? + .Where(x => x.Operations != null)? + .SelectMany(y => y.Operations!)? + .Where(z => z.Roles != null)? + .SelectMany(z => z.Roles!)? + .Where(z => z != null)? + .Distinct()? + .ToList(); + + if (roles != null && roles.Count > 0) + { + foreach (var role in roles) + { + if (!String.IsNullOrEmpty(role)) + { + roleNames.Add(role); + } + } + } + + foreach (var roleName in roleNames) + { + Role? role = await this.GetRoleByNameQueryable(roleName).FirstOrDefaultAsync(); + if (role == null) + { + Role tempRole = new() + { + CreationTime = DateTime.UtcNow, + IsDeleted = false, + Guid = Guid.NewGuid().ToString(), + Name = roleName, + IsNotEditable = false + }; + using var transaction = await _sqlServerContext.Database.BeginTransactionAsync(); + try + { + await _sqlServerContext.Roles.AddAsync(tempRole); + await _sqlServerContext.SaveChangesAsync(); + await transaction.CommitAsync(); + role = tempRole; + } + catch (Exception exception) + { + await transaction.RollbackAsync(); + Logger.Error(exception, $"[RoleService][CreateRoleAsync]"); + throw new CreateException($"An error occurred while saving the role for transaction ID {transaction.TransactionId}.", exception); + } + + Logger.Info($"Added new Role => {role?.Name}"); + } + if (role != null) + { + rolesList.Add(role); + } + } + + return rolesList; + } + + private (List, List) HandlePermissionSystemModulesOnStartup(PermissionSystem permissionSystem, List permissionModules) + { + List newPermissions = []; + List permissionSystemModuleList = []; + + foreach (var permissionModule in permissionModules) + { + PermissionSystemModule? permissionSystemModule = this.GetPermissionSystemModulesQueryable()? + .Where(x => + x.PermissionSystemId == permissionSystem!.Id && + x.PermissionModuleId == permissionModule.Id + )?.FirstOrDefault(); + if (permissionSystemModule == null) + { + permissionSystemModule = this.CreatePermissionSystemModuleAsync(permissionSystem!, permissionModule, true).Result; + newPermissions.Add($"Added new PermissionSystemModule => {permissionSystem?.Name}.{permissionModule?.Name}"); + } + if (permissionSystemModule != null) + { + permissionSystemModuleList.Add(permissionSystemModule); + } + } + + return (permissionSystemModuleList, newPermissions); + } + + private (List, List) HandlePermissionSystemModuleOnStartup + ( + PermissionsFile permissionsFile, + List permissionSystems, + List allPermissionModules, + PermissionInfo permissionInfo + ) + { + List newPermissions = []; + List permissionSystemModuleList = []; + + PermissionSystem? permissionSystem = permissionSystems.FirstOrDefault(x => x.Name == permissionInfo.System); + if (permissionSystem != null) + { + List? modules = GetModulesNamesFromFile(permissionsFile); + if (modules != null && modules.Count > 0) + { + List permissionModules = allPermissionModules.Where(x => modules.Contains(x.Name)).ToList(); + if (permissionModules != null && permissionModules.Count > 0) + { + (permissionSystemModuleList, newPermissions) = this.HandlePermissionSystemModulesOnStartup(permissionSystem, permissionModules); + } + } + } + + return (permissionSystemModuleList, newPermissions); + } + private (List, List) HandlePermissionSystemModuleOnStartup( + PermissionsFile permissionsFile, + List permissionSystems, + List allPermissionModules + ) + { + List newPermissions = []; + List permissionSystemModuleList = []; + + if (permissionsFile?.PermissionInfos != null) + { + foreach (var permissionInfo in permissionsFile!.PermissionInfos!) + { + if (!String.IsNullOrEmpty(permissionInfo.System)) + { + var modulesNames = GetModulesNamesFromPermissionInfo(permissionInfo); + if (modulesNames != null && modulesNames.Count > 0) + { + List permissionModules = allPermissionModules.Where(x => modulesNames.Contains(x.Name)).ToList() ?? []; + (permissionSystemModuleList, newPermissions) = this.HandlePermissionSystemModuleOnStartup(permissionsFile, permissionSystems, permissionModules, permissionInfo); + } + } + } + } + + return (permissionSystemModuleList, newPermissions); + } + + private (List, List) HandlePermissionSystemModuleOperationOnStartup + ( + PermissionSystemModule permissionSystemModule, + List permissionOperations + ) + { + List newPermissions = []; + List permissionSystemModuleOperationList = []; + + foreach (var permissionOperation in permissionOperations) + { + PermissionSystemModuleOperation? permissionSystemModuleOperation = this.GetPermissionSystemModuleOperationsQueryable()? + .FirstOrDefault(x => + x.PermissionSystemModuleId == permissionSystemModule!.Id && + x.PermissionOperationId == permissionOperation.Id + ); + if (permissionSystemModuleOperation == null) + { + permissionSystemModuleOperation = this.CreatePermissionSystemModuleOperationAsync(permissionSystemModule!, permissionOperation, true).Result; + newPermissions.Add($"Added new PermissionSystemModuleOperation => {permissionSystemModuleOperation?.PermissionSystemModule?.PermissionSystem?.Name}.{permissionSystemModuleOperation?.PermissionSystemModule?.PermissionModule?.Name}.{permissionSystemModuleOperation?.PermissionOperation?.Name}"); + } + if (permissionSystemModuleOperation != null) + { + permissionSystemModuleOperationList.Add(permissionSystemModuleOperation!); + } + } + + return (permissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandlePermissionSystemModuleOperationOnStartup + ( + List permissionSystemModulesList, + List allPermissionOperations, + PermissionInfo permissionInfo + ) + { + List newPermissions = []; + List tmpPermissions = []; + List permissionSystemModuleOperationList = []; + List tmpPermissionSystemModuleOperationList = []; + + if (permissionInfo != null && permissionInfo.RolePermissionModuleOperations != null) + { + foreach (var rolePermissionModuleOperation in permissionInfo.RolePermissionModuleOperations) + { + PermissionSystemModule? permissionSystemModule = permissionSystemModulesList.FirstOrDefault(x => x.PermissionModule.Name == rolePermissionModuleOperation.Module); + if (permissionSystemModule != null) + { + var operationsNames = rolePermissionModuleOperation.Operations?.Select(x => x.Operation).ToList(); + if (operationsNames != null && operationsNames.Count > 0) + { + List permissionOperations = allPermissionOperations.Where(x => operationsNames.Contains(x.Name)).ToList(); + (tmpPermissionSystemModuleOperationList, tmpPermissions) = this.HandlePermissionSystemModuleOperationOnStartup(permissionSystemModule, permissionOperations); + newPermissions.AddRange(tmpPermissions); + permissionSystemModuleOperationList.AddRange(tmpPermissionSystemModuleOperationList); + } + } + } + } + + return (permissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandlePermissionSystemModuleOperationOnStartup + ( + PermissionsFile permissionsFile, + List permissionSystemModules, + List allPermissionOperation + ) + { + List newPermissions = []; + List tmpPermissions = []; + List permissionSystemModuleOperationList = []; + List tmpPermissionSystemModuleOperationList = []; + + if (permissionsFile.PermissionInfos != null) + { + foreach (var permissionInfo in permissionsFile.PermissionInfos!) + { + if (!String.IsNullOrEmpty(permissionInfo.System)) + { + // Get all PermissionSystemModules by System.Name + List permissionSystemModulesList = permissionSystemModules + .Where(x => x.PermissionSystem.Name == permissionInfo.System).ToList(); + + if (permissionSystemModulesList != null && permissionSystemModulesList.Count > 0) + { + (tmpPermissionSystemModuleOperationList, tmpPermissions) = this.HandlePermissionSystemModuleOperationOnStartup + ( + permissionSystemModulesList, + allPermissionOperation, + permissionInfo + ); + newPermissions.AddRange(tmpPermissions); + permissionSystemModuleOperationList.AddRange(tmpPermissionSystemModuleOperationList); + } + } + } + } + + return (permissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandleRolePermissionSystemModuleOperationOnStartup + ( + List allPermissionSystemModuleOperationsBySystem, + List allRoles, + PermissionInfo permissionInfo + ) + { + List newPermissions = []; + List tmpPermissions = []; + List rolePermissionSystemModuleOperationList = []; + List tmpRolePermissionSystemModuleOperationList = []; + + if (permissionInfo != null && permissionInfo.RolePermissionModuleOperations != null) + { + foreach (var rolePermissionModuleOperation in permissionInfo.RolePermissionModuleOperations) + { + List? allPermissionSystemModuleOperationsBySystemModule = allPermissionSystemModuleOperationsBySystem + .Where(x => x.PermissionSystemModule.PermissionModule.Name == rolePermissionModuleOperation.Module) + .ToList(); + if (allPermissionSystemModuleOperationsBySystemModule != null && allPermissionSystemModuleOperationsBySystemModule.Count > 0) + { + var operationsNames = rolePermissionModuleOperation.Operations?.Select(x => x.Operation).ToList(); + if (operationsNames != null && operationsNames.Count > 0) + { + List permissionSystemModuleOperations = allPermissionSystemModuleOperationsBySystemModule + .Where(x => operationsNames.Contains(x.PermissionOperation.Name)).ToList(); + (tmpRolePermissionSystemModuleOperationList, tmpPermissions) = this.HandleRolePermissionSystemModuleOperationOnStartup( + permissionSystemModuleOperations, + allRoles, + rolePermissionModuleOperation + ); + newPermissions.AddRange(tmpPermissions); + rolePermissionSystemModuleOperationList.AddRange(tmpRolePermissionSystemModuleOperationList); + } + } + } + } + + return (rolePermissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandleRolePermissionSystemModuleOperationOnStartup + ( + List permissionSystemModuleOperations, + List allRoles, + RolePermissionModuleOperation rolePermissionModuleOperation + ) + { + List newPermissions = []; + List tmpPermissions = []; + List rolePermissionSystemModuleOperationList = []; + List tmpRolePermissionSystemModuleOperationList = []; + + if (permissionSystemModuleOperations != null && permissionSystemModuleOperations.Count > 0 && + allRoles != null && allRoles.Count > 0 && rolePermissionModuleOperation?.Operations != null && + rolePermissionModuleOperation.Operations.Count > 0 + ) + { + foreach (var operationInfo in rolePermissionModuleOperation.Operations) + { + PermissionSystemModuleOperation? permissionSystemModuleOperation = permissionSystemModuleOperations + .FirstOrDefault(x => x.PermissionOperation.Name == operationInfo.Operation); + if (permissionSystemModuleOperation != null && operationInfo.Roles != null && operationInfo.Roles.Count > 0) + { + var roles = allRoles.Where(x => operationInfo.Roles.Contains(x.Name)).ToList(); + if (roles != null && roles.Count > 0) + { + foreach (var roleName in operationInfo.Roles) + { + (tmpRolePermissionSystemModuleOperationList, tmpPermissions) = this.HandleRolePermissionSystemModuleOperationOnStartup + ( + roles, roleName, permissionSystemModuleOperation + ); + newPermissions.AddRange(tmpPermissions); + rolePermissionSystemModuleOperationList.AddRange(tmpRolePermissionSystemModuleOperationList); + } + + } + } + } + } + + return (rolePermissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandleRolePermissionSystemModuleOperationOnStartup + ( + List roles, string roleName, PermissionSystemModuleOperation permissionSystemModuleOperation + ) + { + List newPermissions = []; + List rolePermissionSystemModuleOperationList = []; + + Role? role = roles.FirstOrDefault(x => x.Name == roleName); + if (role != null) + { + RolePermissionSystemModuleOperation? rolePermissionSystemModuleOperation = this._sqlServerContext.RolePermissionSystemModuleOperations? + .FirstOrDefault(x => x.RoleId == role.Id && x.PermissionSystemModuleOperationId == permissionSystemModuleOperation!.Id); + if (rolePermissionSystemModuleOperation == null) + { + rolePermissionSystemModuleOperation = this.CreateRolePermissionSystemModuleOperationAsync(role, permissionSystemModuleOperation!, true).Result; + if (rolePermissionSystemModuleOperation != null) + { + newPermissions.Add($"Added new RolePermissionSystemModuleOperation => " + + $"{permissionSystemModuleOperation?.PermissionSystemModule?.PermissionSystem?.Name}." + + $"{permissionSystemModuleOperation?.PermissionSystemModule?.PermissionModule?.Name}." + + $"{permissionSystemModuleOperation?.PermissionOperation?.Name} for role {role.Name}"); + } + if (rolePermissionSystemModuleOperation != null) + { + rolePermissionSystemModuleOperationList.Add(rolePermissionSystemModuleOperation!); + } + } + } + + return (rolePermissionSystemModuleOperationList, newPermissions); + } + + private (List, List) HandleRolePermissionSystemModuleOperationOnStartup + ( + PermissionsFile permissionsFile, + List allPermissionSystemModuleOperations, + List allRoles + ) + { + List newPermissions = []; + List tmpPermissions = []; + List rolePermissionSystemModuleOperationList = []; + List tmpRolePermissionSystemModuleOperationList = []; + + if (permissionsFile.PermissionInfos != null) + { + foreach (var permissionInfo in permissionsFile.PermissionInfos!) + { + if (!String.IsNullOrEmpty(permissionInfo.System)) + { + // Get all PermissionSystemModuleOperations by System.Name + List allPermissionSystemModuleOperationsBySystem = allPermissionSystemModuleOperations + .Where(x => x.PermissionSystemModule.PermissionSystem.Name == permissionInfo.System).ToList(); + + if (allPermissionSystemModuleOperationsBySystem != null && allPermissionSystemModuleOperationsBySystem.Count > 0) + { + (tmpRolePermissionSystemModuleOperationList, tmpPermissions) = this.HandleRolePermissionSystemModuleOperationOnStartup + ( + allPermissionSystemModuleOperationsBySystem, + allRoles, + permissionInfo + ); + newPermissions.AddRange(tmpPermissions); + rolePermissionSystemModuleOperationList.AddRange(tmpRolePermissionSystemModuleOperationList); + } + } + } + } + + return (rolePermissionSystemModuleOperationList, newPermissions); + + } + + public List CreatePermissionsOnStartupAsync() { try { - List? newPermissions = null; - PermissionsFile? permissionsFile = FileUtils.ConvertFileToObject(System.AppDomain.CurrentDomain.BaseDirectory + this._appSettings.PermissionsSettings.FilePath); + List tmpPermissions = []; + List newPermissions = []; + PermissionsFile? permissionsFile = FileUtils.ConvertFileToObject(System.AppDomain.CurrentDomain.BaseDirectory + this._appSettings?.PermissionsSettings?.FilePath); + + List permissionSystemList = []; + List permissionModuleList = []; + List permissionOperationList = []; + List permissionSystemModuleList = []; + List permissionSystemModuleOperationList = []; + List rolePermissionSystemModuleOperationList = []; + + if (permissionsFile != null && permissionsFile.PermissionInfos != null && permissionsFile.PermissionInfos.Count > 0) + { + (permissionSystemList, tmpPermissions) = this.HandlePermissionSystemOnStartup(permissionsFile); + newPermissions.AddRange(tmpPermissions); + + (permissionModuleList, tmpPermissions) = this.HandlePermissionModuleOnStartup(permissionsFile); + newPermissions.AddRange(tmpPermissions); + + (permissionOperationList, tmpPermissions) = this.HandlePermissionOperationOnStartup(permissionsFile); + newPermissions.AddRange(tmpPermissions); + + (permissionSystemModuleList, tmpPermissions) = this.HandlePermissionSystemModuleOnStartup(permissionsFile, permissionSystemList, permissionModuleList); + newPermissions.AddRange(tmpPermissions); + + (permissionSystemModuleOperationList, tmpPermissions) = this.HandlePermissionSystemModuleOperationOnStartup(permissionsFile, permissionSystemModuleList, permissionOperationList); + newPermissions.AddRange(tmpPermissions); + + List roles = this.HandleRolesOnStartup(permissionsFile).Result; + + (rolePermissionSystemModuleOperationList, tmpPermissions) = this.HandleRolePermissionSystemModuleOperationOnStartup( + permissionsFile, + permissionSystemModuleOperationList, + roles + ); + newPermissions.AddRange(tmpPermissions); + } + return newPermissions; } catch (Exception exception) @@ -655,5 +1260,11 @@ public class PermissionService : BaseService, IPermissionService } } -} + + + #endregion + + + +} \ No newline at end of file diff --git a/MainProject/Services/RoleService.cs b/MainProject/Services/RoleService.cs index 021f0a3..d10f0e4 100644 --- a/MainProject/Services/RoleService.cs +++ b/MainProject/Services/RoleService.cs @@ -5,6 +5,7 @@ using BasicDotnetTemplate.MainProject.Models.Api.Common.Exceptions; using BasicDotnetTemplate.MainProject.Models.Api.Data.Role; using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; using Microsoft.EntityFrameworkCore; +using BasicDotnetTemplate.MainProject.Utils; namespace BasicDotnetTemplate.MainProject.Services; @@ -22,22 +23,24 @@ public interface IRoleService public class RoleService : BaseService, IRoleService { private readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + private readonly CommonDbMethodsUtils _commonDbMethodsUtils; + public RoleService( IHttpContextAccessor httpContextAccessor, IConfiguration configuration, SqlServerContext sqlServerContext ) : base(httpContextAccessor, configuration, sqlServerContext) - { } + { + _commonDbMethodsUtils = new CommonDbMethodsUtils(sqlServerContext); + } private IQueryable GetRolesQueryable() { - return this._sqlServerContext.Roles.Where(x => !x.IsDeleted); + return _commonDbMethodsUtils.GetRolesQueryable(); } private IQueryable GetRoleByNameQueryable(string name) { - return this.GetRolesQueryable().Where(x => - x.Name.ToString() == name.ToString() - ); + return _commonDbMethodsUtils.GetRoleByNameQueryable(name); } diff --git a/MainProject/Utils/CommonDbMethodsUtils.cs b/MainProject/Utils/CommonDbMethodsUtils.cs new file mode 100644 index 0000000..f971edf --- /dev/null +++ b/MainProject/Utils/CommonDbMethodsUtils.cs @@ -0,0 +1,32 @@ +using System; +using System.Security.Cryptography; +using System.Text; +using BasicDotnetTemplate.MainProject.Core.Database; +using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; + +namespace BasicDotnetTemplate.MainProject.Utils; +public class CommonDbMethodsUtils +{ + private readonly SqlServerContext _sqlServerContext; + + public CommonDbMethodsUtils(SqlServerContext sqlServerContext) + { + _sqlServerContext = sqlServerContext; + } + + + public IQueryable GetRolesQueryable() + { + return this._sqlServerContext.Roles.Where(x => !x.IsDeleted); + } + + public IQueryable GetRoleByNameQueryable(string name) + { + return this.GetRolesQueryable().Where(x => + x.Name.ToString() == name.ToString() + ); + } + + +} + diff --git a/MainProject/Utils/FileUtils.cs.cs b/MainProject/Utils/FileUtils.cs.cs index be3ed4e..5c7be6e 100644 --- a/MainProject/Utils/FileUtils.cs.cs +++ b/MainProject/Utils/FileUtils.cs.cs @@ -1,16 +1,5 @@ -using System; -using System.IO; using System.Text.Json; -using Microsoft.EntityFrameworkCore; -using Microsoft.OpenApi.Models; -using MongoDB.Driver; using NLog; -using BasicDotnetTemplate.MainProject.Core.Database; -using BasicDotnetTemplate.MainProject.Core.Middlewares; -using BasicDotnetTemplate.MainProject.Models.Settings; -using BasicDotnetTemplate.MainProject.Services; -using BasicDotnetTemplate.MainProject.Models.Api.Data.Role; -using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; @@ -19,6 +8,10 @@ namespace BasicDotnetTemplate.MainProject.Utils; public static class FileUtils { private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger(); + private static readonly JsonSerializerOptions jsonSerializerOptions = new() + { + PropertyNameCaseInsensitive = true + }; public static T? ConvertFileToObject(string? filePath = "") { @@ -38,10 +31,7 @@ public static class FileUtils { string fileContent = File.ReadAllText(filePath); - return JsonSerializer.Deserialize(fileContent, new JsonSerializerOptions - { - PropertyNameCaseInsensitive = true - }); + return JsonSerializer.Deserialize(fileContent, jsonSerializerOptions); } catch (JsonException ex) { diff --git a/MainProject/Utils/ProgramUtils.cs b/MainProject/Utils/ProgramUtils.cs index 9e69376..52b1b33 100644 --- a/MainProject/Utils/ProgramUtils.cs +++ b/MainProject/Utils/ProgramUtils.cs @@ -277,13 +277,17 @@ public static class ProgramUtils Logger.Info("[ProgramUtils][CreatePermissions] Adding permissions..."); using (var scope = app.Services.CreateScope()) { - var permissionService = scope.ServiceProvider.GetRequiredService; + Func permissionService = scope.ServiceProvider.GetRequiredService; if (permissionService != null) { var isValidThread = Task.Run(() => permissionService!.Invoke()?.CreatePermissionsOnStartupAsync()); if (isValidThread.Result != null) { - Logger.Info("[ProgramUtils][CreatePermissions] Done permissions"); + foreach (var result in isValidThread.Result) + { + var currentResult = String.IsNullOrEmpty(result) ? "No permission tracked" : result; + Logger.Info($"[ProgramUtils][CreatePermissions] => {currentResult}"); + } } else {