178 lines
6.5 KiB
C#
178 lines
6.5 KiB
C#
using AyCode.Database.DataLayers.Users;
|
|
using AyCode.Models.Enums;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Diagnostics;
|
|
using TIAM.Database.DbContexts;
|
|
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.ServiceProviders;
|
|
|
|
public static class ServiceProviderDalExtension
|
|
{
|
|
public static IQueryable<UserProductMapping> 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<UserProductMapping> 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);
|
|
|
|
ctx.UserProductMappings.Remove(userProductMapping);
|
|
}
|
|
|
|
public static bool CleanUpAndRemoveUserProductMappings(this IServiceProviderDbContext ctx, Guid userProductMappingId)
|
|
{
|
|
var userProductMapping = ctx.GetUserProductMappingById(userProductMappingId);
|
|
|
|
if (userProductMapping == null) return false;
|
|
|
|
ctx.CleanUpAndRemoveAssignedUser(userProductMapping);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool CreateAssignedUser(this IServiceProviderDbContext ctx, UserProductMapping userProductMapping)
|
|
{
|
|
if (userProductMapping == null) return false;
|
|
|
|
ctx.UserProductMappings.Add(userProductMapping);
|
|
|
|
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;
|
|
|
|
return existingUserProductMapping;
|
|
|
|
}
|
|
|
|
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;
|
|
|
|
|
|
|
|
return existingProduct;
|
|
}
|
|
|
|
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);
|
|
}
|
|
|
|
public static bool CreatePermissionGroup(this IServiceProviderDbContext ctx, PermissionGroup permissionGroup)
|
|
{
|
|
if (permissionGroup == null) return false;
|
|
|
|
ctx.PermissionGroups.Add(permissionGroup);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool CreatePermissionContextMapping(this IServiceProviderDbContext ctx, PermissionContextMapping permissionContextMapping)
|
|
{
|
|
if (permissionContextMapping == null) return false;
|
|
|
|
ctx.PermissionContextMappings.Add(permissionContextMapping);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool CreatePermissionGroupUserMapping(this IServiceProviderDbContext ctx, PermissionGroupUserMapping permissionGroupUserMapping)
|
|
{
|
|
if (permissionGroupUserMapping == null) return false;
|
|
|
|
ctx.PermissionGroupUserMappings.Add(permissionGroupUserMapping);
|
|
|
|
return true;
|
|
}
|
|
|
|
public static bool CreatePermissionsType(this IServiceProviderDbContext ctx, PermissionsType permissionType)
|
|
{
|
|
if (permissionType == null) return false;
|
|
|
|
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;
|
|
}
|
|
} |