Fix some issues in the endpoints and use local mongodb
This commit is contained in:
		| @@ -11,7 +11,7 @@ | ||||
|   </ItemGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Blueprint.Mongo" Version="0.0.3" /> | ||||
|     <PackageReference Include="Blueprint.Mongo" Version="0.0.5" /> | ||||
|     <PackageReference Include="Blueprint.Redis" Version="0.0.1" /> | ||||
|     <PackageReference Include="BuildingBlocks.Library" Version="0.0.1" /> | ||||
|     <PackageReference Include="Mapster" Version="7.4.2-pre02" /> | ||||
|   | ||||
| @@ -22,15 +22,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|     { | ||||
|         private readonly CollectionRepository<ModuleAdapter> repository; | ||||
|         private readonly CacheSettings cacheSettings; | ||||
|         private readonly IRedisCacheProvider cacheProvider; | ||||
|         //private readonly IRedisCacheProvider cacheProvider; | ||||
|  | ||||
|         public ModuleProvider(CollectionRepository<ModuleAdapter> repository, | ||||
|         IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings) | ||||
|         public ModuleProvider(CollectionRepository<ModuleAdapter> repository, IOptions<CacheSettings> cacheSettings) | ||||
|         { | ||||
|             this.repository = repository; | ||||
|             this.repository.CollectionInitialization(); | ||||
|             this.cacheSettings = cacheSettings.Value; | ||||
|             this.cacheProvider = cacheProvider; | ||||
|             //this.cacheProvider = cacheProvider; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
| @@ -57,13 +56,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<ModuleAdapter> GetModuleById(string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModuleById", _id); | ||||
|             var cachedData = await cacheProvider.GetAsync<ModuleAdapter>(cacheKey); | ||||
|             //var cachedData = await cacheProvider.GetAsync<ModuleAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var module = await repository.FindByIdAsync(_id); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, module); | ||||
|             //await cacheProvider.SetAsync(cacheKey, module); | ||||
|  | ||||
|             return module; | ||||
|         } | ||||
| @@ -76,13 +75,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<IEnumerable<ModuleAdapter>> GetAllModules(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModules"); | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<ModuleAdapter>>(cacheKey) ?? []; | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<ModuleAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var modules = await repository.AsQueryable(); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, modules); | ||||
|             //await cacheProvider.SetAsync(cacheKey, modules); | ||||
|  | ||||
|             return modules; | ||||
|         } | ||||
| @@ -97,9 +96,9 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllModulesByList", modules); | ||||
|  | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<ModuleAdapter>>(cacheKey) ?? []; | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<ModuleAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var builder = Builders<ModuleAdapter>.Filter; | ||||
|             var filters = new List<FilterDefinition<ModuleAdapter>>(); | ||||
| @@ -113,7 +112,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|  | ||||
|             var modulesList = await repository.FilterByMongoFilterAsync(finalFilter); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, modulesList); | ||||
|             //await cacheProvider.SetAsync(cacheKey, modulesList); | ||||
|  | ||||
|             return modulesList; | ||||
|         } | ||||
|   | ||||
| @@ -22,15 +22,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|     { | ||||
|         private readonly CollectionRepository<PermissionAdapter> repository; | ||||
|         private readonly CacheSettings cacheSettings; | ||||
|         private readonly IRedisCacheProvider cacheProvider; | ||||
|         //private readonly IRedisCacheProvider cacheProvider; | ||||
|  | ||||
|         public PermissionProvider(CollectionRepository<PermissionAdapter> repository, | ||||
|         IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings) | ||||
|         //IRedisCacheProvider cacheProvider,  | ||||
|         IOptions<CacheSettings> cacheSettings) | ||||
|         { | ||||
|             this.repository = repository; | ||||
|             this.repository.CollectionInitialization(); | ||||
|             this.cacheSettings = cacheSettings.Value; | ||||
|             this.cacheProvider = cacheProvider; | ||||
|             //this.cacheProvider = cacheProvider; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
| @@ -56,14 +57,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns>0 | ||||
|         public async ValueTask<PermissionAdapter> GetPermissionById(string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); | ||||
|             var cachedData = await cacheProvider.GetAsync<PermissionAdapter>(cacheKey); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); | ||||
|             //var cachedData = await cacheProvider.GetAsync<PermissionAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var permission = await repository.FindByIdAsync(_id); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, permission); | ||||
|             //await cacheProvider.SetAsync(cacheKey, permission); | ||||
|  | ||||
|             return permission; | ||||
|         } | ||||
| @@ -75,14 +76,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<IEnumerable<PermissionAdapter>> GetAllPermissions(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<PermissionAdapter>>(cacheKey) ?? []; | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<PermissionAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var permissions = await repository.AsQueryable(); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, permissions); | ||||
|             //await cacheProvider.SetAsync(cacheKey, permissions); | ||||
|  | ||||
|             return permissions; | ||||
|         } | ||||
| @@ -95,11 +96,11 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<IEnumerable<PermissionAdapter>> GetAllPermissionsByList(string[] permissions, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); | ||||
|  | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<PermissionAdapter>>(cacheKey) ?? []; | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<PermissionAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var builder = Builders<PermissionAdapter>.Filter; | ||||
|             var filters = new List<FilterDefinition<PermissionAdapter>>(); | ||||
| @@ -113,7 +114,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|  | ||||
|             var permissionsList = await repository.FilterByMongoFilterAsync(finalFilter); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, permissionsList); | ||||
|             //await cacheProvider.SetAsync(cacheKey, permissionsList); | ||||
|  | ||||
|             return permissionsList; | ||||
|         } | ||||
|   | ||||
| @@ -28,15 +28,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|     { | ||||
|         private readonly CollectionRepository<RoleAdapter> repository; | ||||
|         private readonly CacheSettings cacheSettings; | ||||
|         private readonly IRedisCacheProvider cacheProvider; | ||||
|         //private readonly IRedisCacheProvider cacheProvider; | ||||
|  | ||||
|         public RoleProvider(CollectionRepository<RoleAdapter> repository, | ||||
|         IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings) | ||||
|         //IRedisCacheProvider cacheProvider,  | ||||
|         IOptions<CacheSettings> cacheSettings) | ||||
|         { | ||||
|             this.repository = repository; | ||||
|             this.repository.CollectionInitialization(); | ||||
|             this.cacheSettings = cacheSettings.Value; | ||||
|             this.cacheProvider = cacheProvider; | ||||
|             //this.cacheProvider = cacheProvider; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
| @@ -62,14 +63,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<RoleAdapter> GetRoleById(string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); | ||||
|             var cachedData = await cacheProvider.GetAsync<RoleAdapter>(cacheKey); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); | ||||
|             //var cachedData = await cacheProvider.GetAsync<RoleAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var role = await repository.FindByIdAsync(_id); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, role); | ||||
|             //await cacheProvider.SetAsync(cacheKey, role); | ||||
|  | ||||
|             return role; | ||||
|         } | ||||
| @@ -81,14 +82,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<IEnumerable<RoleAdapter>> GetAllRoles(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<RoleAdapter>>(cacheKey) ?? []; | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<RoleAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var roles = await repository.AsQueryable(); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, roles); | ||||
|             //await cacheProvider.SetAsync(cacheKey, roles); | ||||
|  | ||||
|             return roles; | ||||
|         } | ||||
| @@ -133,7 +134,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<RoleAdapter> AddApplicationToRole(string roleId, ApplicationsEnum application, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var role = await repository.FindOneAsync( | ||||
|                 u => u.Id == roleId && | ||||
|                 u => u._Id == roleId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedApplications = role.Applications.Append(application).Distinct().ToArray(); | ||||
| @@ -153,7 +154,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<RoleAdapter> RemoveApplicationFromRole(string roleId, ApplicationsEnum application, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var role = await repository.FindOneAsync( | ||||
|                 u => u.Id == roleId && | ||||
|                 u => u._Id == roleId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedApplications = role.Applications | ||||
|   | ||||
| @@ -26,15 +26,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|     { | ||||
|         private readonly CollectionRepository<UserAdapter> repository; | ||||
|         private readonly CacheSettings cacheSettings; | ||||
|         private readonly IRedisCacheProvider cacheProvider; | ||||
|         //private readonly IRedisCacheProvider cacheProvider; | ||||
|  | ||||
|         public UserProvider(CollectionRepository<UserAdapter> repository, | ||||
|         IRedisCacheProvider cacheProvider, IOptions<CacheSettings> cacheSettings) | ||||
|         //IRedisCacheProvider cacheProvider,  | ||||
|         IOptions<CacheSettings> cacheSettings) | ||||
|         { | ||||
|             this.repository = repository; | ||||
|             this.repository.CollectionInitialization(); | ||||
|             this.cacheSettings = cacheSettings.Value; | ||||
|             this.cacheProvider = cacheProvider; | ||||
|             //this.cacheProvider = cacheProvider; | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
| @@ -60,14 +61,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<UserAdapter> GetUserById(string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); | ||||
|             var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); | ||||
|             //var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var user = await repository.FindByIdAsync(_id); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, user); | ||||
|             //await cacheProvider.SetAsync(cacheKey, user); | ||||
|  | ||||
|             return user; | ||||
|         } | ||||
| @@ -79,14 +80,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<IEnumerable<UserAdapter>> GetAllUsers(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); | ||||
|             var cachedData = await cacheProvider.GetAsync<IEnumerable<UserAdapter>>(cacheKey) ?? []; | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); | ||||
|             //var cachedData = await cacheProvider.GetAsync<IEnumerable<UserAdapter>>(cacheKey) ?? []; | ||||
|  | ||||
|             if (cachedData.Any()) return cachedData; | ||||
|             //if (cachedData.Any()) return cachedData; | ||||
|  | ||||
|             var users = await repository.AsQueryable(); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, users); | ||||
|             //await cacheProvider.SetAsync(cacheKey, users); | ||||
|  | ||||
|             return users; | ||||
|         } | ||||
| @@ -99,16 +100,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<UserAdapter> GetUserByEmail(string? email, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); | ||||
|             var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); | ||||
|             //var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Email == email &&  | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, user); | ||||
|             //await cacheProvider.SetAsync(cacheKey, user); | ||||
|  | ||||
|             return user; | ||||
|         } | ||||
| @@ -121,16 +122,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         /// the asynchronous execution of the service.</returns> | ||||
|         public async ValueTask<UserAdapter> ValidateUserExistence(string? email, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); | ||||
|             var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|             //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); | ||||
|             //var cachedData = await cacheProvider.GetAsync<UserAdapter>(cacheKey); | ||||
|  | ||||
|             if (cachedData is not null) { return cachedData; } | ||||
|             //if (cachedData is not null) { return cachedData; } | ||||
|  | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Email == email && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             await cacheProvider.SetAsync(cacheKey, user); | ||||
|             //await cacheProvider.SetAsync(cacheKey, user); | ||||
|  | ||||
|             return user; | ||||
|         } | ||||
| @@ -213,7 +214,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<UserAdapter> AddCompanyToUser(string userId, string companyId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Id == userId && | ||||
|                 u => u._Id == userId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedCompanies = user.Companies.Append(companyId).Distinct().ToArray(); | ||||
| @@ -233,7 +234,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<UserAdapter> RemoveCompanyFromUser(string userId, string companyId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Id == userId && | ||||
|                 u => u._Id == userId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedCompanies = user.Companies | ||||
| @@ -256,11 +257,11 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<UserAdapter> AddProjectToUser(string userId, string projectId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Id == userId && | ||||
|                 u => u._Id == userId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedProjects = user.Projects.Append(projectId).Distinct().ToArray(); | ||||
|             user.Companies = updatedProjects; | ||||
|             user.Projects = updatedProjects; | ||||
|  | ||||
|             await repository.ReplaceOneAsync(user); | ||||
|  | ||||
| @@ -276,14 +277,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|         public async ValueTask<UserAdapter> RemoveProjectFromUser(string userId, string projectId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var user = await repository.FindOneAsync( | ||||
|                 u => u.Id == userId && | ||||
|                 u => u._Id == userId && | ||||
|                 u.Status == Core.Blueprint.Mongo.StatusEnum.Active); | ||||
|  | ||||
|             var updatedProjects = user.Projects | ||||
|                     ?.Where(c => c != projectId) | ||||
|                     .ToArray(); | ||||
|  | ||||
|             user.Companies = updatedProjects; | ||||
|             user.Projects = updatedProjects; | ||||
|  | ||||
|             await repository.ReplaceOneAsync(user); | ||||
|  | ||||
| @@ -399,53 +400,106 @@ namespace Core.Thalos.Provider.Providers.Onboarding | ||||
|                     User = new UserAdapter | ||||
|                     { | ||||
|                         Id = result["_id"]?.ToString() ?? "", | ||||
|                         Guid = result["guid"].AsString, | ||||
|                         Email = result["email"].AsString, | ||||
|                         Name = result["name"].AsString, | ||||
|                         MiddleName = result["middleName"].AsString, | ||||
|                         LastName = result["lastName"].AsString, | ||||
|                         DisplayName = result["displayName"].AsString, | ||||
|                         RoleId = result["roleId"]?.ToString() ?? "", | ||||
|                         Companies = result["companies"].AsBsonArray | ||||
|                             .Select(c => c.AsString) | ||||
|                             .ToArray(), | ||||
|                         Projects = result["projects"].AsBsonArray | ||||
|                             .Select(c => c.AsString) | ||||
|                             .ToArray(), | ||||
|                         LastLogIn = result["lastLogIn"].ToUniversalTime(), | ||||
|                         LastLogOut = result["lastLogOut"].ToUniversalTime(), | ||||
|                         CreatedAt = result["createdAt"].ToUniversalTime(), | ||||
|                         CreatedBy = result["createdBy"].AsString, | ||||
|                         UpdatedAt = result["updatedAt"].ToUniversalTime(), | ||||
|                         UpdatedBy = result["updatedBy"].AsString, | ||||
|                         Status = (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString), | ||||
|                         Guid = result.Contains("guid") && !result["guid"].IsBsonNull ? result["guid"].AsString : "", | ||||
|                         Email = result.Contains("email") && !result["email"].IsBsonNull ? result["email"].AsString : "", | ||||
|                         Name = result.Contains("name") && !result["name"].IsBsonNull ? result["name"].AsString : "", | ||||
|                         MiddleName = result.Contains("middleName") && !result["middleName"].IsBsonNull ? result["middleName"].AsString : "", | ||||
|                         LastName = result.Contains("lastName") && !result["lastName"].IsBsonNull ? result["lastName"].AsString : "", | ||||
|                         DisplayName = result.Contains("displayName") && !result["displayName"].IsBsonNull ? result["displayName"].AsString : "", | ||||
|                         RoleId = result.Contains("roleId") && !result["roleId"].IsBsonNull ? result["roleId"].ToString() : "", | ||||
|                         Companies = result.Contains("companies") && result["companies"].IsBsonArray | ||||
|                             ? result["companies"].AsBsonArray | ||||
|                                 .Where(c => c != null && !c.IsBsonNull) | ||||
|                                 .Select(c => c.AsString) | ||||
|                                 .ToArray() | ||||
|                             : Array.Empty<string>(), | ||||
|                                         Projects = result.Contains("projects") && result["projects"].IsBsonArray | ||||
|                             ? result["projects"].AsBsonArray | ||||
|                                 .Where(p => p != null && !p.IsBsonNull) | ||||
|                                 .Select(p => p.AsString) | ||||
|                                 .ToArray() | ||||
|                             : Array.Empty<string>(), | ||||
|                         LastLogIn = result.Contains("lastLogIn") && !result["lastLogIn"].IsBsonNull ? result["lastLogIn"].ToUniversalTime() : DateTime.MinValue, | ||||
|                         LastLogOut = result.Contains("lastLogOut") && !result["lastLogOut"].IsBsonNull ? result["lastLogOut"].ToUniversalTime() : DateTime.MinValue, | ||||
|                         CreatedAt = result.Contains("createdAt") && !result["createdAt"].IsBsonNull ? result["createdAt"].ToUniversalTime() : DateTime.MinValue, | ||||
|                         CreatedBy = result.Contains("createdBy") && !result["createdBy"].IsBsonNull ? result["createdBy"].AsString : "", | ||||
|                         UpdatedAt = result.Contains("updatedAt") && !result["updatedAt"].IsBsonNull ? result["updatedAt"].ToUniversalTime() : DateTime.MinValue, | ||||
|                         UpdatedBy = result.Contains("updatedBy") && !result["updatedBy"].IsBsonNull ? result["updatedBy"].AsString : "", | ||||
|                         Status = result.Contains("status") && !result["status"].IsBsonNull | ||||
|                             ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString) | ||||
|                             : Core.Blueprint.Mongo.StatusEnum.Inactive | ||||
|                     }, | ||||
|                     Role = new RoleAdapter | ||||
|                     { | ||||
|                         Id = result["role"]["_id"]?.ToString() ?? "", | ||||
|                         Name = result["role"]["name"].AsString, | ||||
|                         Description = result["role"]["description"].AsString, | ||||
|                         Applications = result["role"]["applications"].AsBsonArray | ||||
|                             .Select(c => (ApplicationsEnum)c.AsInt32) | ||||
|                             .ToArray(), | ||||
|                         Modules = result["role"]["modules"].AsBsonArray | ||||
|                             .Select(c => c.ToString() ?? "") | ||||
|                             .ToArray(), | ||||
|                         Permissions = result["role"]["permissions"].AsBsonArray | ||||
|                             .Select(c => c.ToString() ?? "") | ||||
|                             .ToArray(), | ||||
|                         Status = (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString), | ||||
|                         CreatedAt = result["role"]["createdAt"].ToUniversalTime(), | ||||
|                         UpdatedAt = result["role"]["updatedAt"].ToUniversalTime(), | ||||
|                         CreatedBy = result["role"]["createdBy"].AsString, | ||||
|                         UpdatedBy = result["role"]["updatedBy"].AsString | ||||
|                         Id = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("_id") | ||||
|                             ? result["role"]["_id"]?.ToString() ?? "" | ||||
|                             : "", | ||||
|                         Name = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("name") | ||||
|                             ? result["role"]["name"]?.AsString ?? "" | ||||
|                             : "", | ||||
|                         Description = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("description") | ||||
|                             ? result["role"]["description"]?.AsString ?? "" | ||||
|                             : "", | ||||
|                         Applications = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                        result["role"].AsBsonDocument.Contains("applications") && | ||||
|                        result["role"]["applications"].IsBsonArray | ||||
|                             ? result["role"]["applications"].AsBsonArray | ||||
|                                 .Where(app => app != null && app.IsInt32) | ||||
|                                 .Select(app => (ApplicationsEnum)app.AsInt32) | ||||
|                                 .ToArray() | ||||
|                             : Array.Empty<ApplicationsEnum>(), | ||||
|                         Modules = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("modules") && | ||||
|                             result["role"]["modules"].IsBsonArray | ||||
|                             ? result["role"]["modules"].AsBsonArray | ||||
|                                 .Where(m => m != null) | ||||
|                                 .Select(m => m.ToString() ?? "") | ||||
|                                 .ToArray() | ||||
|                             : Array.Empty<string>(), | ||||
|                         Permissions = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("permissions") && | ||||
|                             result["role"]["permissions"].IsBsonArray | ||||
|                             ? result["role"]["permissions"].AsBsonArray | ||||
|                                 .Where(p => p != null) | ||||
|                                 .Select(p => p.ToString() ?? "") | ||||
|                                 .ToArray() | ||||
|                             : Array.Empty<string>(), | ||||
|                         Status = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                              result["role"].AsBsonDocument.Contains("status") && | ||||
|                              !result["role"]["status"].IsBsonNull | ||||
|                             ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString) | ||||
|                             : Core.Blueprint.Mongo.StatusEnum.Inactive, | ||||
|                         CreatedAt = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("createdAt") && | ||||
|                             !result["role"]["createdAt"].IsBsonNull | ||||
|                             ? result["role"]["createdAt"].ToUniversalTime() | ||||
|                             : DateTime.MinValue, | ||||
|                         UpdatedAt = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("updatedAt") && | ||||
|                             !result["role"]["updatedAt"].IsBsonNull | ||||
|                             ? result["role"]["updatedAt"].ToUniversalTime() | ||||
|                             : DateTime.MinValue, | ||||
|                         CreatedBy = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("createdBy") && | ||||
|                             !result["role"]["createdBy"].IsBsonNull | ||||
|                             ? result["role"]["createdBy"].AsString | ||||
|                             : "", | ||||
|                         UpdatedBy = result.Contains("role") && result["role"].IsBsonDocument && | ||||
|                             result["role"].AsBsonDocument.Contains("updatedBy") && | ||||
|                             !result["role"]["updatedBy"].IsBsonNull | ||||
|                             ? result["role"]["updatedBy"].AsString | ||||
|                             : "" | ||||
|                     }, | ||||
|                     Permissions = result["permissions"].AsBsonArray | ||||
|                         .Select(permission => BsonSerializer.Deserialize<PermissionAdapter>(permission.AsBsonDocument)) | ||||
|                         .Where(permission => permission.Status == Core.Blueprint.Mongo.StatusEnum.Active) | ||||
|                         .ToList() | ||||
|                     Permissions = result.Contains("permissions") && result["permissions"].IsBsonArray | ||||
|                         ? result["permissions"].AsBsonArray | ||||
|                             .Where(p => p != null && p.IsBsonDocument) | ||||
|                             .Select(p => BsonSerializer.Deserialize<PermissionAdapter>(p.AsBsonDocument)) | ||||
|                             .Where(p => p.Status == Core.Blueprint.Mongo.StatusEnum.Active) | ||||
|                             .ToList() | ||||
|                         : new List<PermissionAdapter>() | ||||
|                 }; | ||||
|  | ||||
|  | ||||
|                 return tokenAdapter; | ||||
|  | ||||
|             } | ||||
|   | ||||
| @@ -1,4 +1,6 @@ | ||||
| using Core.Thalos.Infraestructure.Caching.Contracts; | ||||
| using Core.Blueprint.Mongo; | ||||
| using Core.Thalos.Adapters; | ||||
| using Core.Thalos.Infraestructure.Caching.Contracts; | ||||
| using Core.Thalos.Infraestructure.Contexts.Mongo; | ||||
| using Core.Thalos.Provider.Contracts; | ||||
| using Core.Thalos.Provider.Providers; | ||||
| @@ -14,60 +16,21 @@ namespace Core.Thalos.Provider | ||||
| { | ||||
|     public static class ServiceCollectionExtensions | ||||
|     { | ||||
|         public static IServiceCollection AddDALLayer(this IServiceCollection services, IConfiguration configuration) | ||||
|         public static IServiceCollection AddDALLayerServices(this IServiceCollection services, IConfiguration configuration) | ||||
|         { | ||||
|             var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty; | ||||
|             //Mongo | ||||
|             services.AddScoped<IModuleProvider, ModuleProvider>(); | ||||
|             services.AddScoped<CollectionRepository<ModuleAdapter>>(); | ||||
|  | ||||
|             var connectionString = configuration.GetSection("ConnectionStrings:MongoDB").Value ?? string.Empty; | ||||
|             var databaseName = configuration.GetSection("MongoDB:DatabaseName").Value ?? string.Empty; | ||||
|             var audience = (environment == "Local") | ||||
|                 ? configuration.GetSection("MongoDB:LocalAudience").Value | ||||
|                 : configuration.GetSection("MongoDB:Audience").Value; | ||||
|             services.AddScoped<IPermissionProvider, PermissionProvider>(); | ||||
|             services.AddScoped<CollectionRepository<PermissionAdapter>>(); | ||||
|  | ||||
|             if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(databaseName) || string.IsNullOrEmpty(audience)) | ||||
|             { | ||||
|                 throw new InvalidOperationException("Mongo connection is not configured correctly."); | ||||
|             } | ||||
|  | ||||
|             services.Configure<MongoConnSettings>(options => | ||||
|             { | ||||
|                 options.ConnectionString = connectionString; | ||||
|                 options.Databasename = databaseName; | ||||
|                 options.Audience = audience ?? string.Empty; | ||||
|             }); | ||||
|  | ||||
|             services.AddSingleton<IMongoClient>(serviceProvider => | ||||
|             { | ||||
|                 var settings = serviceProvider.GetRequiredService<IOptions<MongoConnSettings>>().Value; | ||||
|                 var mongoClientSettings = MongoClientSettings.FromConnectionString(settings.ConnectionString); | ||||
|                 mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new HeathOidcCallback(settings.Audience)); | ||||
|                 return new MongoClient(mongoClientSettings); | ||||
|             }); | ||||
|  | ||||
|             services.AddSingleton<IMongoDatabase>(serviceProvider => | ||||
|             { | ||||
|                 var settings = serviceProvider.GetRequiredService<IOptions<MongoConnSettings>>().Value; | ||||
|                 var client = serviceProvider.GetRequiredService<IMongoClient>(); | ||||
|                 return client.GetDatabase(settings.Databasename); | ||||
|             }); | ||||
|  | ||||
|             services.AddDALConfigurationLayer(); | ||||
|             services.AddLogs(); | ||||
|             services.AddRedisCacheService(configuration); | ||||
|  | ||||
|             return services; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         private static IServiceCollection AddDALConfigurationLayer(this IServiceCollection services) | ||||
|         { | ||||
|             services.AddHttpContextAccessor(); | ||||
|             services.AddScoped<IRoleProvider, RoleProvider>(); | ||||
|             services.AddScoped<CollectionRepository<RoleAdapter>>(); | ||||
|  | ||||
|             services.AddScoped<IUserProvider, UserProvider>(); | ||||
|             services.AddScoped<IRoleProvider, RoleProvider>(); | ||||
|             services.AddScoped<IPermissionProvider, PermissionProvider>(); | ||||
|             services.AddScoped<IPermissionProvider, PermissionProvider>(); | ||||
|             services.AddScoped<IModuleProvider, ModuleProvider>(); | ||||
|             services.AddScoped<CollectionRepository<UserAdapter>>(); | ||||
|  | ||||
|             return services; | ||||
|         } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Oscar Morales
					Oscar Morales