serviceproviderdal

This commit is contained in:
Adam 2024-01-12 20:39:57 +01:00
parent 7388a5879a
commit 03bc3aa976
9 changed files with 1197 additions and 751 deletions

View File

@ -8,7 +8,7 @@ using AyCode.Database.DataLayers.Users;
using AyCode.Utils.Extensions; using AyCode.Utils.Extensions;
using Newtonsoft.Json; using Newtonsoft.Json;
using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Admins;
using TIAM.Database.DataLayers.ServiceProviders; //using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DataLayers.Users; using TIAM.Database.DataLayers.Users;
using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbContexts.Admins;
using TIAM.Database.DbContexts.ServiceProviders; using TIAM.Database.DbContexts.ServiceProviders;

View File

@ -1,12 +1,15 @@
using AyCode.Database.DbSets.Users; using AyCode.Database.DbSets.Users;
using AyCode.Models.Enums;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using TIAM.Database.DataLayers.ServiceProviders; //using TIAM.Database.DataLayers.ServiceProviders;
using TIAM.Database.DbContexts.Admins; using TIAM.Database.DbContexts.Admins;
using TIAM.Database.DbSets.Permissions; using TIAM.Database.DbSets.Permissions;
using TIAM.Database.DbSets.Products; using TIAM.Database.DbSets.Products;
using TIAM.Database.DbSets.Users; using TIAM.Database.DbSets.Users;
using TIAM.Entities.Permissions; using TIAM.Entities.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.Products.DTOs;
using TIAM.Entities.ServiceProviders;
using TIAM.Entities.TransferDestinations; using TIAM.Entities.TransferDestinations;
using TIAM.Entities.Users; using TIAM.Entities.Users;
using TIAM.Models.Dtos.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 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? 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 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 string GetUsersJson() => Session(ctx => ctx.Users.ToJson());
public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId));
public Task<bool> AddProduct(Product product) => TransactionAsync(ctx => ctx.AddProduct(product));
public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); 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()); => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId) public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId)
=> SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//public Task<List<User>> GetUsersAsync() //15. (IServiceProviderDataService) Create service provider
//{ public Task<bool> CreateServiceProviderAsync(TiamServiceProvider serviceProvider)
// return Context.Users.ToListAsync(); {
//} Context.CreateServiceProvider(serviceProvider);
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
}
//public Task<User?> GetUserByEmailAsync(string email) public bool CreateProductAsync(Product product)
//{ {
// Console.WriteLine($"Getting user from db {email}"); Context.CreateProduct(product);
// var emailLower = email.ToLower(); Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}");
// return Context.Users.SingleOrDefaultAsync(x=>x.EmailAddress.ToLower() == emailLower); var _result = Context.SaveChangesAsync();
//} return _result.Result > 0;
}
//public Task<bool> CreateUserAsync(User user) public Task<List<TiamServiceProvider>> GetServiceProvidersAsync()
//{ {
// user.Created = DateTime.UtcNow; return Context.ServiceProviders.ToListAsync();
// user.Modified = DateTime.UtcNow; }
// Context.Users.Add(user);
// Console.WriteLine($"Saving user to db {user.Id}, {user.EmailAddress}, {user.PhoneNumber}, {user.Password}"); public virtual Task<TiamServiceProvider?> GetServiceProviderByIdAsync(Guid id)
// return Context.SaveChangesAsync().ContinueWith(x=>x.Result > 0); {
//} Console.WriteLine($"Getting serviceProvider from db {id}");
return Context.ServiceProviders.SingleOrDefaultAsync(x => x.Id == id);
}
public Task<UserProductMapping> 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<bool> 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<bool> 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<List<TiamServiceProvider>> GetServiceProvidersByOwnerIdAsync()
{
throw new NotImplementedException();
}
#endregion
#region PermissionTypes
//10. (IPermissionService) create permission type
public Task<bool> 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<PermissionsType>();
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<List<PermissionsType>>? GetPermissionTypesByContextIdAsync(Guid contextId)
{
return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync();
}
public Task<int> 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<List<AssignedPermissionModel>> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId)
{
List<AssignedPermissionModel> result = new List<AssignedPermissionModel>();
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<List<PermissionContextMapping>> GetPermissionsForContextByContextIdAsync(Guid contextId)
{
List<PermissionContextMapping> permissionContextMappings = new List<PermissionContextMapping>();
//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<bool> 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<bool> 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<UserProductMapping> GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId)
{
return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList();
//List<UserProductMapping> userProductMappings = new List<UserProductMapping>();
////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<bool> DeleteProductByIdAsync(Guid productId)
{
return TransactionAsync(ctx =>
{
ctx.DeleteProductById(productId);
return true;
});
}
//4. (IPermissionService) AssignPermissionToUserForContextAsync
public Task<bool> 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<List<UserProductMapping>> 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<bool> 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<bool> 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");
// }
//}
} }
} }

View File

@ -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<T>(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<T>(this IQueryable<T> source) where T : class, IEntity
{
JsonSerializerSettings options = new()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore
};
return JsonConvert.SerializeObject(source, options);
}
public static IQueryable<UserProductMapping> 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<UserProductMapping> 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;
}
}
}

View File

@ -23,538 +23,416 @@ using Newtonsoft.Json;
namespace TIAM.Database.DataLayers.ServiceProviders namespace TIAM.Database.DataLayers.ServiceProviders
{ {
public class ServiceProviderDal : DalBase<ServiceProviderDbContext> //public class ServiceProviderDal : DalBase<ServiceProviderDbContext>
{ //{
public ServiceProviderDal() : base() // public ServiceProviderDal() : base()
{ // {
} // }
public ServiceProviderDal(ServiceProviderDbContext _object) // public ServiceProviderDal(ServiceProviderDbContext _object)
{ // {
} // }
//public TransferDestination? GetTransferDestinationById(Guid transferDestinationId, bool autoInclude = false) => Session(ctx=>ctx.TransferDestinations.FirstOrDefault(x=>x.Id == transferDestinationId)); //// #region ServiceProviders
//public User? GetUserById(Guid userId, bool autoInclude = false) => Session(x => x.GetUserById(userId, autoInclude)); //// //14. (IserviceProviderDataService) Update service provider
//public User? GetUserByEmail(string email, bool autoInclude = false) => Session(x => x.GetUserByEmail(email, autoInclude)); //// public Task<bool> UpdateServiceProviderAsync(TiamServiceProvider serviceProvider)
//// {
//public UserModelDto? GetUserModelDtoById(Guid userId) => Session(x => x.GetUserModelDtoById(userId)); //// var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id);
//public Task<UserModelDto?> GetUserModelDtoByIdAsync(Guid userId) => SessionAsync(x => x.GetUserModelDtoById(userId)); //// if (dbServiceProvider != null)
//public UserModelDto? GetUserModelDtoByEmail(string email) => Session(x => x.GetUserModelDtoByEmail(email)); //// {
//// dbServiceProvider = serviceProvider;
//public string? GetUserJsonById(Guid userId) => Session(ctx => ctx.GetUserById(userId)?.ToJson()); //// Context.ServiceProviders.Update(dbServiceProvider);
//public string GetUsersJson() => Session(ctx => ctx.Users.ToJson()); //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
//// }
//// else
//public UserProductMapping? GetUserProductMappingById(Guid userProductMappingId, bool autoInclude = true) => Session(x => x.GetUserProductMappingById(userProductMappingId, autoInclude)); //// {
//// throw new Exception("ServiceProvider not found");
#region ServiceProviders //// }
//// }
//16. (IServiceProviderDataService) get all service providers
public Task<List<TiamServiceProvider>> GetServiceProvidersAsync() //// //13. (IserviceProviderDataService) delete service provider
{ //// public Task<bool> DeleteServiceProviderAsync(Guid id)
return Context.ServiceProviders.ToListAsync(); //// {
} //// using (var transaction = Context.Database.BeginTransaction())
//// {
//18. (IServiceProviderDataService) get serviceProvider by Id //// var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id);
public virtual Task<TiamServiceProvider?> GetServiceProviderByIdAsync(Guid id) //// if (dbServiceProvider != null)
{ //// {
Console.WriteLine($"Getting serviceProvider from db {id}"); //// //get products for this provider
return Context.ServiceProviders.SingleOrDefaultAsync(x => x.Id == id); //// var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList();
}
//// /*foreach (var productItem in products)
//15. (IServiceProviderDataService) Create service provider //// {
public Task<bool> CreateServiceProviderAsync(TiamServiceProvider serviceProvider) //// //delete products
{ //// var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList();
//// //iterate through every row
Context.CreateServiceProvider(serviceProvider); //// foreach (var item in permissionContextMappings)
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); //// {
} //// if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group)
//// {
//14. (IserviceProviderDataService) Update service provider //// //get users in the permissiongroup
public Task<bool> UpdateServiceProviderAsync(TiamServiceProvider serviceProvider) //// var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList();
{ //// //remove every row (users) from permissiongroup
var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == serviceProvider.Id); //// foreach (var user in permissionGroupUserMapping)
if (dbServiceProvider != null) //// {
{ //// Context.PermissionGroupUserMappings.Remove(user);
dbServiceProvider = serviceProvider; //// }
Context.ServiceProviders.Update(dbServiceProvider); //// }
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); //// }
} //// //remove permissioncontextmappings
else //// Context.PermissionContextMappings.RemoveRange(permissionContextMappings);
{ //// }*/
throw new Exception("ServiceProvider not found"); //// Context.Products.RemoveRange(products);
} //// Context.ServiceProviders.Remove(dbServiceProvider);
} //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
//// }
//13. (IserviceProviderDataService) delete service provider //// else
public Task<bool> DeleteServiceProviderAsync(Guid id) //// {
{ //// return Task.FromResult(false);
using (var transaction = Context.Database.BeginTransaction()) //// }
{ //// }
var dbServiceProvider = Context.ServiceProviders.FirstOrDefault(u => u.Id == id); //// }
if (dbServiceProvider != null)
{ //// //17. (IServiceProviderDataService) get service provider by ownerId
//get products for this provider //// public Task<List<TiamServiceProvider>> GetServiceProvidersByOwnerIdAsync()
var products = Context.Products.Where(x => x.ServiceProviderId == id).ToList(); //// {
//// throw new NotImplementedException();
/*foreach (var productItem in products)
{ //// }
//delete products
var permissionContextMappings = Context.PermissionContextMappings.Where(x => x.ContextId == productItem.Id).ToList(); //// #endregion
//iterate through every row
foreach (var item in permissionContextMappings) //// #region PermissionTypes
{
if (item.SubjectType == (int)PermissionContextMappingSubjectType.Group) //// //10. (IPermissionService) create permission type
{ //// public Task<bool> CreatePermissionsTypeAsync(PermissionsType permissionsType)
//get users in the permissiongroup //// {
var permissionGroupUserMapping = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == item.Id).ToList(); //// bool result = false;
//remove every row (users) from permissiongroup
foreach (var user in permissionGroupUserMapping) //// using (var transaction = Context.Database.BeginTransaction())
{ //// {
Context.PermissionGroupUserMappings.Remove(user); //// var existingPermission = Context.PermissionsTypes
} //// .FirstOrDefault(x => x.PermissionName == permissionsType.PermissionName)?.PermissionName;
}
} //// if (existingPermission == null)
//remove permissioncontextmappings //// {
Context.PermissionContextMappings.RemoveRange(permissionContextMappings); //// //get all the permissiontypes for this context
}*/ //// var permissionTypes = new List<PermissionsType>();
Context.Products.RemoveRange(products); //// var nextBitValue = 0.0;
Context.ServiceProviders.Remove(dbServiceProvider); //// permissionTypes = Context.PermissionsTypes
return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); //// .Where(x => x.ContextId == permissionsType.ContextId)
} //// .ToList();
else
{ //// //get the max value of the permissiontypes
return Task.FromResult(false); //// if (permissionTypes != null)
} //// {
} //// //next bit value is the power of two of the count of the permissiontypes
} //// nextBitValue = Math.Pow(2, permissionTypes.Count);
//// }
//17. (IServiceProviderDataService) get service provider by ownerId //// else
public Task<List<TiamServiceProvider>> GetServiceProvidersByOwnerIdAsync() //// {
{ //// nextBitValue = Math.Pow(2, 0);
throw new NotImplementedException(); //// }
//// permissionsType.PermissionBit = (int)nextBitValue;
} //// Context.PermissionsTypes.Add(permissionsType);
//// Context.SaveChanges();
#endregion //// transaction.Commit();
//// result = true;
#region PermissionTypes //// }
//// else
//// {
//10. (IPermissionService) create permission type //// result = false;
public Task<bool> CreatePermissionsTypeAsync(PermissionsType permissionsType) //// }
{
bool result = false; //// }
//// return Task.FromResult(result);
using (var transaction = Context.Database.BeginTransaction())
{ //// }
var existingPermission = Context.PermissionsTypes
.FirstOrDefault(x => x.PermissionName == permissionsType.PermissionName)?.PermissionName; //// //11. (IPermissionService) get permission types for context
//// public Task<List<PermissionsType>>? GetPermissionTypesByContextIdAsync(Guid contextId)
if (existingPermission == null) //// {
{ //// return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync();
//get all the permissiontypes for this context //// }
var permissionTypes = new List<PermissionsType>();
var nextBitValue = 0.0; //// public Task<int> GetPermissionFromPermissionType(PermissionsType pType)
permissionTypes = Context.PermissionsTypes //// {
.Where(x => x.ContextId == permissionsType.ContextId) //// if (Context.PermissionsTypes.FirstOrDefault(x => x.Id == pType.Id) != null)
.ToList(); //// {
//// return Task.FromResult(pType.PermissionBit);
//get the max value of the permissiontypes //// }
if (permissionTypes != null) //// else
{ //// {
//next bit value is the power of two of the count of the permissiontypes //// return Task.FromResult(0);
nextBitValue = Math.Pow(2, permissionTypes.Count); //// }
} //// }
else
{ //// #endregion
nextBitValue = Math.Pow(2, 0);
} //// #region PermissionMappings
permissionsType.PermissionBit = (int)nextBitValue;
Context.PermissionsTypes.Add(permissionsType); //// public Task<List<AssignedPermissionModel>> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId)
Context.SaveChanges(); //// {
transaction.Commit(); //// List<AssignedPermissionModel> result = new List<AssignedPermissionModel>();
result = true;
} //// var UserProductMappings = Context.UserProductMappings.Where(x => x.ProductId == contextId).ToListAsync();
else
{ //// if (UserProductMappings.Result != null)
result = false; //// {
} //// foreach (var item in UserProductMappings.Result)
//// {
} //// var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == item.Id).ToListAsync();
return Task.FromResult(result); //// if (mappingRow.Result == null)
//// {
} //// //user has no permission but is assigned... must be banned
//11. (IPermissionService) get permission types for context //// }
public Task<List<PermissionsType>>? GetPermissionTypesByContextIdAsync(Guid contextId) //// else if (mappingRow.Result.Count > 1)
{ //// {
return Context.PermissionsTypes.Where(x => x.ContextId == contextId).ToListAsync(); //// //user has been assigned more than onece to same context
}
//// }
public Task<int> GetPermissionFromPermissionType(PermissionsType pType) //// else
{ //// {
if (Context.PermissionsTypes.FirstOrDefault(x => x.Id == pType.Id) != null) //// foreach (var mapping in mappingRow.Result)
{ //// {
return Task.FromResult(pType.PermissionBit); //// result.Add(new AssignedPermissionModel(item.ProductId, item.Id, mapping.SubjectType, item.UserId.ToString(), mapping.Permissions));
} //// }
else //// }
{
return Task.FromResult(0); //// }
} //// }
}
//// var AssingedGroups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).ToListAsync();
#endregion
//// if (AssingedGroups.Result != null)
#region PermissionMappings //// {
//// foreach (var group in AssingedGroups.Result)
//public List<PermissionContextMapping> GetPermissionContextsView(Guid subjectId, Guid contextId) //// {
// => Session(x => x.GetPermissionContextsView(subjectId, contextId).ToList()); //// var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == group.Id).ToListAsync();
//// if (mappingRow.Result == null)
//public List<PermissionContextMapping> GetPermissionContextsViewBySubjectId(Guid contextId) //// {
// => Session(x => x.GetPermissionContextsViewBySubjectId(contextId).ToList()); //// //group has no permission but is assigned...
//public List<PermissionContextMapping> GetPermissionContextsViewByContextId(Guid contextId) //// }
// => Session(x => x.GetPermissionContextsViewByContextId(contextId).ToList()); //// else if (mappingRow.Result.Count > 1)
//// {
//public Task<List<PermissionContextMapping>> GetPermissionContextsViewByContextIdAsync(Guid contextId) //// //group has been assigned more than onece to same context
// => SessionAsync(x => x.GetPermissionContextsViewByContextId(contextId).ToList());
//// }
//3. (IPermissionService) get permissions of assigned users and groups //// else
public Task<List<AssignedPermissionModel>> GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId(Guid contextId) //// {
{ //// foreach (var mapping in mappingRow.Result)
List<AssignedPermissionModel> result = new List<AssignedPermissionModel>(); //// {
//// result.Add(new AssignedPermissionModel(group.OwnerId, group.Id, mapping.SubjectType, group.GroupName, mapping.Permissions));
var UserProductMappings = Context.UserProductMappings.Where(x => x.ProductId == contextId).ToListAsync(); //// }
//// }
if (UserProductMappings.Result != null)
{ //// }
foreach (var item in UserProductMappings.Result) //// }
{ //// foreach (var row in result)
var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == item.Id).ToListAsync(); //// {
if (mappingRow.Result == null) //// Console.WriteLine($"GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId: {row.ContextId}, {row.SubjectId}, {row.SubjectType}, {row.Name}, {row.PermissionsValue}");
{ //// }
//user has no permission but is assigned... must be banned //// return Task.FromResult(result);
//// }
}
else if (mappingRow.Result.Count > 1)
{
//user has been assigned more than onece to same context //// //12. (IPermissionService) get permission groups for context
//// public Task<List<PermissionContextMapping>> GetPermissionsForContextByContextIdAsync(Guid contextId)
} //// {
else //// List<PermissionContextMapping> permissionContextMappings = new List<PermissionContextMapping>();
{ //// //get all Groups where the contextId is the same
foreach (var mapping in mappingRow.Result) //// var groups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).Select(x => x.Id).ToHashSet();
{ //// permissionContextMappings = Context.PermissionContextMappings.Where(x => groups.Contains(x.SubjectId)).ToList();
result.Add(new AssignedPermissionModel(item.ProductId, item.Id, mapping.SubjectType, item.UserId.ToString(), mapping.Permissions));
} //// //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);
//// //}
var AssingedGroups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).ToListAsync(); //// return Task.FromResult(permissionContextMappings);
//// }
if (AssingedGroups.Result != null)
{ //// //9. (IPermissionService) add user to permission group
foreach (var group in AssingedGroups.Result) //// public Task<bool> AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId)
{ //// {
var mappingRow = Context.PermissionContextMappings.Where(x => x.SubjectId == group.Id).ToListAsync(); //// bool result = false;
if (mappingRow.Result == null) //// using (var transaction = Context.Database.BeginTransaction())
{ //// {
//group has no permission but is assigned... //// //do we need to check if PermissionContextMappingId exists?
//// var permissionGroupUserMapping = new PermissionGroupUserMapping(userId, permissionGroupId);
} //// Context.PermissionGroupUserMappings.Add(permissionGroupUserMapping);
else if (mappingRow.Result.Count > 1) //// Context.SaveChanges();
{ //// transaction.Commit();
//group has been assigned more than onece to same context //// result = true;
//// }
} //// return Task.FromResult(result);
else //// }
{
foreach (var mapping in mappingRow.Result) //// //8. (IPermissionService) create permission group
{ //// public Task<bool> CreatePermissionGroupAsync(PermissionGroup permissionGroup, TiamServiceProvider serviceProvider)
result.Add(new AssignedPermissionModel(group.OwnerId, group.Id, mapping.SubjectType, group.GroupName, mapping.Permissions)); //// {
} //// bool result = false;
} //// using (var transaction = Context.Database.BeginTransaction())
//// {
} //// var existingPermissionGroup = Context.PermissionGroups.FirstOrDefault(x => x.GroupName == permissionGroup.GroupName)?.GroupName;
} //// if (existingPermissionGroup == null)
foreach (var row in result) //// {
{ //// //create permission type 1 for the group
Console.WriteLine($"GetPermissionsOfUserProductMappingsAndGroupsAsyncByContextId: {row.ContextId}, {row.SubjectId}, {row.SubjectType}, {row.Name}, {row.PermissionsValue}"); //// var permissionType = new PermissionsType(serviceProvider.Id, "View");
} //// Context.CreatePermissionsType(permissionType);
return Task.FromResult(result);
} //// //Create PermissionContextMapping for the group
//// //create Id for the group
//// Guid Id = Guid.NewGuid();
//12. (IPermissionService) get permission groups for context //// permissionGroup.Id = Id;
public Task<List<PermissionContextMapping>> GetPermissionsForContextByContextIdAsync(Guid contextId) //// var permissionContextMapping = new PermissionContextMapping(serviceProvider.Id, Id, PermissionContextMappingSubjectType.Group, 1, true);
{ //// Context.CreatePermissionContextMapping(permissionContextMapping);
List<PermissionContextMapping> permissionContextMappings = new List<PermissionContextMapping>(); //// Context.CreatePermissionGroup(permissionGroup);
//get all Groups where the contextId is the same //// Context.SaveChanges();
var groups = Context.PermissionGroups.Where(x => x.OwnerId == contextId).Select(x => x.Id).ToHashSet(); //// transaction.Commit();
permissionContextMappings = Context.PermissionContextMappings.Where(x => groups.Contains(x.SubjectId)).ToList(); //// result = true;
//// }
//foreach (var item in groups.Result) //// else
//{ //// {
// //get permissioncontextmapping for the group if there is, so we know what permissions the group has //// //group with same name already exists
// var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == item.Id); //// result = false;
// permissionContextMappings.Add(pCm); //// }
//} //// }
return Task.FromResult(permissionContextMappings); //// return Task.FromResult(result);
} //// }
//9. (IPermissionService) add user to permission group //// public List<UserProductMapping> GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId)
public Task<bool> AddUserToPermissionGroupAsync(Guid permissionGroupId, Guid userId) //// {
{ //// return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList();
bool result = false; //// //List<UserProductMapping> userProductMappings = new List<UserProductMapping>();
using (var transaction = Context.Database.BeginTransaction())
{ //// ////let's get the permissioncontextmapping for the group
//do we need to check if PermissionContextMappingId exists? //// //var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == groupId);
var permissionGroupUserMapping = new PermissionGroupUserMapping(userId, permissionGroupId); //// //Guid pCmId = pCm.Id;
Context.PermissionGroupUserMappings.Add(permissionGroupUserMapping);
Context.SaveChanges(); //// ////let's get the permissiongroupusermappings for the permissioncontextmapping
transaction.Commit(); //// //var pGum = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == pCmId).ToList();
result = true; //// //if (pGum.Count > 0)
} //// //{
return Task.FromResult(result); //// // foreach (var group in pGum)
} //// // {
//// // userProductMappings.Add(Context.UserProductMappings.FirstOrDefault(x => x.Id == group.UserProductMappingId));
//8. (IPermissionService) create permission group //// // }
public Task<bool> CreatePermissionGroupAsync(PermissionGroup permissionGroup, TiamServiceProvider serviceProvider)
{ //// //}
bool result = false;
using (var transaction = Context.Database.BeginTransaction()) //// //return Task.FromResult(userProductMappings);
{ //// }
var existingPermissionGroup = Context.PermissionGroups.FirstOrDefault(x => x.GroupName == permissionGroup.GroupName)?.GroupName;
if (existingPermissionGroup == null) //// #endregion
{
//create permission type 1 for the group //// #region Products
var permissionType = new PermissionsType(serviceProvider.Id, "View");
Context.CreatePermissionsType(permissionType); //// //* 20. (IServiceProviderDataService) Update product
//// public Product UpdateProduct(Product product)
//Create PermissionContextMapping for the group //// {
//create Id for the group //// var prod = Context.UpdateProduct(product);
Guid Id = Guid.NewGuid(); //// Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}");
permissionGroup.Id = Id; //// Context.SaveChanges();
var permissionContextMapping = new PermissionContextMapping(serviceProvider.Id, Id, PermissionContextMappingSubjectType.Group, 1, true); //// return prod;
Context.CreatePermissionContextMapping(permissionContextMapping); //// }
Context.CreatePermissionGroup(permissionGroup);
Context.SaveChanges(); //// //* 21. (IServiceProviderDataService) delete product
transaction.Commit(); //// public Task<bool> DeleteProductByIdAsync(Guid productId)
result = true; //// {
} //// return TransactionAsync(ctx =>
else //// {
{ //// ctx.DeleteProductById(productId);
//group with same name already exists
result = false; //// return true;
} //// });
} //// }
return Task.FromResult(result);
} //// //4. (IPermissionService) AssignPermissionToUserForContextAsync
//// public Task<bool> AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission)
public List<UserProductMapping> GetUserProductMappingsInPermissionGroupByGroupId(Guid groupId) //// {
{ //// var _assIgnedUser = Context.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id);
return Context.GetUserProductMappingsByPermissionGroupId(groupId).ToList();
//List<UserProductMapping> userProductMappings = new List<UserProductMapping>(); //// if (_assIgnedUser != null)
//// {
////let's get the permissioncontextmapping for the group //// //user exists
//var pCm = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == groupId); //// var _permissionInt = GetPermissionFromPermissionType(permission);
//Guid pCmId = pCm.Id;
//// var permissionContextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMapping.Id);
////let's get the permissiongroupusermappings for the permissioncontextmapping //// var currentPermissions = permissionContextMapping.Permissions;
//var pGum = Context.PermissionGroupUserMappings.Where(x => x.PermissionContextMappingId == pCmId).ToList(); //// var newPermissions = currentPermissions + _permissionInt.Result;
//if (pGum.Count > 0) //// permissionContextMapping.Permissions = newPermissions;
//{ //// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
// foreach (var group in pGum) //// }
// { //// else
// userProductMappings.Add(Context.UserProductMappings.FirstOrDefault(x => x.Id == group.UserProductMappingId)); //// {
// } //// //user does not exist, let's create it
//// return Task.FromResult(false);
//} //// }
//// }
//return Task.FromResult(userProductMappings);
} //// #endregion
#endregion
//// #region UserProductMappings
#region Products
//// //23. (IServiceProviderDataService) Get Assigned Users By ProductId
//public Product? GetProductById(Guid contextId) => Session(x => x.GetProductById(contextId)); //// public Task<List<UserProductMapping>> GetUserProductMappingsByProductIdAsync(Guid productId)
//// {
//* 19. (IServiceProviderDataService) Create product //// return Context.UserProductMappings.Where(x => x.ProductId == productId).ToListAsync();
public bool CreateProductAsync(Product product) //// }
{
Context.CreateProduct(product);
Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); //// //24 . (IServiceProviderDataService) Remove Assigned Users By Product Id
var _result = Context.SaveChangesAsync(); //// public Task RemoveUserProductMappingsByContextId(Guid productId)
return _result.Result > 0; //// {
} //// using (var transaction = Context.Database.BeginTransaction())
//// {
//* 20. (IServiceProviderDataService) Update product //// var userProductMappings = Context.UserProductMappings.Where(x => x.ProductId == productId).ToList();
public Product UpdateProduct(Product product) //// //remove userProductMappings
{
//// return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0);
var prod = Context.UpdateProduct(product);
Console.WriteLine($"Saving product to db {product.Id}, {product.Name}, {product.ServiceProviderId}"); //// }
Context.SaveChanges(); //// }
return prod;
} //// //25. (IServiceProviderDataService) Remove Assigned from product by userProductMappingId
//// public Task<bool> RemoveUserProductMappingAsync(UserProductMapping userProductMapping, bool removeFromGroups)
//* 21. (IServiceProviderDataService) delete product //// {
public Task<bool> DeleteProductByIdAsync(Guid productId) //// return TransactionAsync(ctx =>
{ //// {
return TransactionAsync(ctx => //// var result = false;
{ //// var userProductMappingToRemove = ctx.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id);
ctx.DeleteProductById(productId);
//// //remove userProductMappings
return true; //// if (userProductMappingToRemove == null) return false;
});
}
//// if (removeFromGroups)
//4. (IPermissionService) AssignPermissionToUserForContextAsync //// {
public Task<bool> AssignPermissionToUserForContextAsync(UserProductMapping userProductMapping, PermissionsType permission) //// //remove permissiongroupusermappings
{ //// ctx.RemoveAssingedUserFromPermissionGroups(userProductMappingToRemove.Id);
var _assIgnedUser = Context.UserProductMappings.FirstOrDefault(x => x.Id == userProductMapping.Id); //// }
if (_assIgnedUser != null) //// ctx.UserProductMappings.Remove(userProductMappingToRemove);
{
//user exists
var _permissionInt = GetPermissionFromPermissionType(permission); //// return result;
//// });
var permissionContextMapping = Context.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == userProductMapping.Id); //// }
var currentPermissions = permissionContextMapping.Permissions;
var newPermissions = currentPermissions + _permissionInt.Result;
permissionContextMapping.Permissions = newPermissions; //// #endregion
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<UserProductMapping> 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<List<UserProductMapping>> 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<bool> 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
}
} }

View File

@ -15,189 +15,143 @@ using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
using TIAM.Entities.Users; using TIAM.Entities.Users;
namespace TIAM.Database.DataLayers.ServiceProviders; //namespace TIAM.Database.DataLayers.ServiceProviders;
public static class ServiceProviderDalExtension //public static class ServiceProviderDalExtension
{ //{
public static string ToJson<T>(this T source) where T : class, IEntity // //public static string ToJson<T>(this T source) where T : class, IEntity
{ // //{
JsonSerializerSettings options = new() // // JsonSerializerSettings options = new()
{ // // {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore, // // ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore // // NullValueHandling = NullValueHandling.Ignore
}; // // };
return JsonConvert.SerializeObject(source, options); // // return JsonConvert.SerializeObject(source, options);
} // //}
public static string ToJson<T>(this IQueryable<T> source) where T : class, IEntity // //public static string ToJson<T>(this IQueryable<T> source) where T : class, IEntity
{ // //{
JsonSerializerSettings options = new() // // JsonSerializerSettings options = new()
{ // // {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore, // // ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
NullValueHandling = NullValueHandling.Ignore // // NullValueHandling = NullValueHandling.Ignore
}; // // };
return JsonConvert.SerializeObject(source, options); // // return JsonConvert.SerializeObject(source, options);
} // //}
public static IQueryable<UserProductMapping> GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId) // //public static IQueryable<UserProductMapping> GetUserProductMappingsByPermissionGroupId(this IServiceProviderDbContext ctx, Guid permissionGroupId)
{ // //{
return ctx.UserProductMappings // // return ctx.UserProductMappings
.Where(user => ctx.PermissionGroupUserMappings // // .Where(user => ctx.PermissionGroupUserMappings
.Where(x => x.PermissionGroupId == permissionGroupId) // // .Where(x => x.PermissionGroupId == permissionGroupId)
.Select(x => x.SubjectId) // // .Select(x => x.SubjectId)
.Contains(user.Id)); // // .Contains(user.Id));
} // //}
public static void CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, IEnumerable<UserProductMapping> userProductMappings) // //public static void CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, IEnumerable<UserProductMapping> userProductMappings)
{ // //{
foreach (var userProductMapping in userProductMappings) // // foreach (var userProductMapping in userProductMappings)
{ // // {
ctx.CleanUpAndRemoveAssignedUser(userProductMapping); // // ctx.CleanUpAndRemoveAssignedUser(userProductMapping);
} // // }
} // //}
public static void CleanUpAndRemoveAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping) // //public static void CleanUpAndRemoveAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping)
{ // //{
ctx.RemoveContextMappingBySubjectId(userProductMapping.Id); // // ctx.RemoveContextMappingBySubjectId(userProductMapping.Id);
ctx.RemoveAssingedUserFromPermissionGroups(userProductMapping.Id); // // ctx.RemoveAssingedUserFromPermissionGroups(userProductMapping.Id);
ctx.UserProductMappings.Remove(userProductMapping); // // ctx.UserProductMappings.Remove(userProductMapping);
} // //}
public static bool CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, Guid userProductMappingId) // //public static bool CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, Guid userProductMappingId)
{ // //{
var userProductMapping = ctx.GetUserProductMappingById(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) // //public static UserProductMapping UpdateUserProductMapping(this IServiceProviderDbContext context, UserProductMapping userProductMapping)
{ // //{
if (userProductMapping == null) return false; // // 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) // //public static Product UpdateProduct(this IServiceProviderDbContext ctx, Product product)
{ // //{
if(userProductMapping == null) return null; // // if (product == 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; // // var existingProduct = ctx.Products.FirstOrDefault(u => u.Id == product.Id);
// // if (existingProduct == null) return null;
} // // existingProduct.Name = product.Name;
// // existingProduct.ServiceProviderId = product.ServiceProviderId;
public static bool CreateProduct(this IServiceProviderDbContext ctx, Product myproduct) // // existingProduct.Description = product.Description;
{ // // existingProduct.Price = product.Price;
if (myproduct == null) return false; // // existingProduct.JsonDetails = product.JsonDetails;
//Automatically add assigneduser for owner // // //existingProduct.UserMediaId = product.UserMediaId;
TiamServiceProvider? productOwner = ctx.ServiceProviders.FirstOrDefault(x => x.Id == myproduct.ServiceProviderId); // // existingProduct.ProductType = product.ProductType;
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;
return existingProduct; // // return existingProduct;
} // //}
public static void DeleteProductById(this IServiceProviderDbContext ctx, Guid productId) // //public static void DeleteProductById(this IServiceProviderDbContext ctx, Guid productId)
{ // //{
var product = ctx.Products.FirstOrDefault(u => u.Id == productId); // // var product = ctx.Products.FirstOrDefault(u => u.Id == productId);
if (product == null) return; // // if (product == null) return;
ctx.CleanUpAndRemoveUserProductMappings(ctx.GetUserProductMappingsByProductId(productId)); // // ctx.CleanUpAndRemoveUserProductMappings(ctx.GetUserProductMappingsByProductId(productId));
ctx.Products.Remove(product); // // ctx.Products.Remove(product);
} // //}
public static bool CreatePermissionGroup(this IServiceProviderDbContext ctx, PermissionGroup permissionGroup) // //public static bool CreatePermissionGroup(this IServiceProviderDbContext ctx, PermissionGroup permissionGroup)
{ // //{
if (permissionGroup == null) return false; // // 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) // //public static bool CreatePermissionContextMapping(this IServiceProviderDbContext ctx, PermissionContextMapping permissionContextMapping)
{ // //{
if (permissionContextMapping == null) return false; // // 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) // //public static bool CreatePermissionGroupUserMapping(this IServiceProviderDbContext ctx, PermissionGroupUserMapping permissionGroupUserMapping)
{ // //{
if (permissionGroupUserMapping == null) return false; // // 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) // //public static bool CreatePermissionsType(this IServiceProviderDbContext ctx, PermissionsType permissionType)
{ // //{
if (permissionType == null) return false; // // if (permissionType == null) return false;
ctx.PermissionsTypes.Add(permissionType); // // ctx.PermissionsTypes.Add(permissionType);
return true; // // 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;
}
}

View File

@ -8,7 +8,8 @@ using SkiaSharp.Views.Desktop;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
using System.Text.Json; 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.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
using TIAM.Entities.ServiceProviders; using TIAM.Entities.ServiceProviders;
@ -23,15 +24,15 @@ namespace TIAMWebApp.Server.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
public class ServiceProviderAPIController : ControllerBase public class ServiceProviderAPIController : ControllerBase
{ {
private ServiceProviderDal _serviceProviderDal; private AdminDal _adminDal;
private readonly ILogger<ServiceProviderAPIController> _logger; private readonly ILogger<ServiceProviderAPIController> _logger;
public ServiceProviderAPIController(ILogger<ServiceProviderAPIController> logger, ServiceProviderDal serviceProviderDal) public ServiceProviderAPIController(ILogger<ServiceProviderAPIController> logger, AdminDal adminDal)
{ {
_logger = logger; _logger = logger;
_serviceProviderDal = serviceProviderDal; _adminDal = adminDal;
} }
//15. //15.
@ -73,7 +74,7 @@ namespace TIAMWebApp.Server.Controllers
Console.WriteLine($"ServiceProvider to be created: {id}, {name}, {ownerId}"); 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"); return Ok("yes");
@ -92,7 +93,7 @@ namespace TIAMWebApp.Server.Controllers
{ {
//var users = await _serviceProviderDal.Ctx.Users.ToListAsync();//.GetUsersAsync(); //var users = await _serviceProviderDal.Ctx.Users.ToListAsync();//.GetUsersAsync();
//return users; //return users;
return _serviceProviderDal.GetServiceProvidersAsync(); return _adminDal.GetServiceProvidersAsync();
} }
@ -104,7 +105,7 @@ namespace TIAMWebApp.Server.Controllers
{ {
Console.WriteLine($"GetServiceProviderById called with id: {id}"); Console.WriteLine($"GetServiceProviderById called with id: {id}");
return await _serviceProviderDal.GetServiceProviderByIdAsync(id); return await _adminDal.GetServiceProviderByIdAsync(id);
} }
//17. //17.
@ -117,7 +118,7 @@ namespace TIAMWebApp.Server.Controllers
{ {
Console.WriteLine($"GetServiceProvidersByOwnerId called with ownerId: {ownerId}"); 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(); //return serviceProviders.Where(x => x.OwnerId == ownerId).ToList();
var myServiceproviders = serviceProviders.Where(x => x.OwnerId == ownerId).ToDictionary(x => x.Id, x => x.Name); 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); UserProductMapping userProductMapping = new UserProductMapping(createUserProductMappingModel.ContextId, createUserProductMappingModel.ContextId);
var result = await _serviceProviderDal.CreateUserProductMappingAsync(userProductMapping); var result = await _adminDal.CreateUserProductMappingAsync(userProductMapping);
return Ok(result); return Ok(result);
@ -162,7 +163,7 @@ namespace TIAMWebApp.Server.Controllers
Dictionary<Guid, string> userProductMappingDictionary = new Dictionary<Guid, string>(); Dictionary<Guid, string> userProductMappingDictionary = new Dictionary<Guid, string>();
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); var myServiceproviders = serviceProviders.Where(x => x.Id == serviceProviderId).ToDictionary(x => x.Id, x => x.Name);
//put serviceprovider id and name into a dictionary //put serviceprovider id and name into a dictionary
@ -171,18 +172,18 @@ namespace TIAMWebApp.Server.Controllers
} }
[HttpPost] [HttpPost]
[Route("CreateProduct")] [Route(APIUrls.AddProductRouteName)]
[Tags("In-Progress", "Product")] [Tags("In-Progress", "Product")]
public async Task<IActionResult> CreateProduct([FromBody] Product product) public async Task<IActionResult> AddProduct([FromBody] Product product)
{ {
Console.WriteLine("CreateProduct called"); Console.WriteLine("AddProduct called");
if (product == null) if (product == null)
{ {
return BadRequest("Product is required"); return BadRequest("Product is required");
} }
else else
{ {
var result = _serviceProviderDal.CreateProductAsync(product); var result = _adminDal.AddProduct(product);
return Ok(result); return Ok(result);
} }
} }

View File

@ -2,7 +2,8 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System.Text.Json; 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.Database.DataLayers.Users;
using TIAM.Entities.Permissions; using TIAM.Entities.Permissions;
using TIAM.Entities.Products; using TIAM.Entities.Products;
@ -18,15 +19,15 @@ namespace TIAMWebApp.Server.Controllers
[Route("api/[controller]")] [Route("api/[controller]")]
public class UserPermissionAPIController : ControllerBase public class UserPermissionAPIController : ControllerBase
{ {
private ServiceProviderDal _serviceProviderDal; private AdminDal _adminDal;
private readonly ILogger<UserPermissionAPIController> _logger; private readonly ILogger<UserPermissionAPIController> _logger;
public UserPermissionAPIController(ILogger<UserPermissionAPIController> logger, ServiceProviderDal serviceProviderDal) public UserPermissionAPIController(ILogger<UserPermissionAPIController> logger, AdminDal adminDal)
{ {
_logger = logger; _logger = logger;
_serviceProviderDal = serviceProviderDal; _adminDal = adminDal;
} }
//1. create a permission to be assigned to users to access a context //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}"); Console.WriteLine($"GetPermissionsForContextByContextId called with contextId: {contextId}");
Dictionary<Guid, int> permissionsDictionary = new Dictionary<Guid, int>(); Dictionary<Guid, int> permissionsDictionary = new Dictionary<Guid, int>();
var permissions = await _serviceProviderDal.GetPermissionsForContextByContextIdAsync(contextId); var permissions = await _adminDal.GetPermissionsForContextByContextIdAsync(contextId);
return Ok(permissions); return Ok(permissions);
} }
} }
@ -88,7 +89,7 @@ namespace TIAMWebApp.Server.Controllers
} }
else else
{ {
var response = await _serviceProviderDal.AssignPermissionToUserForContextAsync(assignPermissionModel.UserProductMapping, assignPermissionModel.PermissionsType); var response = await _adminDal.AssignPermissionToUserForContextAsync(assignPermissionModel.UserProductMapping, assignPermissionModel.PermissionsType);
return Ok(response); return Ok(response);
} }
} }
@ -123,7 +124,7 @@ namespace TIAMWebApp.Server.Controllers
else else
{ {
PermissionsType permissionType = new PermissionsType(contextId, name); PermissionsType permissionType = new PermissionsType(contextId, name);
var response = await _serviceProviderDal.CreatePermissionsTypeAsync(permissionType); var response = await _adminDal.CreatePermissionsTypeAsync(permissionType);
return Ok(response); return Ok(response);
} }
} }

View File

@ -17,7 +17,7 @@ using AyCode.Interfaces.Messages;
using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Admins;
using TIAM.Database.DataLayers.Auctions; using TIAM.Database.DataLayers.Auctions;
using TIAMWebApp.Server.Services; using TIAMWebApp.Server.Services;
using TIAM.Database.DataLayers.ServiceProviders; //using TIAM.Database.DataLayers.ServiceProviders;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
@ -29,7 +29,7 @@ builder.Services.AddRazorPages();
builder.Services.AddScoped<UserDal>(); builder.Services.AddScoped<UserDal>();
builder.Services.AddScoped<AdminDal>(); builder.Services.AddScoped<AdminDal>();
builder.Services.AddScoped<AuctionDal>(); builder.Services.AddScoped<AuctionDal>();
builder.Services.AddScoped<ServiceProviderDal>(); //builder.Services.AddScoped<ServiceProviderDal>();
builder.Services.AddScoped<TransferDestinationDal>(); builder.Services.AddScoped<TransferDestinationDal>();
builder.Services.AddSwaggerGen(swagger => builder.Services.AddSwaggerGen(swagger =>

View File

@ -8,13 +8,19 @@ namespace TIAMWebApp.Shared.Application.Models
{ {
public class APIUrls public class APIUrls
{ {
public const string UserTest = "api/UserAPI/test1"; public const string BaseUrl = "api";
public const string GetUserByEmail = "api/UserAPI/GetUserByEmail"; public const string BaseUrlWithSlash = BaseUrl + "/";
public const string GetUserById = "api/UserAPI/GetUserById"; public const string BaseUrlWithSlashAndVersion = BaseUrlWithSlash + "v1/";
public const string GetUsers = "api/UserAPI/GetUsers";
public const string AuthenticateUser = "api/UserAPI/AuthenticateUser"; public const string UserAPI = BaseUrlWithSlash+"UserAPI";
public const string CreateUser = "api/UserAPI/CreateUser"; public const string UserTest = UserAPI + "/test1";
public const string RefreshToken = "/api/UserAPI/RefreshToken"; 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"; 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 GetServiceProvidersByOwnerId = "api/ServiceProviderAPI/GetServiceProvidersByOwnerId";
public const string GetQRCodeByProductId = "api/ServiceProviderAPI/GetQRCodeByProductId"; public const string GetQRCodeByProductId = "api/ServiceProviderAPI/GetQRCodeByProductId";
public const string AddProductRouteName = "AddProduct";
public const string AddProductRouteUrl = "api/ServiceProviderAPI/"+AddProductRouteName;
//AssingedUsers //AssingedUsers
public const string CreateAssignedUser = "api/ServiceProviderAPI/CreateAssignedUser"; public const string CreateAssignedUser = "api/ServiceProviderAPI/CreateAssignedUser";