From c0327df85f383ae23ae8312f186ba8bb96587a33 Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Mon, 11 Dec 2023 01:45:37 +0100 Subject: [PATCH] Add IDbSets; refactoring, improvements, fixes, etc.. --- TIAM.Database.Test/DatabaseTest.cs | 4 +- TIAM.Database.Test/ServiceProviderDalTest.cs | 2 +- TIAM.Database.Test/UserDalTests.cs | 2 +- TIAM.Database/DataLayers/Admins/AdminDal.cs | 4 +- .../DataLayers/Auctions/AuctionDal.cs | 20 +++--- .../DataLayers/{TiamDalBase.cs => DalBase.cs} | 4 +- .../ServiceProviders/ServiceProviderDal.cs | 6 +- .../ServiceProviderDalExtension.cs | 71 +++---------------- .../TransferDestinationDal.cs | 4 +- TIAM.Database/DataLayers/Users/UserDal.cs | 4 +- .../DbContexts/{ => Admins}/AdminDbContext.cs | 6 +- .../{ => Auctions}/AuctionDbContext.cs | 6 +- ...{TiamDbContextBase.cs => DbContextBase.cs} | 8 +-- .../IServiceProviderDbContext.cs | 10 +++ .../ServiceProviderDbContext.cs | 22 +++--- .../TransferDestinationDbContext.cs | 4 +- .../DbContexts/Users/IUserDbContext.cs | 10 +++ .../DbContexts/{ => Users}/UserDbContext.cs | 6 +- .../IPermissionContextMappingDbSet.cs | 9 +++ .../Permissions/IPermissionGroupDbSet.cs | 9 +++ .../IPermissionGroupUserMappingDbSet.cs | 9 +++ .../Permissions/IPermissionsDbSetContext.cs | 5 ++ .../Permissions/IPermissionsTypeDbSet.cs | 9 +++ .../Permissions/PermissionsDbSetExtensions.cs | 45 ++++++++++++ .../DbSets/Products/ITiamProductDbSet.cs | 9 +++ .../ServiceProvider/IServiceProviderDbSet.cs | 9 +++ .../Users/AssignedUserDbSetExtensions.cs | 22 ++++++ .../DbSets/Users/IAssignedUserDbSet.cs | 9 +++ TIAM.Database/DbSets/Users/IUserDbSet.cs | 8 +++ TIAM.Database/DbSets/Users/IUserTokenDbSet.cs | 10 +++ TIAM.Database/TIAM.Database.csproj | 5 ++ .../TransferDestination.cs | 6 +- TIAM.Entities/Users/UserToken.cs | 10 +++ .../Controllers/AuctionAPIController.cs | 36 +++------- TIAMWebApp/Server/Program.cs | 1 + 35 files changed, 259 insertions(+), 145 deletions(-) rename TIAM.Database/DataLayers/{TiamDalBase.cs => DalBase.cs} (62%) rename TIAM.Database/DbContexts/{ => Admins}/AdminDbContext.cs (90%) rename TIAM.Database/DbContexts/{ => Auctions}/AuctionDbContext.cs (90%) rename TIAM.Database/DbContexts/{TiamDbContextBase.cs => DbContextBase.cs} (77%) create mode 100644 TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs rename TIAM.Database/DbContexts/{ => ServiceProviders}/ServiceProviderDbContext.cs (56%) rename TIAM.Database/DbContexts/{ => Transfers}/TransferDestinationDbContext.cs (84%) create mode 100644 TIAM.Database/DbContexts/Users/IUserDbContext.cs rename TIAM.Database/DbContexts/{ => Users}/UserDbContext.cs (84%) create mode 100644 TIAM.Database/DbSets/Permissions/IPermissionContextMappingDbSet.cs create mode 100644 TIAM.Database/DbSets/Permissions/IPermissionGroupDbSet.cs create mode 100644 TIAM.Database/DbSets/Permissions/IPermissionGroupUserMappingDbSet.cs create mode 100644 TIAM.Database/DbSets/Permissions/IPermissionsDbSetContext.cs create mode 100644 TIAM.Database/DbSets/Permissions/IPermissionsTypeDbSet.cs create mode 100644 TIAM.Database/DbSets/Permissions/PermissionsDbSetExtensions.cs create mode 100644 TIAM.Database/DbSets/Products/ITiamProductDbSet.cs create mode 100644 TIAM.Database/DbSets/ServiceProvider/IServiceProviderDbSet.cs create mode 100644 TIAM.Database/DbSets/Users/AssignedUserDbSetExtensions.cs create mode 100644 TIAM.Database/DbSets/Users/IAssignedUserDbSet.cs create mode 100644 TIAM.Database/DbSets/Users/IUserDbSet.cs create mode 100644 TIAM.Database/DbSets/Users/IUserTokenDbSet.cs create mode 100644 TIAM.Entities/Users/UserToken.cs diff --git a/TIAM.Database.Test/DatabaseTest.cs b/TIAM.Database.Test/DatabaseTest.cs index f9f4e327..22009b9c 100644 --- a/TIAM.Database.Test/DatabaseTest.cs +++ b/TIAM.Database.Test/DatabaseTest.cs @@ -1,11 +1,13 @@ using AyCode.Database.Tests; using Microsoft.EntityFrameworkCore; using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Transfers; +using TIAM.Database.DbContexts.Users; namespace TIAM.Database.Test { [TestClass] - public class DatabaseTest //: DatabaseTestModelBase + public class DatabaseTest //: DatabaseTestModelBase { [TestInitialize] diff --git a/TIAM.Database.Test/ServiceProviderDalTest.cs b/TIAM.Database.Test/ServiceProviderDalTest.cs index c9d08f9e..e4d6c3b2 100644 --- a/TIAM.Database.Test/ServiceProviderDalTest.cs +++ b/TIAM.Database.Test/ServiceProviderDalTest.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; using AyCode.Database.DataLayers.Users; using TIAM.Database.DataLayers.ServiceProviders; using TIAM.Database.DataLayers.Users; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.ServiceProviders; namespace TIAM.Database.Test { diff --git a/TIAM.Database.Test/UserDalTests.cs b/TIAM.Database.Test/UserDalTests.cs index b14d74b8..980d69d3 100644 --- a/TIAM.Database.Test/UserDalTests.cs +++ b/TIAM.Database.Test/UserDalTests.cs @@ -5,7 +5,7 @@ using Microsoft.VisualStudio.TestPlatform.ObjectModel; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using TIAM.Database.DataLayers.Users; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Users; using TIAM.Entities.Users; namespace TIAM.Database.Test diff --git a/TIAM.Database/DataLayers/Admins/AdminDal.cs b/TIAM.Database/DataLayers/Admins/AdminDal.cs index 1cba4060..1fa52f4a 100644 --- a/TIAM.Database/DataLayers/Admins/AdminDal.cs +++ b/TIAM.Database/DataLayers/Admins/AdminDal.cs @@ -4,12 +4,12 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Admins; using TIAM.Entities.Users; namespace TIAM.Database.DataLayers.Users { - public class AdminDal : TiamDalBase + public class AdminDal : DalBase { public AdminDal() : base() diff --git a/TIAM.Database/DataLayers/Auctions/AuctionDal.cs b/TIAM.Database/DataLayers/Auctions/AuctionDal.cs index c49e77bb..79b32eaa 100644 --- a/TIAM.Database/DataLayers/Auctions/AuctionDal.cs +++ b/TIAM.Database/DataLayers/Auctions/AuctionDal.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using AyCode.Core.Logger; using Microsoft.EntityFrameworkCore; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Auctions; using TIAM.Entities.Auctions; -namespace TIAM.Database.DataLayers.Users +namespace TIAM.Database.DataLayers.Auctions { - public class AuctionDal : TiamDalBase + public class AuctionDal : DalBase { public AuctionDal() : base() @@ -23,14 +19,14 @@ namespace TIAM.Database.DataLayers.Users public Task> GetBidsByEmail(string email) { - Console.WriteLine($"Getting bid from db {email}"); + Logger.Info($"Getting bid from db {email}"); var emailLower = email.ToLower(); return Context.AuctionBids.Where(x => x.Email.ToLower() == emailLower).ToListAsync(); } - public async Task GetBidById(Guid id) + public AuctionBid? GetBidById(Guid id) { - Console.WriteLine($"Getting bid from db {id}"); + Logger.Info($"Getting bid from db {id}"); return Context.AuctionBids.FirstOrDefault(x => x.Id == id); } @@ -40,7 +36,7 @@ namespace TIAM.Database.DataLayers.Users auctionBid.Created = DateTime.UtcNow; auctionBid.Modified = DateTime.UtcNow; Context.AuctionBids.Add(auctionBid); - Console.WriteLine($"Saving user to db {auctionBid.Id}, {auctionBid.Email}, {auctionBid.PhoneNumber}"); + Logger.Info($"Saving user to db {auctionBid.Id}, {auctionBid.Email}, {auctionBid.PhoneNumber}"); return Context.SaveChangesAsync().ContinueWith(x => x.Result > 0); } diff --git a/TIAM.Database/DataLayers/TiamDalBase.cs b/TIAM.Database/DataLayers/DalBase.cs similarity index 62% rename from TIAM.Database/DataLayers/TiamDalBase.cs rename to TIAM.Database/DataLayers/DalBase.cs index 3d3e7ef3..a5f0f7e9 100644 --- a/TIAM.Database/DataLayers/TiamDalBase.cs +++ b/TIAM.Database/DataLayers/DalBase.cs @@ -10,9 +10,9 @@ using TIAM.Database.DbContexts; namespace TIAM.Database.DataLayers; -public class TiamDalBase : DalBase where TDbContext : TiamDbContextBase +public class DalBase : AcDalBase where TDbContext : DbContextBase { - //public TiamDalBase() : base(new TransferDestinationDbContext("DeveloperDbConnection")) + //public DalBase() : base(new TransferDestinationDbContext("DeveloperDbConnection")) //{ // Ctx.Database. } } \ No newline at end of file diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs index 25d8936d..fc2e1df0 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDal.cs @@ -5,17 +5,19 @@ using System.Text; using System.Threading.Tasks; using AyCode.Models.Enums; using Microsoft.EntityFrameworkCore; -using TIAM.Database.DbContexts; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Products.DTOs; using TIAM.Entities.Users; +using TIAM.Database.DbContexts.ServiceProviders; +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Users; namespace TIAM.Database.DataLayers.ServiceProviders { - public class ServiceProviderDal : TiamDalBase + public class ServiceProviderDal : DalBase { public ServiceProviderDal() : base() diff --git a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs index 4d13b8ab..133cb0e8 100644 --- a/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs +++ b/TIAM.Database/DataLayers/ServiceProviders/ServiceProviderDalExtension.cs @@ -1,6 +1,8 @@ using AyCode.Database.DataLayers.Users; using AyCode.Models.Enums; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.ServiceProviders; +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Users; using TIAM.Entities.Permissions; using TIAM.Entities.Users; @@ -8,24 +10,7 @@ namespace TIAM.Database.DataLayers.ServiceProviders; public static class ServiceProviderDalExtension { - public static IQueryable GetAssignedUsersByPermissionGroupId(this ServiceProviderDbContext ctx, Guid permissionGroupId) - { - return ctx.AssignedUsers - .Where(user => ctx.PermissionGroupUserMappings - .Where(x => x.PermissionGroupId == permissionGroupId) - .Select(x => x.AssignedUserId) - .Contains(user.Id)); - } - - //public static IQueryable GetPermissionGroupByContextMapping(this ServiceProviderDbContext ctx, PermissionContextMapping permissionContextMapping) - //{ - // if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.Group) - // return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId); - // else if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.User) - // return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId); - //} - - public static IQueryable GetPermissionContextMappingByContextId(this ServiceProviderDbContext ctx, Guid contextId) + public static IQueryable GetPermissionContextMappingByContextId(this IServiceProviderDbContext ctx, Guid contextId) { var subjectIds = ctx.GetAssignedUsersByContextId(contextId).Select(x => x.Id). Concat(ctx.PermissionGroups.Where(x => x.ContextId == contextId).Select(x => x.Id)).ToHashSet(); @@ -33,47 +18,16 @@ public static class ServiceProviderDalExtension return ctx.GetPermissionContextMappingsBySubjectIds(subjectIds); } - //public static IQueryable GetPermissionContextMappingByAssignedUserId(this ServiceProviderDbContext ctx, Guid assignedUserId) - //{ - // var subjectIds = ctx.GetAssignedUsersByContextId(assignedUserId).Select(x => x.Id). - // Concat(ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId).Select(x => x.)).ToHashSet(); - - // return ctx.GetPermissionContextMappingsBySubjectIds(subjectIds); - //} - - public static IQueryable GetPermissionContextMappingsBySubjectIds(this ServiceProviderDbContext ctx, IEnumerable subjectIds) - => ctx.PermissionContextMappings.Where(x => subjectIds.Contains(x.SubjectId)); - - public static PermissionContextMapping? GetPermissionContextMappingBySubjectId(this ServiceProviderDbContext ctx, Guid subjectId) - => ctx.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == subjectId); - - public static void RemoveContextMappingBySubjectId(this ServiceProviderDbContext ctx, Guid subjectId) - { - var contextMapping = ctx.GetPermissionContextMappingBySubjectId(subjectId); - - if (contextMapping == null) return; - - ctx.PermissionContextMappings.Remove(contextMapping); - } - - public static IQueryable GetAllPermissionGroupsByAssignedUserId(this ServiceProviderDbContext ctx, Guid assignedUserId) - => ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId); - - public static void DeleteProductById(this ServiceProviderDbContext ctx, Guid productId) + public static void DeleteProductById(this IServiceProviderDbContext ctx, Guid productId) { var product = ctx.Products.FirstOrDefault(u => u.Id == productId); if (product == null) return; - ctx.RemoveAssignedUsers(ctx.GetAssignedUsersByContextId(productId)); + ctx.CleanUpAndRemoveAssignedUsers(ctx.GetAssignedUsersByContextId(productId)); ctx.Products.Remove(product); } - public static void RemoveAssingedUserFromPermissionGroups(this ServiceProviderDbContext ctx, Guid assignedUserId) - { - ctx.PermissionGroupUserMappings.RemoveRange(ctx.GetAllPermissionGroupsByAssignedUserId(assignedUserId)); - } - - public static void RemoveAssignedUsers(this ServiceProviderDbContext ctx, IEnumerable assignedUsers) + public static void CleanUpAndRemoveAssignedUsers(this IServiceProviderDbContext ctx, IEnumerable assignedUsers) { foreach (var assignedUser in assignedUsers) { @@ -81,7 +35,7 @@ public static class ServiceProviderDalExtension } } - public static void CleanUpAndRemoveAssignedUser(this ServiceProviderDbContext ctx, AssignedUser assignedUser) + public static void CleanUpAndRemoveAssignedUser(this IServiceProviderDbContext ctx, AssignedUser assignedUser) { ctx.RemoveContextMappingBySubjectId(assignedUser.Id); ctx.RemoveAssingedUserFromPermissionGroups(assignedUser.Id); @@ -89,7 +43,7 @@ public static class ServiceProviderDalExtension ctx.AssignedUsers.Remove(assignedUser); } - public static bool RemoveAssignedUserById(this ServiceProviderDbContext ctx, Guid assignedUserId) + public static bool CleanUpAndRemoveAssignedUsers(this IServiceProviderDbContext ctx, Guid assignedUserId) { var assignedUser = ctx.GetAssignedUserById(assignedUserId); @@ -99,11 +53,4 @@ public static class ServiceProviderDalExtension return true; } - - public static AssignedUser? GetAssignedUserById(this ServiceProviderDbContext ctx, Guid assignedUserId) - => ctx.AssignedUsers.FirstOrDefault(x => x.Id == assignedUserId); - - public static IQueryable GetAssignedUsersByContextId(this ServiceProviderDbContext ctx, Guid contextId) - => ctx.AssignedUsers.Where(x => x.ContextId == contextId); - } \ No newline at end of file diff --git a/TIAM.Database/DataLayers/TransferDestinations/TransferDestinationDal.cs b/TIAM.Database/DataLayers/TransferDestinations/TransferDestinationDal.cs index 48ebe772..8bd29753 100644 --- a/TIAM.Database/DataLayers/TransferDestinations/TransferDestinationDal.cs +++ b/TIAM.Database/DataLayers/TransferDestinations/TransferDestinationDal.cs @@ -6,13 +6,13 @@ using System.Threading.Tasks; using AyCode.Database; using Microsoft.EntityFrameworkCore; using Microsoft.Identity.Client; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Transfers; using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; namespace TIAM.Database.DataLayers.TransferDestinations; -public class TransferDestinationDal : TiamDalBase +public class TransferDestinationDal : DalBase { public TransferDestinationDal() : base() { diff --git a/TIAM.Database/DataLayers/Users/UserDal.cs b/TIAM.Database/DataLayers/Users/UserDal.cs index 6f75df3e..94d20f2b 100644 --- a/TIAM.Database/DataLayers/Users/UserDal.cs +++ b/TIAM.Database/DataLayers/Users/UserDal.cs @@ -7,12 +7,12 @@ using AyCode.Database.DataLayers; using AyCode.Database.DataLayers.Users; using AyCode.Entities.Users; using Microsoft.EntityFrameworkCore; -using TIAM.Database.DbContexts; +using TIAM.Database.DbContexts.Users; using TIAM.Entities.Users; namespace TIAM.Database.DataLayers.Users { - public class UserDal : UserDalBase + public class UserDal : AcUserDalBase { public UserDal() : base() diff --git a/TIAM.Database/DbContexts/AdminDbContext.cs b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs similarity index 90% rename from TIAM.Database/DbContexts/AdminDbContext.cs rename to TIAM.Database/DbContexts/Admins/AdminDbContext.cs index 5629f9db..abe03b36 100644 --- a/TIAM.Database/DbContexts/AdminDbContext.cs +++ b/TIAM.Database/DbContexts/Admins/AdminDbContext.cs @@ -8,9 +8,9 @@ using Microsoft.EntityFrameworkCore; using TIAM.Entities.TransferDestinations; using TIAM.Entities.Users; -namespace TIAM.Database.DbContexts +namespace TIAM.Database.DbContexts.Admins { - public class AdminDbContext : TiamDbContextBase + public class AdminDbContext : DbContextBase { public DbSet Users { get; set; } public DbSet TransferDestinations { get; set; } @@ -34,6 +34,6 @@ namespace TIAM.Database.DbContexts base.OnConfiguring(optionsBuilder); } - + } } diff --git a/TIAM.Database/DbContexts/AuctionDbContext.cs b/TIAM.Database/DbContexts/Auctions/AuctionDbContext.cs similarity index 90% rename from TIAM.Database/DbContexts/AuctionDbContext.cs rename to TIAM.Database/DbContexts/Auctions/AuctionDbContext.cs index 231bd562..fdee8b23 100644 --- a/TIAM.Database/DbContexts/AuctionDbContext.cs +++ b/TIAM.Database/DbContexts/Auctions/AuctionDbContext.cs @@ -8,9 +8,9 @@ using Microsoft.EntityFrameworkCore; using TIAM.Entities.Auctions; using TIAM.Entities.TransferDestinations; -namespace TIAM.Database.DbContexts +namespace TIAM.Database.DbContexts.Auctions { - public class AuctionDbContext : TiamDbContextBase + public class AuctionDbContext : DbContextBase { public virtual DbSet AuctionBids { get; set; } @@ -38,6 +38,6 @@ namespace TIAM.Database.DbContexts base.OnConfiguring(optionsBuilder); } - + } } diff --git a/TIAM.Database/DbContexts/TiamDbContextBase.cs b/TIAM.Database/DbContexts/DbContextBase.cs similarity index 77% rename from TIAM.Database/DbContexts/TiamDbContextBase.cs rename to TIAM.Database/DbContexts/DbContextBase.cs index fdd8247e..c2894491 100644 --- a/TIAM.Database/DbContexts/TiamDbContextBase.cs +++ b/TIAM.Database/DbContexts/DbContextBase.cs @@ -10,18 +10,18 @@ using Microsoft.Extensions.Options; namespace TIAM.Database.DbContexts { - public class TiamDbContextBase : DbContextBase + public class DbContextBase : AcDbContextBase { - public TiamDbContextBase() //: this(string.Empty) + public DbContextBase() //: this(string.Empty) { } - public TiamDbContextBase(string name) : base(name) + public DbContextBase(string name) : base(name) { } - public TiamDbContextBase(DbContextOptions options, string name) : base(options, name) + public DbContextBase(DbContextOptions options, string name) : base(options, name) { } diff --git a/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs new file mode 100644 index 00000000..16b55fba --- /dev/null +++ b/TIAM.Database/DbContexts/ServiceProviders/IServiceProviderDbContext.cs @@ -0,0 +1,10 @@ +using TIAM.Database.DbSets.Permissions; +using TIAM.Database.DbSets.Products; +using TIAM.Database.DbSets.ServiceProvider; +using TIAM.Database.DbSets.Users; + +namespace TIAM.Database.DbContexts.ServiceProviders; + +public interface IServiceProviderDbContext : IServiceProviderDbSet, ITiamProductDbSet, IAssignedUserDbSet, IPermissionsDbSetContext +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbContexts/ServiceProviderDbContext.cs b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs similarity index 56% rename from TIAM.Database/DbContexts/ServiceProviderDbContext.cs rename to TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs index c7e27749..1d159141 100644 --- a/TIAM.Database/DbContexts/ServiceProviderDbContext.cs +++ b/TIAM.Database/DbContexts/ServiceProviders/ServiceProviderDbContext.cs @@ -7,26 +7,24 @@ using AyCode.Database.DbContexts; using AyCode.Database.DbContexts.Users; using AyCode.Entities.Users; using Microsoft.EntityFrameworkCore; +using TIAM.Database.DbContexts.Users; using TIAM.Entities.Permissions; using TIAM.Entities.Products; using TIAM.Entities.ServiceProviders; using TIAM.Entities.Users; -namespace TIAM.Database.DbContexts +namespace TIAM.Database.DbContexts.ServiceProviders { - public class ServiceProviderDbContext : TiamDbContextBase, IUserDbContextBase + public class ServiceProviderDbContext : DbContextBase, IServiceProviderDbContext { - public DbSet Users { get; set; } - public DbSet UserTokens { get; set; } + public DbSet ServiceProviders { get; set; } + public DbSet Products { get; set; } + public DbSet AssignedUsers { get; set; } - - public virtual DbSet ServiceProviders { get; set; } - public virtual DbSet Products { get; set; } - public virtual DbSet AssignedUsers { get; set; } - public virtual DbSet PermissionsTypes { get; set; } - public virtual DbSet PermissionGroups { get; set; } - public virtual DbSet PermissionGroupUserMappings { get; set; } - public virtual DbSet PermissionContextMappings { get; set; } + public DbSet PermissionsTypes { get; set; } + public DbSet PermissionGroups { get; set; } + public DbSet PermissionGroupUserMappings { get; set; } + public DbSet PermissionContextMappings { get; set; } public ServiceProviderDbContext() //: this(string.Empty) { diff --git a/TIAM.Database/DbContexts/TransferDestinationDbContext.cs b/TIAM.Database/DbContexts/Transfers/TransferDestinationDbContext.cs similarity index 84% rename from TIAM.Database/DbContexts/TransferDestinationDbContext.cs rename to TIAM.Database/DbContexts/Transfers/TransferDestinationDbContext.cs index 2d41381d..e206616c 100644 --- a/TIAM.Database/DbContexts/TransferDestinationDbContext.cs +++ b/TIAM.Database/DbContexts/Transfers/TransferDestinationDbContext.cs @@ -6,9 +6,9 @@ using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using TIAM.Entities.TransferDestinations; -namespace TIAM.Database.DbContexts +namespace TIAM.Database.DbContexts.Transfers { - public class TransferDestinationDbContext : TiamDbContextBase + public class TransferDestinationDbContext : DbContextBase { public DbSet TransferDestinations { get; set; } diff --git a/TIAM.Database/DbContexts/Users/IUserDbContext.cs b/TIAM.Database/DbContexts/Users/IUserDbContext.cs new file mode 100644 index 00000000..a2ffac38 --- /dev/null +++ b/TIAM.Database/DbContexts/Users/IUserDbContext.cs @@ -0,0 +1,10 @@ +using AyCode.Database.DbContexts.Users; +using AyCode.Entities.Users; +using TIAM.Database.DbSets.Users; +using TIAM.Entities.Users; + +namespace TIAM.Database.DbContexts.Users; + +public interface IUserDbContext : IAcUserDbContextBase +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbContexts/UserDbContext.cs b/TIAM.Database/DbContexts/Users/UserDbContext.cs similarity index 84% rename from TIAM.Database/DbContexts/UserDbContext.cs rename to TIAM.Database/DbContexts/Users/UserDbContext.cs index 31ee51b3..e010c49c 100644 --- a/TIAM.Database/DbContexts/UserDbContext.cs +++ b/TIAM.Database/DbContexts/Users/UserDbContext.cs @@ -11,12 +11,12 @@ using Microsoft.EntityFrameworkCore; using TIAM.Entities.Permissions; using TIAM.Entities.Users; -namespace TIAM.Database.DbContexts +namespace TIAM.Database.DbContexts.Users { - public class UserDbContext : TiamDbContextBase, IUserDbContextBase + public class UserDbContext : DbContextBase, IUserDbContext { public virtual DbSet Users { get; set; } - public DbSet UserTokens { get; set; } + public DbSet UserTokens { get; set; } public UserDbContext() //: this(string.Empty) { diff --git a/TIAM.Database/DbSets/Permissions/IPermissionContextMappingDbSet.cs b/TIAM.Database/DbSets/Permissions/IPermissionContextMappingDbSet.cs new file mode 100644 index 00000000..78be0713 --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/IPermissionContextMappingDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Permissions; + +namespace TIAM.Database.DbSets.Permissions; + +public interface IPermissionContextMappingDbSet +{ + public DbSet PermissionContextMappings { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Permissions/IPermissionGroupDbSet.cs b/TIAM.Database/DbSets/Permissions/IPermissionGroupDbSet.cs new file mode 100644 index 00000000..4c1bfc73 --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/IPermissionGroupDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Permissions; + +namespace TIAM.Database.DbSets.Permissions; + +public interface IPermissionGroupDbSet +{ + public DbSet PermissionGroups { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Permissions/IPermissionGroupUserMappingDbSet.cs b/TIAM.Database/DbSets/Permissions/IPermissionGroupUserMappingDbSet.cs new file mode 100644 index 00000000..ed4624aa --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/IPermissionGroupUserMappingDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Permissions; + +namespace TIAM.Database.DbSets.Permissions; + +public interface IPermissionGroupUserMappingDbSet +{ + public DbSet PermissionGroupUserMappings { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Permissions/IPermissionsDbSetContext.cs b/TIAM.Database/DbSets/Permissions/IPermissionsDbSetContext.cs new file mode 100644 index 00000000..9e57c291 --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/IPermissionsDbSetContext.cs @@ -0,0 +1,5 @@ +namespace TIAM.Database.DbSets.Permissions; + +public interface IPermissionsDbSetContext : IPermissionGroupDbSet, IPermissionGroupUserMappingDbSet, IPermissionContextMappingDbSet, IPermissionsTypeDbSet +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Permissions/IPermissionsTypeDbSet.cs b/TIAM.Database/DbSets/Permissions/IPermissionsTypeDbSet.cs new file mode 100644 index 00000000..1ff45caf --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/IPermissionsTypeDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Permissions; + +namespace TIAM.Database.DbSets.Permissions; + +public interface IPermissionsTypeDbSet +{ + public DbSet PermissionsTypes { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Permissions/PermissionsDbSetExtensions.cs b/TIAM.Database/DbSets/Permissions/PermissionsDbSetExtensions.cs new file mode 100644 index 00000000..a5bafd13 --- /dev/null +++ b/TIAM.Database/DbSets/Permissions/PermissionsDbSetExtensions.cs @@ -0,0 +1,45 @@ +using TIAM.Database.DbContexts.ServiceProviders; +using TIAM.Database.DbSets.Users; +using TIAM.Entities.Permissions; + +namespace TIAM.Database.DbSets.Permissions; + +public static class PermissionsDbSetExtensions +{ + //public static IQueryable GetPermissionGroupByContextMapping(this IPermissionsDbSetContext ctx, PermissionContextMapping permissionContextMapping) + //{ + // if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.Group) + // return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId); + // else if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.User) + // return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId); + //} + + //public static IQueryable GetPermissionContextMappingByAssignedUserId(this IPermissionsDbSetContext ctx, Guid assignedUserId) + //{ + // var subjectIds = ctx.GetAssignedUsersByContextId(assignedUserId).Select(x => x.Id). + // Concat(ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId).Select(x => x.)).ToHashSet(); + + // return ctx.GetPermissionContextMappingsBySubjectIds(subjectIds); + //} + + public static IQueryable GetPermissionContextMappingsBySubjectIds(this IPermissionsDbSetContext ctx, IEnumerable subjectIds) + => ctx.PermissionContextMappings.Where(x => subjectIds.Contains(x.SubjectId)); + + public static PermissionContextMapping? GetPermissionContextMappingBySubjectId(this IPermissionsDbSetContext ctx, Guid subjectId) + => ctx.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == subjectId); + + public static void RemoveContextMappingBySubjectId(this IPermissionsDbSetContext ctx, Guid subjectId) + { + var contextMapping = ctx.GetPermissionContextMappingBySubjectId(subjectId); + + if (contextMapping == null) return; + + ctx.PermissionContextMappings.Remove(contextMapping); + } + + public static IQueryable GetAllPermissionGroupsByAssignedUserId(this IPermissionsDbSetContext ctx, Guid assignedUserId) + => ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId); + + public static void RemoveAssingedUserFromPermissionGroups(this IPermissionsDbSetContext ctx, Guid assignedUserId) + => ctx.PermissionGroupUserMappings.RemoveRange(ctx.GetAllPermissionGroupsByAssignedUserId(assignedUserId)); +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Products/ITiamProductDbSet.cs b/TIAM.Database/DbSets/Products/ITiamProductDbSet.cs new file mode 100644 index 00000000..f419e959 --- /dev/null +++ b/TIAM.Database/DbSets/Products/ITiamProductDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Products; + +namespace TIAM.Database.DbSets.Products; + +public interface ITiamProductDbSet +{ + public DbSet Products { get; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/ServiceProvider/IServiceProviderDbSet.cs b/TIAM.Database/DbSets/ServiceProvider/IServiceProviderDbSet.cs new file mode 100644 index 00000000..596a5139 --- /dev/null +++ b/TIAM.Database/DbSets/ServiceProvider/IServiceProviderDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.ServiceProviders; + +namespace TIAM.Database.DbSets.ServiceProvider; + +public interface IServiceProviderDbSet +{ + public DbSet ServiceProviders { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Users/AssignedUserDbSetExtensions.cs b/TIAM.Database/DbSets/Users/AssignedUserDbSetExtensions.cs new file mode 100644 index 00000000..c8d13e02 --- /dev/null +++ b/TIAM.Database/DbSets/Users/AssignedUserDbSetExtensions.cs @@ -0,0 +1,22 @@ +using TIAM.Database.DbContexts.ServiceProviders; +using TIAM.Entities.Users; + +namespace TIAM.Database.DbSets.Users; + +public static class AssignedUserDbSetExtensions +{ + public static IQueryable GetAssignedUsersByPermissionGroupId(this ServiceProviderDbContext ctx, Guid permissionGroupId) + { + return ctx.AssignedUsers + .Where(user => ctx.PermissionGroupUserMappings + .Where(x => x.PermissionGroupId == permissionGroupId) + .Select(x => x.AssignedUserId) + .Contains(user.Id)); + } + + public static AssignedUser? GetAssignedUserById(this IAssignedUserDbSet ctx, Guid assignedUserId) + => ctx.AssignedUsers.FirstOrDefault(x => x.Id == assignedUserId); + + public static IQueryable GetAssignedUsersByContextId(this IAssignedUserDbSet ctx, Guid contextId) + => ctx.AssignedUsers.Where(x => x.ContextId == contextId); +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Users/IAssignedUserDbSet.cs b/TIAM.Database/DbSets/Users/IAssignedUserDbSet.cs new file mode 100644 index 00000000..fc85c3e4 --- /dev/null +++ b/TIAM.Database/DbSets/Users/IAssignedUserDbSet.cs @@ -0,0 +1,9 @@ +using Microsoft.EntityFrameworkCore; +using TIAM.Entities.Users; + +namespace TIAM.Database.DbSets.Users; + +public interface IAssignedUserDbSet +{ + public DbSet AssignedUsers { get; set; } +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Users/IUserDbSet.cs b/TIAM.Database/DbSets/Users/IUserDbSet.cs new file mode 100644 index 00000000..5be2259e --- /dev/null +++ b/TIAM.Database/DbSets/Users/IUserDbSet.cs @@ -0,0 +1,8 @@ +using AyCode.Database.DbSets.Users; +using TIAM.Entities.Users; + +namespace TIAM.Database.DbSets.Users; + +public interface IUserDbSet : IAcUserDbSet +{ +} \ No newline at end of file diff --git a/TIAM.Database/DbSets/Users/IUserTokenDbSet.cs b/TIAM.Database/DbSets/Users/IUserTokenDbSet.cs new file mode 100644 index 00000000..cd09c880 --- /dev/null +++ b/TIAM.Database/DbSets/Users/IUserTokenDbSet.cs @@ -0,0 +1,10 @@ +using AyCode.Database.DbSets.Users; +using AyCode.Entities.Users; +using TIAM.Entities.Users; + +namespace TIAM.Database.DbSets.Users; + +public interface IUserTokenDbSet : IAcUserTokenDbSet +{ + +} \ No newline at end of file diff --git a/TIAM.Database/TIAM.Database.csproj b/TIAM.Database/TIAM.Database.csproj index ebe8d421..29843a54 100644 --- a/TIAM.Database/TIAM.Database.csproj +++ b/TIAM.Database/TIAM.Database.csproj @@ -14,6 +14,11 @@ + + + + + diff --git a/TIAM.Entities/TransferDestinations/TransferDestination.cs b/TIAM.Entities/TransferDestinations/TransferDestination.cs index bae06ebe..739531a1 100644 --- a/TIAM.Entities/TransferDestinations/TransferDestination.cs +++ b/TIAM.Entities/TransferDestinations/TransferDestination.cs @@ -8,14 +8,12 @@ namespace TIAM.Entities.TransferDestinations [Table("TransferDestination")] public class TransferDestination : LocationBase, ITimeStampInfo { - public Guid Id { get; set; } public string? Name { get; set; } public string? Description { get; set; } - public double Latitude { get; set; } - public double Longitude { get; set; } - public string? Address { get; set; } + public DateTime Created { get; set; } public DateTime Modified { get; set; } + public TransferDestination() { } public TransferDestination(double latitude, double longitude, string address) : this(Guid.NewGuid(), latitude, longitude, address) { } public TransferDestination(Guid id, double latitude, double longitude, string address) : base(Guid.NewGuid(), latitude, longitude, address) { } diff --git a/TIAM.Entities/Users/UserToken.cs b/TIAM.Entities/Users/UserToken.cs new file mode 100644 index 00000000..5afd1022 --- /dev/null +++ b/TIAM.Entities/Users/UserToken.cs @@ -0,0 +1,10 @@ +using AyCode.Entities.Users; +using AyCode.Interfaces.Users; +using System.ComponentModel.DataAnnotations.Schema; + +namespace TIAM.Entities.Users; + +[Table("UserToken")] +public class UserToken : UserTokenBase +{ +} \ No newline at end of file diff --git a/TIAMWebApp/Server/Controllers/AuctionAPIController.cs b/TIAMWebApp/Server/Controllers/AuctionAPIController.cs index a1d75492..7f3aabfc 100644 --- a/TIAMWebApp/Server/Controllers/AuctionAPIController.cs +++ b/TIAMWebApp/Server/Controllers/AuctionAPIController.cs @@ -1,26 +1,8 @@ -using DevExpress.Office.Crypto; -using DevExpress.Xpo.DB; -using DevExpress.XtraPrinting; using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; -using Newtonsoft.Json.Linq; -using Microsoft.IdentityModel.Tokens; -using System.IdentityModel.Tokens.Jwt; -using System.Security.Claims; -using System.Security.Cryptography; -using System.Text.Json; -using TIAMWebApp.Shared.Application.Models; -using TIAMWebApp.Shared.Application.Models.PageModels; -using TIAMWebApp.Server.Models; -using System.Text; -using Microsoft.AspNetCore.Hosting; -using Microsoft.EntityFrameworkCore; -using TIAM.Database.DataLayers.Users; +using AyCode.Core.Logger; using AyCode.Utils.Helpers; -using TIAM.Entities.Users; -using TIAMWebApp.Server.ModelsTIAMWebApp.Shared.Application.Models; -using TIAMWebApp.Shared.Application.Utility; +using TIAM.Database.DataLayers.Auctions; using TIAM.Entities.Auctions; namespace TIAMWebApp.Server.Controllers @@ -51,7 +33,7 @@ namespace TIAMWebApp.Server.Controllers [Route("CreateBid")] public async Task CreateUser([FromBody] AuctionBid SerializedAuctionBidModel) { - Console.WriteLine("CreateBid called"); + Logger.Info("CreateBid called"); //if (string.IsNullOrEmpty(SerializedAuctionBidModel.GetRawText())) //{ // return BadRequest("SerializedAuctionBidModel is required"); @@ -81,7 +63,7 @@ namespace TIAMWebApp.Server.Controllers } else { - Console.WriteLine($"Bid to be created: {userId}, {targetProductId}, {email}, {phoneNumber}, {bidAmount}, {isValid}"); + Logger.Info($"Bid to be created: {userId}, {targetProductId}, {email}, {phoneNumber}, {bidAmount}, {isValid}"); finalizedBidModel = new AuctionBid(userId, targetProductId, email, phoneNumber, bidAmount); await _auctionDal.CreateBidAsync(finalizedBidModel); return Ok(finalizedBidModel.Id); @@ -118,19 +100,19 @@ namespace TIAMWebApp.Server.Controllers [Route("ValidateBid")] public async Task ValidateBid([FromBody] AuctionBid SerializedAuctionBidModel) { - Console.WriteLine("ValidateBid called"); + Logger.Info("ValidateBid called"); //var validateBid = JObject.Parse(SerializedAuctionBidModel.GetRawText()).ToObject(); //check if bid exists AuctionBid? dbBid = null; - //Console.WriteLine(validateBid?.Id); - Console.WriteLine(SerializedAuctionBidModel?.Id); + //Logger.Info(validateBid?.Id); + Logger.Info(SerializedAuctionBidModel?.Id.ToString()); //if (validateBid != null) if (SerializedAuctionBidModel != null) { //dbBid = await _auctionDal.GetBidById(validateBid.Id); - dbBid = await _auctionDal.GetBidById(SerializedAuctionBidModel.Id); + dbBid = _auctionDal.GetBidById(SerializedAuctionBidModel.Id); } //check if password is valid @@ -147,7 +129,7 @@ namespace TIAMWebApp.Server.Controllers //if (dbBid.Email == validateBid?.Email) if (dbBid.Email == SerializedAuctionBidModel?.Email) { - Console.WriteLine("Bid is valid"); + Logger.Info("Bid is valid"); dbBid.IsValid = true; //Update userModel with refreshToken!! await _auctionDal.UpdateBidAsync(dbBid); diff --git a/TIAMWebApp/Server/Program.cs b/TIAMWebApp/Server/Program.cs index d353e739..657b5244 100644 --- a/TIAMWebApp/Server/Program.cs +++ b/TIAMWebApp/Server/Program.cs @@ -14,6 +14,7 @@ using TIAMWebApp.Shared.Application.Models; using TIAM.Database.DataLayers.Users; using TIAM.Database.DataLayers.TransferDestinations; using AyCode.Interfaces.Messages; +using TIAM.Database.DataLayers.Auctions; using TIAMWebApp.Server.Services; using TIAM.Database.DataLayers.ServiceProviders;