From 03bc3aa976dce4975f7eb4f841d90b08e4630e7d Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 12 Jan 2024 20:39:57 +0100 Subject: [PATCH] serviceproviderdal --- TIAM.Database.Test/AdminDalTest.cs | 2 +- TIAM.Database/DataLayers/Admins/AdminDal.cs | 472 ++++++++- .../Admins/AdminDalDbContextExtension.cs | 202 ++++ .../ServiceProviders/ServiceProviderDal.cs | 946 ++++++++---------- .../ServiceProviderDalExtension.cs | 256 ++--- .../ServiceProviderAPIController.cs | 29 +- .../UserPermissionAPIController.cs | 15 +- TIAMWebApp/Server/Program.cs | 4 +- TIAMWebApp/Shared/Models/APIUrls.cs | 22 +- 9 files changed, 1197 insertions(+), 751 deletions(-) create mode 100644 TIAM.Database/DataLayers/Admins/AdminDalDbContextExtension.cs diff --git a/TIAM.Database.Test/AdminDalTest.cs b/TIAM.Database.Test/AdminDalTest.cs index 089f014d..31910602 100644 --- a/TIAM.Database.Test/AdminDalTest.cs +++ b/TIAM.Database.Test/AdminDalTest.cs @@ -8,7 +8,7 @@ using AyCode.Database.DataLayers.Users; using AyCode.Utils.Extensions; using Newtonsoft.Json; using TIAM.Database.DataLayers.Admins; -using TIAM.Database.DataLayers.ServiceProviders; +//using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DataLayers.Users; using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbContexts.ServiceProviders; diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index e397ca76..3bf18b0c 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -1,12 +1,15 @@ using AyCode.Database.DbSets.Users; +using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; -using TIAM.Database.DataLayers.ServiceProviders; +//using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.Users; using TIAM.Entities.Permissions; using TIAM.Entities.Products; +using TIAM.Entities.Products.DTOs; +using TIAM.Entities.ServiceProviders; using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; using TIAM.Models.Dtos.Users; @@ -20,6 +23,7 @@ namespace TIAM.Database.DataLayers.Admins } public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId)); + public string? GetTransferDestinationJsonById(Guid transferDestinationId) => Session(ctx => ctx.TransferDestinations.FirstOrDefault(x => x.Id == transferDestinationId)?.ToJson()); public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); @@ -32,6 +36,7 @@ namespace TIAM.Database.DataLayers.Admins public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); + public Task AddProduct(Product product) => TransactionAsync(ctx => ctx.AddProduct(product)); public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); @@ -45,43 +50,440 @@ namespace TIAM.Database.DataLayers.Admins => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); public Task> GetPermissionContextsViewByContextIdAsync(Guid contextId) - => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); + => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); - //public Task> GetUsersAsync() - //{ - // return Context.Users.ToListAsync(); - //} + //15. (IServiceProviderDataService) Create service provider + public Task CreateServiceProviderAsync(TiamServiceProvider serviceProvider) + { + Context.CreateServiceProvider(serviceProvider); + return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + } - //public Task GetUserByEmailAsync(string email) - //{ - // Console.WriteLine($"Getting user from db {email}"); - // var emailLower = email.ToLower(); - // return Context.Users.SingleOrDefaultAsync(x=>x.EmailAddress.ToLower() == emailLower); - //} + public bool CreateProductAsync(Product product) + { + Context.CreateProduct(product); + Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); + var _result = Context.SaveChangesAsync(); + return _result.Result > 0; + } - //public Task CreateUserAsync(User user) - //{ - // user.Created = DateTime.UtcNow; - // user.Modified = DateTime.UtcNow; - // Context.Users.Add(user); - // Console.WriteLine($"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); - // return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); - //} + public Task> GetServiceProvidersAsync() + { + return Context.ServiceProviders.ToListAsync(); + } + + public virtual Task GetServiceProviderByIdAsync(Guid id) + { + Console.WriteLine($"Getting serviceProvider from db {id}"); + return Context.ServiceProviders.SingleOrDefaultAsync(x => x.Id == id); + } + + public Task CreateUserProductMappingAsync(UserProductMapping userProductMapping) + { + Context.UserProductMappings.Add(userProductMapping); + Console.WriteLine($"Saving userProductMapping to db {userProductMapping.Id}, {userProductMapping.ProductId}, {userProductMapping.UserId}"); + return Context.SaveChangesAsync().ContinueWith(x => userProductMapping); + } + + #region ServiceProviders + + //14. (IserviceProviderDataService) Update service provider + public Task UpdateServiceProviderAsync(TiamServiceProvider serviceProvider) + { + var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); + if (dbServiceProvider != null) + { + dbServiceProvider = serviceProvider; + Context.ServiceProviders.Update(dbServiceProvider); + return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + } + else + { + throw new Exception("ServiceProvider not found"); + } + } + + //13. (IserviceProviderDataService) delete service provider + public Task DeleteServiceProviderAsync(Guid id) + { + using (var transaction = Context.Database.BeginTransaction()) + { + var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id); + if (dbServiceProvider != null) + { + //get products for this provider + var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList(); + + /*foreach (var productItem in products) + { + //delete products + var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList(); + //iterate through every row + foreach (var item in permissionContextMappings) + { + + if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group) + { + //get users in the permissiongroup + var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList(); + //remove every row (users) from permissiongroup + foreach (var user in permissionGroupUserMapping) + { + Context.PermissionGroupUserMappings.Remove(user); + } + } + } + //remove permissioncontextmappings + Context.PermissionContextMappings.RemoveRange(permissionContextMappings); + }*/ + Context.Products.RemoveRange(products); + Context.ServiceProviders.Remove(dbServiceProvider); + return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + } + else + { + return Task.FromResult(false); + } + } + } + + //17. (IServiceProviderDataService) get service provider by ownerId + public Task> GetServiceProvidersByOwnerIdAsync() + { + throw new NotImplementedException(); + + } + + #endregion + + #region PermissionTypes + + + //10. (IPermissionService) create permission type + public Task CreatePermissionsTypeAsync(PermissionsType permissionsType) + { + bool result = false; + + using (var transaction = Context.Database.BeginTransaction()) + { + var existingPermission = Context.PermissionsTypes + .FirstOrDefault(x => x.PermissionName == permissionsType.PermissionName)?.PermissionName; + + if (existingPermission == null) + { + //get all the permissiontypes for this context + var permissionTypes = new List(); + var nextBitValue = 0.0; + permissionTypes = Context.PermissionsTypes + .Where(x => x.ContextId == permissionsType.ContextId) + .ToList(); + + //get the max value of the permissiontypes + if (permissionTypes != null) + { + //next bit value is the power of two of the count of the permissiontypes + nextBitValue = Math.Pow(2, permissionTypes.Count); + } + else + { + nextBitValue = Math.Pow(2, 0); + } + permissionsType.PermissionBit = (int)nextBitValue; + Context.PermissionsTypes.Add(permissionsType); + Context.SaveChanges(); + transaction.Commit(); + result = true; + } + else + { + result = false; + } + + } + return Task.FromResult(result); + + } + + //11. (IPermissionService) get permission types for context + public Task>? GetPermissionTypesByContextIdAsync(Guid contextId) + { + return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync(); + } + + public Task GetPermissionFromPermissionType(PermissionsType pType) + { + if (Context.PermissionsTypes.FirstOrDefault(x => x.Id == pType.Id) != null) + { + return Task.FromResult(pType.PermissionBit); + } + else + { + return Task.FromResult(0); + } + } + + #endregion + + #region PermissionMappings + + public Task> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) + { + List result = new List(); + + var UserProductMappings = Context.UserProductMappings.Where(x => x.ProductId == contextId).ToListAsync(); + + if (UserProductMappings.Result != null) + { + foreach (var item in UserProductMappings.Result) + { + var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == item.Id).ToListAsync(); + if (mappingRow.Result == null) + { + //user has no permission but is assigned... must be banned + + } + else if (mappingRow.Result.Count > 1) + { + //user has been assigned more than onece to same context + + } + else + { + foreach (var mapping in mappingRow.Result) + { + result.Add(new AssignedPermissionModel(item.ProductId, item.Id, mapping.SubjectType, item.UserId.ToString(), mapping.Permissions)); + } + } + + } + } + + var AssingedGroups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).ToListAsync(); + + if (AssingedGroups.Result != null) + { + foreach (var group in AssingedGroups.Result) + { + var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == group.Id).ToListAsync(); + if (mappingRow.Result == null) + { + //group has no permission but is assigned... + + } + else if (mappingRow.Result.Count > 1) + { + //group has been assigned more than onece to same context + + } + else + { + foreach (var mapping in mappingRow.Result) + { + result.Add(new AssignedPermissionModel(group.OwnerId, group.Id, mapping.SubjectType, group.GroupName, mapping.Permissions)); + } + } + + } + } + foreach (var row in result) + { + Console.WriteLine($"GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId: {row.ContextId}, {row.SubjectId}, {row.SubjectType}, {row.Name}, {row.PermissionsValue}"); + } + return Task.FromResult(result); + } + + + + //12. (IPermissionService) get permission groups for context + public Task> GetPermissionsForContextByContextIdAsync(Guid contextId) + { + List permissionContextMappings = new List(); + //get all Groups where the contextId is the same + var groups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).Select(x => x.Id).ToHashSet(); + permissionContextMappings = Context.PermissionContextMappings.Where(x => groups.Contains(x.SubjectId)).ToList(); + + //foreach (var item in groups.Result) + //{ + // //get permissioncontextmapping for the group if there is, so we know what permissions the group has + // var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == item.Id); + // permissionContextMappings.Add(pCm); + //} + return Task.FromResult(permissionContextMappings); + } + + //9. (IPermissionService) add user to permission group + public Task AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId) + { + bool result = false; + using (var transaction = Context.Database.BeginTransaction()) + { + //do we need to check if PermissionContextMappingId exists? + var permissionGroupUserMapping = new PermissionGroupUserMapping(userId, permissionGroupId); + Context.PermissionGroupUserMappings.Add(permissionGroupUserMapping); + Context.SaveChanges(); + transaction.Commit(); + result = true; + } + return Task.FromResult(result); + } + + //8. (IPermissionService) create permission group + public Task CreatePermissionGroupAsync(PermissionGroup permissionGroup, TiamServiceProvider serviceProvider) + { + bool result = false; + using (var transaction = Context.Database.BeginTransaction()) + { + var existingPermissionGroup = Context.PermissionGroups.FirstOrDefault(x => x.GroupName == permissionGroup.GroupName)?.GroupName; + if (existingPermissionGroup == null) + { + //create permission type 1 for the group + var permissionType = new PermissionsType(serviceProvider.Id, "View"); + Context.CreatePermissionsType(permissionType); + + //Create PermissionContextMapping for the group + + //create Id for the group + Guid Id = Guid.NewGuid(); + permissionGroup.Id = Id; + var permissionContextMapping = new PermissionContextMapping(serviceProvider.Id, Id, PermissionContextMappingSubjectType.Group, 1, true); + Context.CreatePermissionContextMapping(permissionContextMapping); + Context.CreatePermissionGroup(permissionGroup); + Context.SaveChanges(); + transaction.Commit(); + result = true; + } + else + { + //group with same name already exists + result = false; + } + } + return Task.FromResult(result); + } + + public List GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId) + { + return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList(); + //List userProductMappings = new List(); + + ////let's get the permissioncontextmapping for the group + //var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == groupId); + //Guid pCmId = pCm.Id; + + ////let's get the permissiongroupusermappings for the permissioncontextmapping + //var pGum = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == pCmId).ToList(); + //if (pGum.Count > 0) + //{ + // foreach (var group in pGum) + // { + // userProductMappings.Add(Context.UserProductMappings.FirstOrDefault(x => x.Id == group.UserProductMappingId)); + // } + + //} + + //return Task.FromResult(userProductMappings); + } + + #endregion + + #region Products + + //* 20. (IServiceProviderDataService) Update product + public Product UpdateProduct(Product product) + { + + var prod = Context.UpdateProduct(product); + Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); + Context.SaveChanges(); + return prod; + } + + //* 21. (IServiceProviderDataService) delete product + public Task DeleteProductByIdAsync(Guid productId) + { + return TransactionAsync(ctx => + { + ctx.DeleteProductById(productId); + + return true; + }); + } + + //4. (IPermissionService) AssignPermissionToUserForContextAsync + public Task AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission) + { + var _assIgnedUser = Context.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); + + if (_assIgnedUser != null) + { + //user exists + var _permissionInt = GetPermissionFromPermissionType(permission); + + var permissionContextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMapping.Id); + var currentPermissions = permissionContextMapping.Permissions; + var newPermissions = currentPermissions + _permissionInt.Result; + permissionContextMapping.Permissions = newPermissions; + return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + } + else + { + //user does not exist, let's create it + return Task.FromResult(false); + } + } + + #endregion + + + #region UserProductMappings + + //23. (IServiceProviderDataService) Get Assigned Users By ProductId + public Task> GetUserProductMappingsByProductIdAsync(Guid productId) + { + return Context.UserProductMappings.Where(x => x.ProductId == productId).ToListAsync(); + } + + + //24 . (IServiceProviderDataService) Remove Assigned Users By Product Id + public Task RemoveUserProductMappingsByContextId(Guid productId) + { + using (var transaction = Context.Database.BeginTransaction()) + { + var userProductMappings = Context.UserProductMappings.Where(x => x.ProductId == productId).ToList(); + //remove userProductMappings + + return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + + } + } + + //25. (IServiceProviderDataService) Remove Assigned from product by userProductMappingId + public Task RemoveUserProductMappingAsync(UserProductMapping userProductMapping, bool removeFromGroups) + { + return TransactionAsync(ctx => + { + var result = false; + var userProductMappingToRemove = ctx.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); + + //remove userProductMappings + if (userProductMappingToRemove == null) return false; + + + if (removeFromGroups) + { + //remove permissiongroupusermappings + ctx.RemoveAssingedUserFromPermissionGroups(userProductMappingToRemove.Id); + } + + ctx.UserProductMappings.Remove(userProductMappingToRemove); + + + return result; + }); + } + + + #endregion - //public Task UpdateUserAsync(User user) - //{ - // var existingUser = Context.Users.FirstOrDefault(u => u.EmailAddress == user.EmailAddress); - // if (existingUser != null) - // { - // //user.Modified = DateTime.UtcNow; //ezt nem kell megadni, a háttérben ezt magától megcsinálja a DbContextBase - J. - // existingUser = user; - // Context.Users.Update(existingUser); - // return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - // } - // else - // { - // throw new Exception("User not found"); - // } - //} } } diff --git a/TIAM.Database/DataLayers/Admins/AdminDalDbContextExtension.cs b/TIAM.Database/DataLayers/Admins/AdminDalDbContextExtension.cs new file mode 100644 index 00000000..057a4c8a --- /dev/null +++ b/TIAM.Database/DataLayers/Admins/AdminDalDbContextExtension.cs @@ -0,0 +1,202 @@ +using AyCode.Interfaces.Entities; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TIAM.Database.DbContexts.Admins; +using TIAM.Database.DbContexts.ServiceProviders; +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Products; +using TIAM.Database.DbSets.Users; +using TIAM.Entities.Permissions; +using TIAM.Entities.Products; +using TIAM.Entities.ServiceProviders; +using TIAM.Entities.Users; + +namespace TIAM.Database.DataLayers.Admins +{ + public static class AdminDalDbContextExtension + { + public static string ToJson(this T source) where T : class, IEntity + { + JsonSerializerSettings options = new() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore + }; + + return JsonConvert.SerializeObject(source, options); + } + + public static string ToJson(this IQueryable source) where T : class, IEntity + { + JsonSerializerSettings options = new() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore + }; + + return JsonConvert.SerializeObject(source, options); + } + + public static IQueryable GetUserProductMappingsByPermissionGroupId(this IAdminDbContext ctx, Guid permissionGroupId) + { + return ctx.UserProductMappings + .Where(user => ctx.PermissionGroupUserMappings + .Where(x => x.PermissionGroupId == permissionGroupId) + .Select(x => x.SubjectId) + .Contains(user.Id)); + } + + public static void CleanUpAndRemoveUserProductMappings(this IAdminDbContext ctx, IEnumerable userProductMappings) + { + foreach (var userProductMapping in userProductMappings) + { + ctx.CleanUpAndRemoveAssignedUser(userProductMapping); + } + } + + public static void CleanUpAndRemoveAssignedUser(this IAdminDbContext ctx, UserProductMapping userProductMapping) + { + ctx.RemoveContextMappingBySubjectId(userProductMapping.Id); + ctx.RemoveAssingedUserFromPermissionGroups(userProductMapping.Id); + + ctx.UserProductMappings.Remove(userProductMapping); + } + + public static bool CleanUpAndRemoveUserProductMappings(this IAdminDbContext ctx, Guid userProductMappingId) + { + var userProductMapping = ctx.GetUserProductMappingById(userProductMappingId); + + if (userProductMapping == null) return false; + + ctx.CleanUpAndRemoveAssignedUser(userProductMapping); + + return true; + } + + public static UserProductMapping UpdateUserProductMapping(this IAdminDbContext context, UserProductMapping userProductMapping) + { + if (userProductMapping == null) return null; + var existingUserProductMapping = context.UserProductMappings.FirstOrDefault(u => u.Id == userProductMapping.Id); + if (existingUserProductMapping == null) return null; + existingUserProductMapping.Id = userProductMapping.Id; + existingUserProductMapping.UserId = userProductMapping.UserId; + existingUserProductMapping.ProductId = userProductMapping.ProductId; + + return existingUserProductMapping; + + } + + public static Product UpdateProduct(this IAdminDbContext ctx, Product product) + { + if (product == null) return null; + + var existingProduct = ctx.Products.FirstOrDefault(u => u.Id == product.Id); + if (existingProduct == null) return null; + + existingProduct.Name = product.Name; + existingProduct.ServiceProviderId = product.ServiceProviderId; + existingProduct.Description = product.Description; + existingProduct.Price = product.Price; + existingProduct.JsonDetails = product.JsonDetails; + //existingProduct.UserMediaId = product.UserMediaId; + existingProduct.ProductType = product.ProductType; + + + + return existingProduct; + } + + public static void DeleteProductById(this IAdminDbContext ctx, Guid productId) + { + var product = ctx.Products.FirstOrDefault(u => u.Id == productId); + if (product == null) return; + + ctx.CleanUpAndRemoveUserProductMappings(ctx.GetUserProductMappingsByProductId(productId)); + ctx.Products.Remove(product); + } + + public static bool CreatePermissionGroup(this IAdminDbContext ctx, PermissionGroup permissionGroup) + { + if (permissionGroup == null) return false; + + ctx.PermissionGroups.Add(permissionGroup); + + return true; + } + + public static bool CreatePermissionContextMapping(this IAdminDbContext ctx, PermissionContextMapping permissionContextMapping) + { + if (permissionContextMapping == null) return false; + + ctx.PermissionContextMappings.Add(permissionContextMapping); + + return true; + } + + public static bool CreatePermissionGroupUserMapping(this IAdminDbContext ctx, PermissionGroupUserMapping permissionGroupUserMapping) + { + if (permissionGroupUserMapping == null) return false; + + ctx.PermissionGroupUserMappings.Add(permissionGroupUserMapping); + + return true; + } + + public static bool CreatePermissionsType(this IAdminDbContext ctx, PermissionsType permissionType) + { + if (permissionType == null) return false; + + ctx.PermissionsTypes.Add(permissionType); + + return true; + } + + public static bool CreateProduct(this IAdminDbContext ctx, Product myproduct) + { + if (myproduct == null) return false; + //Automatically add assigneduser for owner + TiamServiceProvider? productOwner = ctx.ServiceProviders.FirstOrDefault(x => x.Id == myproduct.ServiceProviderId); + if (productOwner == null) return false; + var userProductMapping = new UserProductMapping(myproduct.Id, productOwner.OwnerId); + ctx.CreateAssignedUser(userProductMapping); + ctx.AddProduct(myproduct); + + return true; + } + + public static bool CreateAssignedUser(this IAdminDbContext ctx, UserProductMapping userProductMapping) + { + if (userProductMapping == null) return false; + + ctx.UserProductMappings.Add(userProductMapping); + + return true; + } + + public static TiamServiceProvider CreateServiceProvider(this IAdminDbContext ctx, TiamServiceProvider serviceProvider) + { + if (serviceProvider == null) return null; + + ctx.ServiceProviders.Add(serviceProvider); + var userProductMapping = new UserProductMapping(serviceProvider.Id, serviceProvider.OwnerId); + ctx.CreateAssignedUser(userProductMapping); + return serviceProvider; + } + + public static TiamServiceProvider UpdateServiceProvider(this IAdminDbContext ctx, TiamServiceProvider serviceProvider) + { + if (serviceProvider == null) return null; + + var existingServiceProvider = ctx.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); + if (existingServiceProvider == null) return null; + + existingServiceProvider.Name = serviceProvider.Name; + existingServiceProvider.OwnerId = serviceProvider.OwnerId; + return existingServiceProvider; + } + } +} diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs index 876bafb9..1e11b529 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs @@ -23,538 +23,416 @@ using Newtonsoft.Json; namespace TIAM.Database.DataLayers.ServiceProviders { - public class ServiceProviderDal : DalBase - { - - public ServiceProviderDal() : base() - { - } - - public ServiceProviderDal(ServiceProviderDbContext _object) - { - } - - //public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId)); - - //public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); - //public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); - - //public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); - //public Task GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); - //public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email)); - - //public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson()); - //public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); - - - //public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); - - #region ServiceProviders - - //16. (IServiceProviderDataService) get all service providers - public Task> GetServiceProvidersAsync() - { - return Context.ServiceProviders.ToListAsync(); - } - - //18. (IServiceProviderDataService) get serviceProvider by Id - public virtual Task GetServiceProviderByIdAsync(Guid id) - { - Console.WriteLine($"Getting serviceProvider from db {id}"); - return Context.ServiceProviders.SingleOrDefaultAsync(x => x.Id == id); - } - - //15. (IServiceProviderDataService) Create service provider - public Task CreateServiceProviderAsync(TiamServiceProvider serviceProvider) - { - - Context.CreateServiceProvider(serviceProvider); - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - - } - - //14. (IserviceProviderDataService) Update service provider - public Task UpdateServiceProviderAsync(TiamServiceProvider serviceProvider) - { - var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); - if (dbServiceProvider != null) - { - dbServiceProvider = serviceProvider; - Context.ServiceProviders.Update(dbServiceProvider); - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - } - else - { - throw new Exception("ServiceProvider not found"); - } - } - - //13. (IserviceProviderDataService) delete service provider - public Task DeleteServiceProviderAsync(Guid id) - { - using (var transaction = Context.Database.BeginTransaction()) - { - var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id); - if (dbServiceProvider != null) - { - //get products for this provider - var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList(); - - /*foreach (var productItem in products) - { - //delete products - var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList(); - //iterate through every row - foreach (var item in permissionContextMappings) - { - - if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group) - { - //get users in the permissiongroup - var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList(); - //remove every row (users) from permissiongroup - foreach (var user in permissionGroupUserMapping) - { - Context.PermissionGroupUserMappings.Remove(user); - } - } - } - //remove permissioncontextmappings - Context.PermissionContextMappings.RemoveRange(permissionContextMappings); - }*/ - Context.Products.RemoveRange(products); - Context.ServiceProviders.Remove(dbServiceProvider); - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - } - else - { - return Task.FromResult(false); - } - } - } - - //17. (IServiceProviderDataService) get service provider by ownerId - public Task> GetServiceProvidersByOwnerIdAsync() - { - throw new NotImplementedException(); - - } - - #endregion - - #region PermissionTypes - - - //10. (IPermissionService) create permission type - public Task CreatePermissionsTypeAsync(PermissionsType permissionsType) - { - bool result = false; - - using (var transaction = Context.Database.BeginTransaction()) - { - var existingPermission = Context.PermissionsTypes - .FirstOrDefault(x => x.PermissionName == permissionsType.PermissionName)?.PermissionName; - - if (existingPermission == null) - { - //get all the permissiontypes for this context - var permissionTypes = new List(); - var nextBitValue = 0.0; - permissionTypes = Context.PermissionsTypes - .Where(x => x.ContextId == permissionsType.ContextId) - .ToList(); - - //get the max value of the permissiontypes - if (permissionTypes != null) - { - //next bit value is the power of two of the count of the permissiontypes - nextBitValue = Math.Pow(2, permissionTypes.Count); - } - else - { - nextBitValue = Math.Pow(2, 0); - } - permissionsType.PermissionBit = (int)nextBitValue; - Context.PermissionsTypes.Add(permissionsType); - Context.SaveChanges(); - transaction.Commit(); - result = true; - } - else - { - result = false; - } - - } - return Task.FromResult(result); - - } - - //11. (IPermissionService) get permission types for context - public Task>? GetPermissionTypesByContextIdAsync(Guid contextId) - { - return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync(); - } - - public Task GetPermissionFromPermissionType(PermissionsType pType) - { - if (Context.PermissionsTypes.FirstOrDefault(x => x.Id == pType.Id) != null) - { - return Task.FromResult(pType.PermissionBit); - } - else - { - return Task.FromResult(0); - } - } - - #endregion - - #region PermissionMappings - - //public List GetPermissionContextsView(Guid subjectId, Guid contextId) - // => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); - - //public List GetPermissionContextsViewBySubjectId(Guid contextId) - // => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); - - //public List GetPermissionContextsViewByContextId(Guid contextId) - // => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); - - //public Task> GetPermissionContextsViewByContextIdAsync(Guid contextId) - // => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); - - //3. (IPermissionService) get permissions of assigned users and groups - public Task> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) - { - List result = new List(); - - var UserProductMappings = Context.UserProductMappings.Where(x => x.ProductId == contextId).ToListAsync(); - - if (UserProductMappings.Result != null) - { - foreach (var item in UserProductMappings.Result) - { - var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == item.Id).ToListAsync(); - if (mappingRow.Result == null) - { - //user has no permission but is assigned... must be banned - - } - else if (mappingRow.Result.Count > 1) - { - //user has been assigned more than onece to same context - - } - else - { - foreach (var mapping in mappingRow.Result) - { - result.Add(new AssignedPermissionModel(item.ProductId, item.Id, mapping.SubjectType, item.UserId.ToString(), mapping.Permissions)); - } - } - - } - } - - var AssingedGroups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).ToListAsync(); - - if (AssingedGroups.Result != null) - { - foreach (var group in AssingedGroups.Result) - { - var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == group.Id).ToListAsync(); - if (mappingRow.Result == null) - { - //group has no permission but is assigned... - - } - else if (mappingRow.Result.Count > 1) - { - //group has been assigned more than onece to same context - - } - else - { - foreach (var mapping in mappingRow.Result) - { - result.Add(new AssignedPermissionModel(group.OwnerId, group.Id, mapping.SubjectType, group.GroupName, mapping.Permissions)); - } - } - - } - } - foreach (var row in result) - { - Console.WriteLine($"GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId: {row.ContextId}, {row.SubjectId}, {row.SubjectType}, {row.Name}, {row.PermissionsValue}"); - } - return Task.FromResult(result); - } - - - - //12. (IPermissionService) get permission groups for context - public Task> GetPermissionsForContextByContextIdAsync(Guid contextId) - { - List permissionContextMappings = new List(); - //get all Groups where the contextId is the same - var groups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).Select(x => x.Id).ToHashSet(); - permissionContextMappings = Context.PermissionContextMappings.Where(x => groups.Contains(x.SubjectId)).ToList(); - - //foreach (var item in groups.Result) - //{ - // //get permissioncontextmapping for the group if there is, so we know what permissions the group has - // var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == item.Id); - // permissionContextMappings.Add(pCm); - //} - return Task.FromResult(permissionContextMappings); - } - - //9. (IPermissionService) add user to permission group - public Task AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId) - { - bool result = false; - using (var transaction = Context.Database.BeginTransaction()) - { - //do we need to check if PermissionContextMappingId exists? - var permissionGroupUserMapping = new PermissionGroupUserMapping(userId, permissionGroupId); - Context.PermissionGroupUserMappings.Add(permissionGroupUserMapping); - Context.SaveChanges(); - transaction.Commit(); - result = true; - } - return Task.FromResult(result); - } - - //8. (IPermissionService) create permission group - public Task CreatePermissionGroupAsync(PermissionGroup permissionGroup, TiamServiceProvider serviceProvider) - { - bool result = false; - using (var transaction = Context.Database.BeginTransaction()) - { - var existingPermissionGroup = Context.PermissionGroups.FirstOrDefault(x => x.GroupName == permissionGroup.GroupName)?.GroupName; - if (existingPermissionGroup == null) - { - //create permission type 1 for the group - var permissionType = new PermissionsType(serviceProvider.Id, "View"); - Context.CreatePermissionsType(permissionType); - - //Create PermissionContextMapping for the group - - //create Id for the group - Guid Id = Guid.NewGuid(); - permissionGroup.Id = Id; - var permissionContextMapping = new PermissionContextMapping(serviceProvider.Id, Id, PermissionContextMappingSubjectType.Group, 1, true); - Context.CreatePermissionContextMapping(permissionContextMapping); - Context.CreatePermissionGroup(permissionGroup); - Context.SaveChanges(); - transaction.Commit(); - result = true; - } - else - { - //group with same name already exists - result = false; - } - } - return Task.FromResult(result); - } - - public List GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId) - { - return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList(); - //List userProductMappings = new List(); - - ////let's get the permissioncontextmapping for the group - //var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == groupId); - //Guid pCmId = pCm.Id; - - ////let's get the permissiongroupusermappings for the permissioncontextmapping - //var pGum = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == pCmId).ToList(); - //if (pGum.Count > 0) - //{ - // foreach (var group in pGum) - // { - // userProductMappings.Add(Context.UserProductMappings.FirstOrDefault(x => x.Id == group.UserProductMappingId)); - // } - - //} - - //return Task.FromResult(userProductMappings); - } - - #endregion - - #region Products - - //public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); - - //* 19. (IServiceProviderDataService) Create product - public bool CreateProductAsync(Product product) - { - Context.CreateProduct(product); - Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); - var _result = Context.SaveChangesAsync(); - return _result.Result > 0; - } - - //* 20. (IServiceProviderDataService) Update product - public Product UpdateProduct(Product product) - { - - var prod = Context.UpdateProduct(product); - Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); - Context.SaveChanges(); - return prod; - } - - //* 21. (IServiceProviderDataService) delete product - public Task DeleteProductByIdAsync(Guid productId) - { - return TransactionAsync(ctx => - { - ctx.DeleteProductById(productId); - - return true; - }); - } - - //4. (IPermissionService) AssignPermissionToUserForContextAsync - public Task AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission) - { - var _assIgnedUser = Context.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); - - if (_assIgnedUser != null) - { - //user exists - var _permissionInt = GetPermissionFromPermissionType(permission); - - var permissionContextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMapping.Id); - var currentPermissions = permissionContextMapping.Permissions; - var newPermissions = currentPermissions + _permissionInt.Result; - permissionContextMapping.Permissions = newPermissions; - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - } - else - { - //user does not exist, let's create it - return Task.FromResult(false); - } - } - - #endregion - - - #region UserProductMappings - - //22. (IServiceProviderDataService) Create userProductMapping - public Task CreateUserProductMappingAsync(UserProductMapping userProductMapping) - { - Context.UserProductMappings.Add(userProductMapping); - Console.WriteLine($"Saving userProductMapping to db {userProductMapping.Id}, {userProductMapping.ProductId}, {userProductMapping.UserId}"); - return Context.SaveChangesAsync().ContinueWith(x => userProductMapping); - } - - //23. (IServiceProviderDataService) Get Assigned Users By ProductId - public Task> GetUserProductMappingsByProductIdAsync(Guid productId) - { - return Context.UserProductMappings.Where(x => x.ProductId == productId).ToListAsync(); - } - - - //24 . (IServiceProviderDataService) Remove Assigned Users By Product Id - public Task RemoveUserProductMappingsByContextId(Guid productId) - { - using (var transaction = Context.Database.BeginTransaction()) - { - var userProductMappings = Context.UserProductMappings.Where(x => x.ProductId == productId).ToList(); - //remove userProductMappings - - return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - - } - } - - //25. (IServiceProviderDataService) Remove Assigned from product by userProductMappingId - public Task RemoveUserProductMappingAsync(UserProductMapping userProductMapping, bool removeFromGroups) - { - return TransactionAsync(ctx => - { - var result = false; - var userProductMappingToRemove = ctx.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); - - //remove userProductMappings - if (userProductMappingToRemove == null) return false; - - - if (removeFromGroups) - { - //remove permissiongroupusermappings - ctx.RemoveAssingedUserFromPermissionGroups(userProductMappingToRemove.Id); - } - - ctx.UserProductMappings.Remove(userProductMappingToRemove); - - - return result; - }); - } - - //public Task RemoveUserProductMappingByUserIdAsync(Guid userProductMappingId) - //{ - // return TransactionAsync(ctx => - // { - // var userProductMapping = ctx.UserProductMappings.FirstOrDefault(x => x.Id == userProductMappingId); - // //remove userProductMappings - // if (userProductMapping == null) return false; - - // //CleanUp - // //remove permissioncontextmappings - // ctx.RemoveUserProductMappingContextMappingBySubjectId(userProductMappingId); - // //remove permissiongroupusermappings - // ctx.RemoveAssingedUserFromAllProductPermissionGroups(userProductMappingId); - - // return true; - // }); - //} - - //public Task RemoveUserProductMappingContextMappingByUserProductMappingId(Guid userProductMappingId) - //{ - // using (var transaction = Context.Database.BeginTransaction()) - // { - // PermissionContextMapping? contextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMappingId); - // //remove userProductMappings - // if(contextMapping != null) - // { - // Context.PermissionContextMappings.Remove(contextMapping); - // } - // return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - - // } - //} - - - //public Task RemoveAssingedUserFromAllProductPermissionGroups(Guid userProductMappingId) - //{ - // using (var transaction = Context.Database.BeginTransaction()) - // { - // var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.UserProductMappingId == userProductMappingId); - // //remove userProductMappings - - // if (permissionGroupUserMapping != null) - // { - // foreach (var item in permissionGroupUserMapping) - // { - // Context.PermissionGroupUserMappings.Remove(item); - // } - // } - // return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); - - // } - //} - - - #endregion - - } + //public class ServiceProviderDal : DalBase + //{ + + // public ServiceProviderDal() : base() + // { + // } + + // public ServiceProviderDal(ServiceProviderDbContext _object) + // { + // } + + //// #region ServiceProviders + + //// //14. (IserviceProviderDataService) Update service provider + //// public Task UpdateServiceProviderAsync(TiamServiceProvider serviceProvider) + //// { + //// var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); + //// if (dbServiceProvider != null) + //// { + //// dbServiceProvider = serviceProvider; + //// Context.ServiceProviders.Update(dbServiceProvider); + //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + //// } + //// else + //// { + //// throw new Exception("ServiceProvider not found"); + //// } + //// } + + //// //13. (IserviceProviderDataService) delete service provider + //// public Task DeleteServiceProviderAsync(Guid id) + //// { + //// using (var transaction = Context.Database.BeginTransaction()) + //// { + //// var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id); + //// if (dbServiceProvider != null) + //// { + //// //get products for this provider + //// var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList(); + + //// /*foreach (var productItem in products) + //// { + //// //delete products + //// var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList(); + //// //iterate through every row + //// foreach (var item in permissionContextMappings) + //// { + + //// if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group) + //// { + //// //get users in the permissiongroup + //// var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList(); + //// //remove every row (users) from permissiongroup + //// foreach (var user in permissionGroupUserMapping) + //// { + //// Context.PermissionGroupUserMappings.Remove(user); + //// } + //// } + //// } + //// //remove permissioncontextmappings + //// Context.PermissionContextMappings.RemoveRange(permissionContextMappings); + //// }*/ + //// Context.Products.RemoveRange(products); + //// Context.ServiceProviders.Remove(dbServiceProvider); + //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + //// } + //// else + //// { + //// return Task.FromResult(false); + //// } + //// } + //// } + + //// //17. (IServiceProviderDataService) get service provider by ownerId + //// public Task> GetServiceProvidersByOwnerIdAsync() + //// { + //// throw new NotImplementedException(); + + //// } + + //// #endregion + + //// #region PermissionTypes + + + //// //10. (IPermissionService) create permission type + //// public Task CreatePermissionsTypeAsync(PermissionsType permissionsType) + //// { + //// bool result = false; + + //// using (var transaction = Context.Database.BeginTransaction()) + //// { + //// var existingPermission = Context.PermissionsTypes + //// .FirstOrDefault(x => x.PermissionName == permissionsType.PermissionName)?.PermissionName; + + //// if (existingPermission == null) + //// { + //// //get all the permissiontypes for this context + //// var permissionTypes = new List(); + //// var nextBitValue = 0.0; + //// permissionTypes = Context.PermissionsTypes + //// .Where(x => x.ContextId == permissionsType.ContextId) + //// .ToList(); + + //// //get the max value of the permissiontypes + //// if (permissionTypes != null) + //// { + //// //next bit value is the power of two of the count of the permissiontypes + //// nextBitValue = Math.Pow(2, permissionTypes.Count); + //// } + //// else + //// { + //// nextBitValue = Math.Pow(2, 0); + //// } + //// permissionsType.PermissionBit = (int)nextBitValue; + //// Context.PermissionsTypes.Add(permissionsType); + //// Context.SaveChanges(); + //// transaction.Commit(); + //// result = true; + //// } + //// else + //// { + //// result = false; + //// } + + //// } + //// return Task.FromResult(result); + + //// } + + //// //11. (IPermissionService) get permission types for context + //// public Task>? GetPermissionTypesByContextIdAsync(Guid contextId) + //// { + //// return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync(); + //// } + + //// public Task GetPermissionFromPermissionType(PermissionsType pType) + //// { + //// if (Context.PermissionsTypes.FirstOrDefault(x => x.Id == pType.Id) != null) + //// { + //// return Task.FromResult(pType.PermissionBit); + //// } + //// else + //// { + //// return Task.FromResult(0); + //// } + //// } + + //// #endregion + + //// #region PermissionMappings + + //// public Task> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) + //// { + //// List result = new List(); + + //// var UserProductMappings = Context.UserProductMappings.Where(x => x.ProductId == contextId).ToListAsync(); + + //// if (UserProductMappings.Result != null) + //// { + //// foreach (var item in UserProductMappings.Result) + //// { + //// var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == item.Id).ToListAsync(); + //// if (mappingRow.Result == null) + //// { + //// //user has no permission but is assigned... must be banned + + //// } + //// else if (mappingRow.Result.Count > 1) + //// { + //// //user has been assigned more than onece to same context + + //// } + //// else + //// { + //// foreach (var mapping in mappingRow.Result) + //// { + //// result.Add(new AssignedPermissionModel(item.ProductId, item.Id, mapping.SubjectType, item.UserId.ToString(), mapping.Permissions)); + //// } + //// } + + //// } + //// } + + //// var AssingedGroups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).ToListAsync(); + + //// if (AssingedGroups.Result != null) + //// { + //// foreach (var group in AssingedGroups.Result) + //// { + //// var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == group.Id).ToListAsync(); + //// if (mappingRow.Result == null) + //// { + //// //group has no permission but is assigned... + + //// } + //// else if (mappingRow.Result.Count > 1) + //// { + //// //group has been assigned more than onece to same context + + //// } + //// else + //// { + //// foreach (var mapping in mappingRow.Result) + //// { + //// result.Add(new AssignedPermissionModel(group.OwnerId, group.Id, mapping.SubjectType, group.GroupName, mapping.Permissions)); + //// } + //// } + + //// } + //// } + //// foreach (var row in result) + //// { + //// Console.WriteLine($"GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId: {row.ContextId}, {row.SubjectId}, {row.SubjectType}, {row.Name}, {row.PermissionsValue}"); + //// } + //// return Task.FromResult(result); + //// } + + + + //// //12. (IPermissionService) get permission groups for context + //// public Task> GetPermissionsForContextByContextIdAsync(Guid contextId) + //// { + //// List permissionContextMappings = new List(); + //// //get all Groups where the contextId is the same + //// var groups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).Select(x => x.Id).ToHashSet(); + //// permissionContextMappings = Context.PermissionContextMappings.Where(x => groups.Contains(x.SubjectId)).ToList(); + + //// //foreach (var item in groups.Result) + //// //{ + //// // //get permissioncontextmapping for the group if there is, so we know what permissions the group has + //// // var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == item.Id); + //// // permissionContextMappings.Add(pCm); + //// //} + //// return Task.FromResult(permissionContextMappings); + //// } + + //// //9. (IPermissionService) add user to permission group + //// public Task AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId) + //// { + //// bool result = false; + //// using (var transaction = Context.Database.BeginTransaction()) + //// { + //// //do we need to check if PermissionContextMappingId exists? + //// var permissionGroupUserMapping = new PermissionGroupUserMapping(userId, permissionGroupId); + //// Context.PermissionGroupUserMappings.Add(permissionGroupUserMapping); + //// Context.SaveChanges(); + //// transaction.Commit(); + //// result = true; + //// } + //// return Task.FromResult(result); + //// } + + //// //8. (IPermissionService) create permission group + //// public Task CreatePermissionGroupAsync(PermissionGroup permissionGroup, TiamServiceProvider serviceProvider) + //// { + //// bool result = false; + //// using (var transaction = Context.Database.BeginTransaction()) + //// { + //// var existingPermissionGroup = Context.PermissionGroups.FirstOrDefault(x => x.GroupName == permissionGroup.GroupName)?.GroupName; + //// if (existingPermissionGroup == null) + //// { + //// //create permission type 1 for the group + //// var permissionType = new PermissionsType(serviceProvider.Id, "View"); + //// Context.CreatePermissionsType(permissionType); + + //// //Create PermissionContextMapping for the group + + //// //create Id for the group + //// Guid Id = Guid.NewGuid(); + //// permissionGroup.Id = Id; + //// var permissionContextMapping = new PermissionContextMapping(serviceProvider.Id, Id, PermissionContextMappingSubjectType.Group, 1, true); + //// Context.CreatePermissionContextMapping(permissionContextMapping); + //// Context.CreatePermissionGroup(permissionGroup); + //// Context.SaveChanges(); + //// transaction.Commit(); + //// result = true; + //// } + //// else + //// { + //// //group with same name already exists + //// result = false; + //// } + //// } + //// return Task.FromResult(result); + //// } + + //// public List GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId) + //// { + //// return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList(); + //// //List userProductMappings = new List(); + + //// ////let's get the permissioncontextmapping for the group + //// //var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == groupId); + //// //Guid pCmId = pCm.Id; + + //// ////let's get the permissiongroupusermappings for the permissioncontextmapping + //// //var pGum = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == pCmId).ToList(); + //// //if (pGum.Count > 0) + //// //{ + //// // foreach (var group in pGum) + //// // { + //// // userProductMappings.Add(Context.UserProductMappings.FirstOrDefault(x => x.Id == group.UserProductMappingId)); + //// // } + + //// //} + + //// //return Task.FromResult(userProductMappings); + //// } + + //// #endregion + + //// #region Products + + //// //* 20. (IServiceProviderDataService) Update product + //// public Product UpdateProduct(Product product) + //// { + + //// var prod = Context.UpdateProduct(product); + //// Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); + //// Context.SaveChanges(); + //// return prod; + //// } + + //// //* 21. (IServiceProviderDataService) delete product + //// public Task DeleteProductByIdAsync(Guid productId) + //// { + //// return TransactionAsync(ctx => + //// { + //// ctx.DeleteProductById(productId); + + //// return true; + //// }); + //// } + + //// //4. (IPermissionService) AssignPermissionToUserForContextAsync + //// public Task AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission) + //// { + //// var _assIgnedUser = Context.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); + + //// if (_assIgnedUser != null) + //// { + //// //user exists + //// var _permissionInt = GetPermissionFromPermissionType(permission); + + //// var permissionContextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMapping.Id); + //// var currentPermissions = permissionContextMapping.Permissions; + //// var newPermissions = currentPermissions + _permissionInt.Result; + //// permissionContextMapping.Permissions = newPermissions; + //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + //// } + //// else + //// { + //// //user does not exist, let's create it + //// return Task.FromResult(false); + //// } + //// } + + //// #endregion + + + //// #region UserProductMappings + + //// //23. (IServiceProviderDataService) Get Assigned Users By ProductId + //// public Task> GetUserProductMappingsByProductIdAsync(Guid productId) + //// { + //// return Context.UserProductMappings.Where(x => x.ProductId == productId).ToListAsync(); + //// } + + + //// //24 . (IServiceProviderDataService) Remove Assigned Users By Product Id + //// public Task RemoveUserProductMappingsByContextId(Guid productId) + //// { + //// using (var transaction = Context.Database.BeginTransaction()) + //// { + //// var userProductMappings = Context.UserProductMappings.Where(x => x.ProductId == productId).ToList(); + //// //remove userProductMappings + + //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); + + //// } + //// } + + //// //25. (IServiceProviderDataService) Remove Assigned from product by userProductMappingId + //// public Task RemoveUserProductMappingAsync(UserProductMapping userProductMapping, bool removeFromGroups) + //// { + //// return TransactionAsync(ctx => + //// { + //// var result = false; + //// var userProductMappingToRemove = ctx.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); + + //// //remove userProductMappings + //// if (userProductMappingToRemove == null) return false; + + + //// if (removeFromGroups) + //// { + //// //remove permissiongroupusermappings + //// ctx.RemoveAssingedUserFromPermissionGroups(userProductMappingToRemove.Id); + //// } + + //// ctx.UserProductMappings.Remove(userProductMappingToRemove); + + + //// return result; + //// }); + //// } + + + //// #endregion + + ////} } diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs index e0e3cef2..dbd95f89 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs @@ -15,189 +15,143 @@ using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Users; -namespace TIAM.Database.DataLayers.ServiceProviders; +//namespace TIAM.Database.DataLayers.ServiceProviders; -public static class ServiceProviderDalExtension -{ - public static string ToJson(this T source) where T : class, IEntity - { - JsonSerializerSettings options = new() - { - ReferenceLoopHandling = ReferenceLoopHandling.Ignore, - NullValueHandling = NullValueHandling.Ignore - }; +//public static class ServiceProviderDalExtension +//{ +// //public static string ToJson(this T source) where T : class, IEntity +// //{ +// // JsonSerializerSettings options = new() +// // { +// // ReferenceLoopHandling = ReferenceLoopHandling.Ignore, +// // NullValueHandling = NullValueHandling.Ignore +// // }; - return JsonConvert.SerializeObject(source, options); - } +// // return JsonConvert.SerializeObject(source, options); +// //} - public static string ToJson(this IQueryable source) where T : class, IEntity - { - JsonSerializerSettings options = new() - { - ReferenceLoopHandling = ReferenceLoopHandling.Ignore, - NullValueHandling = NullValueHandling.Ignore - }; +// //public static string ToJson(this IQueryable source) where T : class, IEntity +// //{ +// // JsonSerializerSettings options = new() +// // { +// // ReferenceLoopHandling = ReferenceLoopHandling.Ignore, +// // NullValueHandling = NullValueHandling.Ignore +// // }; - return JsonConvert.SerializeObject(source, options); - } +// // return JsonConvert.SerializeObject(source, options); +// //} - public static IQueryable GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId) - { - return ctx.UserProductMappings - .Where(user => ctx.PermissionGroupUserMappings - .Where(x => x.PermissionGroupId == permissionGroupId) - .Select(x => x.SubjectId) - .Contains(user.Id)); - } +// //public static IQueryable GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId) +// //{ +// // return ctx.UserProductMappings +// // .Where(user => ctx.PermissionGroupUserMappings +// // .Where(x => x.PermissionGroupId == permissionGroupId) +// // .Select(x => x.SubjectId) +// // .Contains(user.Id)); +// //} - public static void CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, IEnumerable userProductMappings) - { - foreach (var userProductMapping in userProductMappings) - { - ctx.CleanUpAndRemoveAssignedUser(userProductMapping); - } - } +// //public static void CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, IEnumerable userProductMappings) +// //{ +// // foreach (var userProductMapping in userProductMappings) +// // { +// // ctx.CleanUpAndRemoveAssignedUser(userProductMapping); +// // } +// //} - public static void CleanUpAndRemoveAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping) - { - ctx.RemoveContextMappingBySubjectId(userProductMapping.Id); - ctx.RemoveAssingedUserFromPermissionGroups(userProductMapping.Id); +// //public static void CleanUpAndRemoveAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping) +// //{ +// // ctx.RemoveContextMappingBySubjectId(userProductMapping.Id); +// // ctx.RemoveAssingedUserFromPermissionGroups(userProductMapping.Id); - ctx.UserProductMappings.Remove(userProductMapping); - } +// // ctx.UserProductMappings.Remove(userProductMapping); +// //} - public static bool CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, Guid userProductMappingId) - { - var userProductMapping = ctx.GetUserProductMappingById(userProductMappingId); +// //public static bool CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, Guid userProductMappingId) +// //{ +// // var userProductMapping = ctx.GetUserProductMappingById(userProductMappingId); - if (userProductMapping == null) return false; +// // if (userProductMapping == null) return false; - ctx.CleanUpAndRemoveAssignedUser(userProductMapping); +// // ctx.CleanUpAndRemoveAssignedUser(userProductMapping); - return true; - } +// // return true; +// //} - public static bool CreateAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping) - { - if (userProductMapping == null) return false; +// //public static UserProductMapping UpdateUserProductMapping(this IServiceProviderDbContext context, UserProductMapping userProductMapping) +// //{ +// // if(userProductMapping == null) return null; +// // var existingUserProductMapping = context.UserProductMappings.FirstOrDefault(u => u.Id == userProductMapping.Id); +// // if (existingUserProductMapping == null) return null; +// // existingUserProductMapping.Id = userProductMapping.Id; +// // existingUserProductMapping.UserId = userProductMapping.UserId; +// // existingUserProductMapping.ProductId = userProductMapping.ProductId; - ctx.UserProductMappings.Add(userProductMapping); +// // return existingUserProductMapping; - return true; - } +// //} - public static UserProductMapping UpdateUserProductMapping(this IServiceProviderDbContext context, UserProductMapping userProductMapping) - { - if(userProductMapping == null) return null; - var existingUserProductMapping = context.UserProductMappings.FirstOrDefault(u => u.Id == userProductMapping.Id); - if (existingUserProductMapping == null) return null; - existingUserProductMapping.Id = userProductMapping.Id; - existingUserProductMapping.UserId = userProductMapping.UserId; - existingUserProductMapping.ProductId = userProductMapping.ProductId; +// //public static Product UpdateProduct(this IServiceProviderDbContext ctx, Product product) +// //{ +// // if (product == null) return null; - return existingUserProductMapping; +// // var existingProduct = ctx.Products.FirstOrDefault(u => u.Id == product.Id); +// // if (existingProduct == null) return null; - } - - public static bool CreateProduct(this IServiceProviderDbContext ctx, Product myproduct) - { - if (myproduct == null) return false; - //Automatically add assigneduser for owner - TiamServiceProvider? productOwner = ctx.ServiceProviders.FirstOrDefault(x => x.Id == myproduct.ServiceProviderId); - if(productOwner == null) return false; - var userProductMapping = new UserProductMapping(myproduct.Id, productOwner.OwnerId); - ctx.CreateAssignedUser(userProductMapping); - ctx.AddProduct(myproduct); - - return true; - } - - public static Product UpdateProduct(this IServiceProviderDbContext ctx, Product product) - { - if (product == null) return null; - - var existingProduct = ctx.Products.FirstOrDefault(u => u.Id == product.Id); - if (existingProduct == null) return null; - - existingProduct.Name = product.Name; - existingProduct.ServiceProviderId = product.ServiceProviderId; - existingProduct.Description = product.Description; - existingProduct.Price = product.Price; - existingProduct.JsonDetails = product.JsonDetails; - //existingProduct.UserMediaId = product.UserMediaId; - existingProduct.ProductType = product.ProductType; +// // existingProduct.Name = product.Name; +// // existingProduct.ServiceProviderId = product.ServiceProviderId; +// // existingProduct.Description = product.Description; +// // existingProduct.Price = product.Price; +// // existingProduct.JsonDetails = product.JsonDetails; +// // //existingProduct.UserMediaId = product.UserMediaId; +// // existingProduct.ProductType = product.ProductType; - return existingProduct; - } +// // return existingProduct; +// //} - public static void DeleteProductById(this IServiceProviderDbContext ctx, Guid productId) - { - var product = ctx.Products.FirstOrDefault(u => u.Id == productId); - if (product == null) return; +// //public static void DeleteProductById(this IServiceProviderDbContext ctx, Guid productId) +// //{ +// // var product = ctx.Products.FirstOrDefault(u => u.Id == productId); +// // if (product == null) return; - ctx.CleanUpAndRemoveUserProductMappings(ctx.GetUserProductMappingsByProductId(productId)); - ctx.Products.Remove(product); - } +// // ctx.CleanUpAndRemoveUserProductMappings(ctx.GetUserProductMappingsByProductId(productId)); +// // ctx.Products.Remove(product); +// //} - public static bool CreatePermissionGroup(this IServiceProviderDbContext ctx, PermissionGroup permissionGroup) - { - if (permissionGroup == null) return false; +// //public static bool CreatePermissionGroup(this IServiceProviderDbContext ctx, PermissionGroup permissionGroup) +// //{ +// // if (permissionGroup == null) return false; - ctx.PermissionGroups.Add(permissionGroup); +// // ctx.PermissionGroups.Add(permissionGroup); - return true; - } +// // return true; +// //} - public static bool CreatePermissionContextMapping(this IServiceProviderDbContext ctx, PermissionContextMapping permissionContextMapping) - { - if (permissionContextMapping == null) return false; +// //public static bool CreatePermissionContextMapping(this IServiceProviderDbContext ctx, PermissionContextMapping permissionContextMapping) +// //{ +// // if (permissionContextMapping == null) return false; - ctx.PermissionContextMappings.Add(permissionContextMapping); +// // ctx.PermissionContextMappings.Add(permissionContextMapping); - return true; - } +// // return true; +// //} - public static bool CreatePermissionGroupUserMapping(this IServiceProviderDbContext ctx, PermissionGroupUserMapping permissionGroupUserMapping) - { - if (permissionGroupUserMapping == null) return false; +// //public static bool CreatePermissionGroupUserMapping(this IServiceProviderDbContext ctx, PermissionGroupUserMapping permissionGroupUserMapping) +// //{ +// // if (permissionGroupUserMapping == null) return false; - ctx.PermissionGroupUserMappings.Add(permissionGroupUserMapping); +// // ctx.PermissionGroupUserMappings.Add(permissionGroupUserMapping); - return true; - } +// // return true; +// //} - public static bool CreatePermissionsType(this IServiceProviderDbContext ctx, PermissionsType permissionType) - { - if (permissionType == null) return false; +// //public static bool CreatePermissionsType(this IServiceProviderDbContext ctx, PermissionsType permissionType) +// //{ +// // if (permissionType == null) return false; - ctx.PermissionsTypes.Add(permissionType); +// // ctx.PermissionsTypes.Add(permissionType); - return true; - } - - - - public static TiamServiceProvider CreateServiceProvider(this IServiceProviderDbContext ctx, TiamServiceProvider serviceProvider) - { - if (serviceProvider == null) return null; - - ctx.ServiceProviders.Add(serviceProvider); - var userProductMapping = new UserProductMapping(serviceProvider.Id, serviceProvider.OwnerId); - ctx.CreateAssignedUser(userProductMapping); - return serviceProvider; - } - - public static TiamServiceProvider UpdateServiceProvider(this IServiceProviderDbContext ctx, TiamServiceProvider serviceProvider) - { - if (serviceProvider == null) return null; - - var existingServiceProvider = ctx.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); - if (existingServiceProvider == null) return null; - - existingServiceProvider.Name = serviceProvider.Name; - existingServiceProvider.OwnerId = serviceProvider.OwnerId; - return existingServiceProvider; - } -} \ No newline at end of file +// // return true; +// //} +//} \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs index 9c8b2cce..1fce899a 100644 --- a/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs +++ b/TIAMWebApp/Server/Controllers/ServiceProviderAPIController.cs @@ -8,7 +8,8 @@ using SkiaSharp.Views.Desktop; using System.Drawing; using System.Drawing.Imaging; using System.Text.Json; -using TIAM.Database.DataLayers.ServiceProviders; +using TIAM.Database.DataLayers.Admins; +//using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; @@ -23,15 +24,15 @@ namespace TIAMWebApp.Server.Controllers [Route("api/[controller]")] public class ServiceProviderAPIController : ControllerBase { - private ServiceProviderDal _serviceProviderDal; + private AdminDal _adminDal; private readonly ILogger _logger; - public ServiceProviderAPIController(ILogger logger, ServiceProviderDal serviceProviderDal) + public ServiceProviderAPIController(ILogger logger, AdminDal adminDal) { _logger = logger; - _serviceProviderDal = serviceProviderDal; + _adminDal = adminDal; } //15. @@ -73,7 +74,7 @@ namespace TIAMWebApp.Server.Controllers Console.WriteLine($"ServiceProvider to be created: {id}, {name}, {ownerId}"); - await _serviceProviderDal.CreateServiceProviderAsync(new TiamServiceProvider(id, name, ownerId)); + await _adminDal.CreateServiceProviderAsync(new TiamServiceProvider(id, name, ownerId)); } } return Ok("yes"); @@ -92,7 +93,7 @@ namespace TIAMWebApp.Server.Controllers { //var users = await _serviceProviderDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //return users; - return _serviceProviderDal.GetServiceProvidersAsync(); + return _adminDal.GetServiceProvidersAsync(); } @@ -104,7 +105,7 @@ namespace TIAMWebApp.Server.Controllers { Console.WriteLine($"GetServiceProviderById called with id: {id}"); - return await _serviceProviderDal.GetServiceProviderByIdAsync(id); + return await _adminDal.GetServiceProviderByIdAsync(id); } //17. @@ -117,7 +118,7 @@ namespace TIAMWebApp.Server.Controllers { Console.WriteLine($"GetServiceProvidersByOwnerId called with ownerId: {ownerId}"); - var serviceProviders = await _serviceProviderDal.GetServiceProvidersAsync(); + var serviceProviders = await _adminDal.GetServiceProvidersAsync(); //return serviceProviders.Where(x => x.OwnerId == ownerId).ToList(); var myServiceproviders = serviceProviders.Where(x => x.OwnerId == ownerId).ToDictionary(x => x.Id, x => x.Name); @@ -144,7 +145,7 @@ namespace TIAMWebApp.Server.Controllers UserProductMapping userProductMapping = new UserProductMapping(createUserProductMappingModel.ContextId, createUserProductMappingModel.ContextId); - var result = await _serviceProviderDal.CreateUserProductMappingAsync(userProductMapping); + var result = await _adminDal.CreateUserProductMappingAsync(userProductMapping); return Ok(result); @@ -162,7 +163,7 @@ namespace TIAMWebApp.Server.Controllers Dictionary userProductMappingDictionary = new Dictionary(); - var serviceProviders = await _serviceProviderDal.GetServiceProvidersAsync(); + var serviceProviders = await _adminDal.GetServiceProvidersAsync(); var myServiceproviders = serviceProviders.Where(x => x.Id == serviceProviderId).ToDictionary(x => x.Id, x => x.Name); //put serviceprovider id and name into a dictionary @@ -171,18 +172,18 @@ namespace TIAMWebApp.Server.Controllers } [HttpPost] - [Route("CreateProduct")] + [Route(APIUrls.AddProductRouteName)] [Tags("In-Progress", "Product")] - public async Task CreateProduct([FromBody] Product product) + public async Task AddProduct([FromBody] Product product) { - Console.WriteLine("CreateProduct called"); + Console.WriteLine("AddProduct called"); if (product == null) { return BadRequest("Product is required"); } else { - var result = _serviceProviderDal.CreateProductAsync(product); + var result = _adminDal.AddProduct(product); return Ok(result); } } diff --git a/TIAMWebApp/Server/Controllers/UserPermissionAPIController.cs b/TIAMWebApp/Server/Controllers/UserPermissionAPIController.cs index 3d265488..ffda54d2 100644 --- a/TIAMWebApp/Server/Controllers/UserPermissionAPIController.cs +++ b/TIAMWebApp/Server/Controllers/UserPermissionAPIController.cs @@ -2,7 +2,8 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Text.Json; -using TIAM.Database.DataLayers.ServiceProviders; +using TIAM.Database.DataLayers.Admins; +//using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DataLayers.Users; using TIAM.Entities.Permissions; using TIAM.Entities.Products; @@ -18,15 +19,15 @@ namespace TIAMWebApp.Server.Controllers [Route("api/[controller]")] public class UserPermissionAPIController : ControllerBase { - private ServiceProviderDal _serviceProviderDal; + private AdminDal _adminDal; private readonly ILogger _logger; - public UserPermissionAPIController(ILogger logger, ServiceProviderDal serviceProviderDal) + public UserPermissionAPIController(ILogger logger, AdminDal adminDal) { _logger = logger; - _serviceProviderDal = serviceProviderDal; + _adminDal = adminDal; } //1. create a permission to be assigned to users to access a context @@ -69,7 +70,7 @@ namespace TIAMWebApp.Server.Controllers Console.WriteLine($"GetPermissionsForContextByContextId called with contextId: {contextId}"); Dictionary permissionsDictionary = new Dictionary(); - var permissions = await _serviceProviderDal.GetPermissionsForContextByContextIdAsync(contextId); + var permissions = await _adminDal.GetPermissionsForContextByContextIdAsync(contextId); return Ok(permissions); } } @@ -88,7 +89,7 @@ namespace TIAMWebApp.Server.Controllers } else { - var response = await _serviceProviderDal.AssignPermissionToUserForContextAsync(assignPermissionModel.UserProductMapping, assignPermissionModel.PermissionsType); + var response = await _adminDal.AssignPermissionToUserForContextAsync(assignPermissionModel.UserProductMapping, assignPermissionModel.PermissionsType); return Ok(response); } } @@ -123,7 +124,7 @@ namespace TIAMWebApp.Server.Controllers else { PermissionsType permissionType = new PermissionsType(contextId, name); - var response = await _serviceProviderDal.CreatePermissionsTypeAsync(permissionType); + var response = await _adminDal.CreatePermissionsTypeAsync(permissionType); return Ok(response); } } diff --git a/TIAMWebApp/Server/Program.cs b/TIAMWebApp/Server/Program.cs index 3cc816a3..37072b5a 100644 --- a/TIAMWebApp/Server/Program.cs +++ b/TIAMWebApp/Server/Program.cs @@ -17,7 +17,7 @@ using AyCode.Interfaces.Messages; using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Auctions; using TIAMWebApp.Server.Services; -using TIAM.Database.DataLayers.ServiceProviders; +//using TIAM.Database.DataLayers.ServiceProviders; var builder = WebApplication.CreateBuilder(args); @@ -29,7 +29,7 @@ builder.Services.AddRazorPages(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); +//builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSwaggerGen(swagger => diff --git a/TIAMWebApp/Shared/Models/APIUrls.cs b/TIAMWebApp/Shared/Models/APIUrls.cs index fda7b3dc..ff90ad7a 100644 --- a/TIAMWebApp/Shared/Models/APIUrls.cs +++ b/TIAMWebApp/Shared/Models/APIUrls.cs @@ -8,13 +8,19 @@ namespace TIAMWebApp.Shared.Application.Models { public class APIUrls { - public const string UserTest = "api/UserAPI/test1"; - public const string GetUserByEmail = "api/UserAPI/GetUserByEmail"; - public const string GetUserById = "api/UserAPI/GetUserById"; - public const string GetUsers = "api/UserAPI/GetUsers"; - public const string AuthenticateUser = "api/UserAPI/AuthenticateUser"; - public const string CreateUser = "api/UserAPI/CreateUser"; - public const string RefreshToken = "/api/UserAPI/RefreshToken"; + public const string BaseUrl = "api"; + public const string BaseUrlWithSlash = BaseUrl + "/"; + public const string BaseUrlWithSlashAndVersion = BaseUrlWithSlash + "v1/"; + + public const string UserAPI = BaseUrlWithSlash+"UserAPI"; + public const string UserTest = UserAPI + "/test1"; + public const string GetUserByEmail = UserAPI + "/GetUserByEmail"; + public const string GetUserById = UserAPI + "/GetUserById"; + public const string GetUsers = UserAPI + "/GetUsers"; + public const string AuthenticateUser = UserAPI + "/AuthenticateUser"; + public const string CreateUser = UserAPI + "/CreateUser"; + public const string RefreshToken = UserAPI + "/RefreshToken"; + public const string WeatherForecast = "api/WeatherForecastAPI"; @@ -27,6 +33,8 @@ namespace TIAMWebApp.Shared.Application.Models public const string GetServiceProvidersByOwnerId = "api/ServiceProviderAPI/GetServiceProvidersByOwnerId"; public const string GetQRCodeByProductId = "api/ServiceProviderAPI/GetQRCodeByProductId"; + public const string AddProductRouteName = "AddProduct"; + public const string AddProductRouteUrl = "api/ServiceProviderAPI/"+AddProductRouteName; //AssingedUsers public const string CreateAssignedUser = "api/ServiceProviderAPI/CreateAssignedUser";