diff --git a/MagMan.Core/DTO/DemoObj.cs b/MagMan.Core/DTO/DemoObj.cs new file mode 100644 index 0000000..fd82469 --- /dev/null +++ b/MagMan.Core/DTO/DemoObj.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MagMan.Core.DTO +{ + public class DemoObj + { + } +} diff --git a/MagMan.Core/MagMan.Core.csproj b/MagMan.Core/MagMan.Core.csproj index 27ac386..df2e60e 100644 --- a/MagMan.Core/MagMan.Core.csproj +++ b/MagMan.Core/MagMan.Core.csproj @@ -6,4 +6,10 @@ enable + + + + + + diff --git a/MagMan.Data/MailKitMailData.cs b/MagMan.Core/MailKitMailData.cs similarity index 97% rename from MagMan.Data/MailKitMailData.cs rename to MagMan.Core/MailKitMailData.cs index 34d4d0c..a1212b0 100644 --- a/MagMan.Data/MailKitMailData.cs +++ b/MagMan.Core/MailKitMailData.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Core { public class MailKitMailData { diff --git a/MagMan.Data/MailKitMailSettings.cs b/MagMan.Core/MailKitMailSettings.cs similarity index 95% rename from MagMan.Data/MailKitMailSettings.cs rename to MagMan.Core/MailKitMailSettings.cs index 592a509..218ca13 100644 --- a/MagMan.Data/MailKitMailSettings.cs +++ b/MagMan.Core/MailKitMailSettings.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Core { public class MailKitMailSettings { diff --git a/MagMan.Data/Services/IMailService.cs b/MagMan.Core/Services/IMailService.cs similarity index 88% rename from MagMan.Data/Services/IMailService.cs rename to MagMan.Core/Services/IMailService.cs index 42b5a88..0464f91 100644 --- a/MagMan.Data/Services/IMailService.cs +++ b/MagMan.Core/Services/IMailService.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Core.Services { public interface IMailService { diff --git a/MagMan.Data/Services/MailService.cs b/MagMan.Core/Services/MailService.cs similarity index 97% rename from MagMan.Data/Services/MailService.cs rename to MagMan.Core/Services/MailService.cs index acb28e1..f59d91a 100644 --- a/MagMan.Data/Services/MailService.cs +++ b/MagMan.Core/Services/MailService.cs @@ -3,8 +3,13 @@ using MailKit.Security; using Microsoft.Extensions.Options; using MimeKit; using NLog; +using MagMan.Core; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Core.Services { /// /// Implementazione MailKit come descritto qui https://blog.christian-schou.dk/send-emails-with-asp-net-core-with-mailkit/ diff --git a/MagMan.User/AdminContext.cs b/MagMan.Data.Admin/AdminContext.cs similarity index 93% rename from MagMan.User/AdminContext.cs rename to MagMan.Data.Admin/AdminContext.cs index b510ffe..ceee219 100644 --- a/MagMan.User/AdminContext.cs +++ b/MagMan.Data.Admin/AdminContext.cs @@ -1,8 +1,8 @@ -using MagMan.User.DbModels; +using MagMan.Data.Admin.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; -namespace MagMan.User +namespace MagMan.Data.Admin { // // This is here so CodeMaid doesn't reorganize this document @@ -37,7 +37,7 @@ namespace MagMan.User /// /// User management /// - public DbSet UserList { get; set; } + public virtual DbSet UserList { get; set; } #endregion Public Properties diff --git a/MagMan.User/DbAdmin.cs b/MagMan.Data.Admin/DbAdmin.cs similarity index 75% rename from MagMan.User/DbAdmin.cs rename to MagMan.Data.Admin/DbAdmin.cs index b6790b1..a74a56a 100644 --- a/MagMan.User/DbAdmin.cs +++ b/MagMan.Data.Admin/DbAdmin.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User +namespace MagMan.Data.Admin { public class DbAdmin : IDisposable { @@ -68,31 +68,6 @@ namespace MagMan.User return answ; } -#if false - public static async Task migrateDbMain() - { - bool answ = false; - using (MagManContext dbCtx = new MagManContext()) - { - await dbCtx.Database.MigrateAsync(); - answ = true; - } - return answ; - } - - public static bool resetPlantLogTable() - { - bool answ = false; - using (MagManContext dbCtx = new MagManContext()) - { - string sqlCommand = "TRUNCATE TABLE PlantLog;"; - dbCtx.Database.ExecuteSqlRaw(sqlCommand); - answ = true; - } - return answ; - } -#endif - public void Dispose() { } diff --git a/MagMan.User/DbConfig.cs b/MagMan.Data.Admin/DbConfig.cs similarity index 82% rename from MagMan.User/DbConfig.cs rename to MagMan.Data.Admin/DbConfig.cs index 21c958c..2dd32d3 100644 --- a/MagMan.User/DbConfig.cs +++ b/MagMan.Data.Admin/DbConfig.cs @@ -5,16 +5,16 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User +namespace MagMan.Data.Admin { public static class DbConfig { #region Public Fields - public static string DATABASE_NAME = "MagMan"; + public static string DATABASE_NAME = "MagMan_Ident"; public static int DATABASE_PROCESS_TIMEOUT = 5; - public static string DATABASE_PWD = "viadante16"; + public static string DATABASE_PWD = "viad@nte16!"; // Database config public static string DATABASE_SERV = "127.0.0.1"; @@ -53,22 +53,15 @@ namespace MagMan.User return migrateTask.Result; } -#if false - public static bool ExecMigrationMain() - { - // esecuzione migrazione - var migrateTask = Task.Run(async () => await DbAdmin.migrateDbMain()); - migrateTask.Wait(); - return migrateTask.Result; - } -#endif - public static void InitDb(string server, string nKey, string sKey) { DATABASE_SERV = server; - DATABASE_NAME = $"MagMan_{nKey}"; + // tutto fisso x gestione utenti +#if false + DATABASE_NAME = $"MagMan_Ident"; DATABASE_USER = $"user_{nKey}"; - DATABASE_PWD = $"pwd_{sKey}"; + DATABASE_PWD = $"pwd_{sKey}"; +#endif CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database={DATABASE_NAME};uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None"; // stringa admin con utente root egalware... ADMIN_CONNECTION_STRING = $"server={DATABASE_SERV};port=3306;database=mysql;uid={DATABASE_USER};pwd={DATABASE_PWD};sslmode=None"; diff --git a/MagMan.Data/DbModels/TableCount.cs b/MagMan.Data.Admin/DbModels/TableCount.cs similarity index 74% rename from MagMan.Data/DbModels/TableCount.cs rename to MagMan.Data.Admin/DbModels/TableCount.cs index 59484d8..b41a852 100644 --- a/MagMan.Data/DbModels/TableCount.cs +++ b/MagMan.Data.Admin/DbModels/TableCount.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Admin.DbModels { /// /// Classe fake x il conteggio tabelle e check preliminari @@ -15,8 +15,8 @@ namespace MagMan.Data.DbModels { #region Public Properties - public int Count { get; set; } - public string TableName { get; set; } + public int Count { get; set; } = 0; + public string TableName { get; set; } = ""; #endregion Public Properties } diff --git a/MagMan.Data/DbModels/UserPrivModel.cs b/MagMan.Data.Admin/DbModels/UserPrivModel.cs similarity index 93% rename from MagMan.Data/DbModels/UserPrivModel.cs rename to MagMan.Data.Admin/DbModels/UserPrivModel.cs index 59a3c06..fdcf490 100644 --- a/MagMan.Data/DbModels/UserPrivModel.cs +++ b/MagMan.Data.Admin/DbModels/UserPrivModel.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Admin.DbModels { /// /// Tabella dei USER di MySql diff --git a/MagMan.User/MagMan.User.csproj b/MagMan.Data.Admin/MagMan.Data.Admin.csproj similarity index 78% rename from MagMan.User/MagMan.User.csproj rename to MagMan.Data.Admin/MagMan.Data.Admin.csproj index 75c337f..f9c5c8c 100644 --- a/MagMan.User/MagMan.User.csproj +++ b/MagMan.Data.Admin/MagMan.Data.Admin.csproj @@ -1,4 +1,4 @@ - + net6.0 @@ -7,12 +7,17 @@ - - + + + + + + + @@ -25,12 +30,10 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + - - - - + diff --git a/MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs b/MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs similarity index 98% rename from MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs rename to MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs index 5680f40..a493e56 100644 --- a/MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs +++ b/MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs @@ -1,6 +1,6 @@ // using System; -using MagMan.User; +using MagMan.Data.Admin; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.User.Migrations.UserIdentityDb +namespace MagMan.Data.Admin.Migrations.UserIdentityDb { [DbContext(typeof(UserIdentityDbContext))] [Migration("20231222165912_CreateIdentitySchema")] @@ -21,7 +21,7 @@ namespace MagMan.User.Migrations.UserIdentityDb .HasAnnotation("ProductVersion", "6.0.25") .HasAnnotation("Relational:MaxIdentifierLength", 64); - modelBuilder.Entity("MagMan.User.DbModels.TableCount", b => + modelBuilder.Entity("MagMan.Data.Admin.DbModels.TableCount", b => { b.Property("Count") .HasColumnType("int"); diff --git a/MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs b/MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs similarity index 99% rename from MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs rename to MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs index 22607f3..6855671 100644 --- a/MagMan.User/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs +++ b/MagMan.Data.Admin/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs @@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MagMan.User.Migrations.UserIdentityDb +namespace MagMan.Data.Admin.Migrations.UserIdentityDb { public partial class CreateIdentitySchema : Migration { diff --git a/MagMan.User/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs b/MagMan.Data.Admin/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs similarity index 98% rename from MagMan.User/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs rename to MagMan.Data.Admin/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs index f753adb..fd95ddc 100644 --- a/MagMan.User/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs +++ b/MagMan.Data.Admin/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs @@ -1,13 +1,13 @@ // using System; -using MagMan.User; +using MagMan.Data.Admin; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.User.Migrations.UserIdentityDb +namespace MagMan.Data.Admin.Migrations.UserIdentityDb { [DbContext(typeof(UserIdentityDbContext))] partial class UserIdentityDbContextModelSnapshot : ModelSnapshot @@ -19,7 +19,7 @@ namespace MagMan.User.Migrations.UserIdentityDb .HasAnnotation("ProductVersion", "6.0.25") .HasAnnotation("Relational:MaxIdentifierLength", 64); - modelBuilder.Entity("MagMan.User.DbModels.TableCount", b => + modelBuilder.Entity("MagMan.Data.Admin.DbModels.TableCount", b => { b.Property("Count") .HasColumnType("int"); diff --git a/MagMan.Data/Services/BaseServ.cs b/MagMan.Data.Admin/Services/BaseServ.cs similarity index 98% rename from MagMan.Data/Services/BaseServ.cs rename to MagMan.Data.Admin/Services/BaseServ.cs index b69bcc0..c391d77 100644 --- a/MagMan.Data/Services/BaseServ.cs +++ b/MagMan.Data.Admin/Services/BaseServ.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Data.Admin.Services { /// /// Classe di partenza x costruzione servizi di accesso dati + cache diff --git a/MagMan.User/UserAdminConfiguration.cs b/MagMan.Data.Admin/UserAdminConfiguration.cs similarity index 96% rename from MagMan.User/UserAdminConfiguration.cs rename to MagMan.Data.Admin/UserAdminConfiguration.cs index abcc9f0..521af69 100644 --- a/MagMan.User/UserAdminConfiguration.cs +++ b/MagMan.Data.Admin/UserAdminConfiguration.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User +namespace MagMan.Data.Admin { public class UserAdminConfiguration : IEntityTypeConfiguration { diff --git a/MagMan.User/UserData.cs b/MagMan.Data.Admin/UserData.cs similarity index 95% rename from MagMan.User/UserData.cs rename to MagMan.Data.Admin/UserData.cs index 269f347..cfb8475 100644 --- a/MagMan.User/UserData.cs +++ b/MagMan.Data.Admin/UserData.cs @@ -1,6 +1,6 @@ using Microsoft.AspNetCore.Identity; -namespace MagMan.User +namespace MagMan.Data.Admin { /// /// Classe generalizzaizone identity (user + roles + claims) x gestione semplificata in editing diff --git a/MagMan.User/UserIdentityDbContext.cs b/MagMan.Data.Admin/UserIdentityDbContext.cs similarity index 87% rename from MagMan.User/UserIdentityDbContext.cs rename to MagMan.Data.Admin/UserIdentityDbContext.cs index 60fa9f1..28fd977 100644 --- a/MagMan.User/UserIdentityDbContext.cs +++ b/MagMan.Data.Admin/UserIdentityDbContext.cs @@ -1,4 +1,4 @@ -using MagMan.User.DbModels; +using MagMan.Data.Admin.DbModels; using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using System; @@ -7,7 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User +namespace MagMan.Data.Admin { public class UserIdentityDbContext : IdentityDbContext { @@ -24,13 +24,8 @@ namespace MagMan.User { } } - public UserIdentityDbContext(DbContextOptions options) - : base(options) + public UserIdentityDbContext(DbContextOptions options) : base(options) { -#if false - // se non ci fosse... crea! - Database.EnsureCreated(); -#endif try { // se non ci fosse... crea o migra! @@ -44,7 +39,7 @@ namespace MagMan.User #region Public Properties - public DbSet DbSetCounts { get; set; } + public virtual DbSet DbSetCounts { get; set; } #endregion Public Properties diff --git a/MagMan.Data/UserRoleConfiguration.cs b/MagMan.Data.Admin/UserRoleConfiguration.cs similarity index 97% rename from MagMan.Data/UserRoleConfiguration.cs rename to MagMan.Data.Admin/UserRoleConfiguration.cs index b3c237b..c3a9f75 100644 --- a/MagMan.Data/UserRoleConfiguration.cs +++ b/MagMan.Data.Admin/UserRoleConfiguration.cs @@ -7,7 +7,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Data.Admin { public class UserRoleConfiguration : IEntityTypeConfiguration { diff --git a/MagMan.Data/DbAdmin.cs b/MagMan.Data.Tenant/DbAdmin.cs similarity index 98% rename from MagMan.Data/DbAdmin.cs rename to MagMan.Data.Tenant/DbAdmin.cs index b414725..d3bc0b0 100644 --- a/MagMan.Data/DbAdmin.cs +++ b/MagMan.Data.Tenant/DbAdmin.cs @@ -4,7 +4,7 @@ using System; using System.Linq; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Data.Tenant { public class DbAdmin : IDisposable { diff --git a/MagMan.Data/DbConfig.cs b/MagMan.Data.Tenant/DbConfig.cs similarity index 98% rename from MagMan.Data/DbConfig.cs rename to MagMan.Data.Tenant/DbConfig.cs index 573f3ff..6b2ea66 100644 --- a/MagMan.Data/DbConfig.cs +++ b/MagMan.Data.Tenant/DbConfig.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Data.Tenant { public static class DbConfig { diff --git a/MagMan.Data/DbModels/ConfigModel.cs b/MagMan.Data.Tenant/DbModels/ConfigModel.cs similarity index 95% rename from MagMan.Data/DbModels/ConfigModel.cs rename to MagMan.Data.Tenant/DbModels/ConfigModel.cs index ffc27f9..4e20fca 100644 --- a/MagMan.Data/DbModels/ConfigModel.cs +++ b/MagMan.Data.Tenant/DbModels/ConfigModel.cs @@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations; // // This is here so CodeMaid doesn't reorganize this document // -namespace MagMan.Data.DbModels +namespace MagMan.Data.Tenant.DbModels { /// /// Tabella Config diff --git a/MagMan.Data/DbModels/ItemModel.cs b/MagMan.Data.Tenant/DbModels/ItemModel.cs similarity index 98% rename from MagMan.Data/DbModels/ItemModel.cs rename to MagMan.Data.Tenant/DbModels/ItemModel.cs index 6c309c9..e4a8eac 100644 --- a/MagMan.Data/DbModels/ItemModel.cs +++ b/MagMan.Data.Tenant/DbModels/ItemModel.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Tenant.DbModels { // // This is here so CodeMaid doesn't reorganize this document diff --git a/MagMan.Data/DbModels/MaterialModel.cs b/MagMan.Data.Tenant/DbModels/MaterialModel.cs similarity index 96% rename from MagMan.Data/DbModels/MaterialModel.cs rename to MagMan.Data.Tenant/DbModels/MaterialModel.cs index 5a4196d..906da7b 100644 --- a/MagMan.Data/DbModels/MaterialModel.cs +++ b/MagMan.Data.Tenant/DbModels/MaterialModel.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Tenant.DbModels { // // This is here so CodeMaid doesn't reorganize this document diff --git a/MagMan.Data/DbModels/MovMagModel.cs b/MagMan.Data.Tenant/DbModels/MovMagModel.cs similarity index 97% rename from MagMan.Data/DbModels/MovMagModel.cs rename to MagMan.Data.Tenant/DbModels/MovMagModel.cs index 432f8bf..32aac01 100644 --- a/MagMan.Data/DbModels/MovMagModel.cs +++ b/MagMan.Data.Tenant/DbModels/MovMagModel.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Tenant.DbModels { // // This is here so CodeMaid doesn't reorganize this document diff --git a/MagMan.Data/DbModels/PrintJobQueueModel.cs b/MagMan.Data.Tenant/DbModels/PrintJobQueueModel.cs similarity index 95% rename from MagMan.Data/DbModels/PrintJobQueueModel.cs rename to MagMan.Data.Tenant/DbModels/PrintJobQueueModel.cs index 0a9fa0a..bb902da 100644 --- a/MagMan.Data/DbModels/PrintJobQueueModel.cs +++ b/MagMan.Data.Tenant/DbModels/PrintJobQueueModel.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.DbModels +namespace MagMan.Data.Tenant.DbModels { // // This is here so CodeMaid doesn't reorganize this document diff --git a/MagMan.User/DbModels/TableCount.cs b/MagMan.Data.Tenant/DbModels/TableCount.cs similarity index 92% rename from MagMan.User/DbModels/TableCount.cs rename to MagMan.Data.Tenant/DbModels/TableCount.cs index b1c30f5..de964b6 100644 --- a/MagMan.User/DbModels/TableCount.cs +++ b/MagMan.Data.Tenant/DbModels/TableCount.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User.DbModels +namespace MagMan.Data.Tenant.DbModels { /// /// Classe fake x il conteggio tabelle e check preliminari diff --git a/MagMan.User/DbModels/UserPrivModel.cs b/MagMan.Data.Tenant/DbModels/UserPrivModel.cs similarity index 93% rename from MagMan.User/DbModels/UserPrivModel.cs rename to MagMan.Data.Tenant/DbModels/UserPrivModel.cs index e0ad310..a2d6db8 100644 --- a/MagMan.User/DbModels/UserPrivModel.cs +++ b/MagMan.Data.Tenant/DbModels/UserPrivModel.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.User.DbModels +namespace MagMan.Data.Tenant.DbModels { /// /// Tabella dei USER di MySql diff --git a/MagMan.Data/MagMan.Data.csproj b/MagMan.Data.Tenant/MagMan.Data.Tenant.csproj similarity index 75% rename from MagMan.Data/MagMan.Data.csproj rename to MagMan.Data.Tenant/MagMan.Data.Tenant.csproj index 01e5b7e..178602d 100644 --- a/MagMan.Data/MagMan.Data.csproj +++ b/MagMan.Data.Tenant/MagMan.Data.Tenant.csproj @@ -12,28 +12,10 @@ - - - - - - - - - - - - - - - - - - all @@ -54,4 +36,9 @@ + + + + + diff --git a/MagMan.Data/MagManContext.cs b/MagMan.Data.Tenant/MagManContext.cs similarity index 98% rename from MagMan.Data/MagManContext.cs rename to MagMan.Data.Tenant/MagManContext.cs index 8d76caf..ce5d95d 100644 --- a/MagMan.Data/MagManContext.cs +++ b/MagMan.Data.Tenant/MagManContext.cs @@ -1,4 +1,4 @@ -using MagMan.Data.DbModels; +using MagMan.Data.Tenant.DbModels; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using NLog; @@ -9,7 +9,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Data.Tenant { public partial class MagManContext : DbContext { diff --git a/MagMan.Data/Migrations/20231222163946_InitDb.Designer.cs b/MagMan.Data.Tenant/Migrations/20231222163946_InitDb.Designer.cs similarity index 97% rename from MagMan.Data/Migrations/20231222163946_InitDb.Designer.cs rename to MagMan.Data.Tenant/Migrations/20231222163946_InitDb.Designer.cs index fdfcda4..9171131 100644 --- a/MagMan.Data/Migrations/20231222163946_InitDb.Designer.cs +++ b/MagMan.Data.Tenant/Migrations/20231222163946_InitDb.Designer.cs @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { [DbContext(typeof(MagManContext))] [Migration("20231222163946_InitDb")] diff --git a/MagMan.Data/Migrations/20231222163946_InitDb.cs b/MagMan.Data.Tenant/Migrations/20231222163946_InitDb.cs similarity index 97% rename from MagMan.Data/Migrations/20231222163946_InitDb.cs rename to MagMan.Data.Tenant/Migrations/20231222163946_InitDb.cs index a67ee8b..0a7e484 100644 --- a/MagMan.Data/Migrations/20231222163946_InitDb.cs +++ b/MagMan.Data.Tenant/Migrations/20231222163946_InitDb.cs @@ -2,7 +2,7 @@ #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { public partial class InitDb : Migration { diff --git a/MagMan.Data/Migrations/20231222180319_AddMagBaseObj.Designer.cs b/MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.Designer.cs similarity index 99% rename from MagMan.Data/Migrations/20231222180319_AddMagBaseObj.Designer.cs rename to MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.Designer.cs index 9c79e5b..f1aa296 100644 --- a/MagMan.Data/Migrations/20231222180319_AddMagBaseObj.Designer.cs +++ b/MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.Designer.cs @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { [DbContext(typeof(MagManContext))] [Migration("20231222180319_AddMagBaseObj")] diff --git a/MagMan.Data/Migrations/20231222180319_AddMagBaseObj.cs b/MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.cs similarity index 98% rename from MagMan.Data/Migrations/20231222180319_AddMagBaseObj.cs rename to MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.cs index 18a7385..b141d32 100644 --- a/MagMan.Data/Migrations/20231222180319_AddMagBaseObj.cs +++ b/MagMan.Data.Tenant/Migrations/20231222180319_AddMagBaseObj.cs @@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { public partial class AddMagBaseObj : Migration { diff --git a/MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.Designer.cs b/MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.Designer.cs similarity index 99% rename from MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.Designer.cs rename to MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.Designer.cs index 3f644e4..bc5a906 100644 --- a/MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.Designer.cs +++ b/MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.Designer.cs @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { [DbContext(typeof(MagManContext))] [Migration("20231222180523_AddMagBaseObj01")] diff --git a/MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.cs b/MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.cs similarity index 98% rename from MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.cs rename to MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.cs index b12d2ff..2ce7017 100644 --- a/MagMan.Data/Migrations/20231222180523_AddMagBaseObj01.cs +++ b/MagMan.Data.Tenant/Migrations/20231222180523_AddMagBaseObj01.cs @@ -4,7 +4,7 @@ using Microsoft.EntityFrameworkCore.Migrations; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { public partial class AddMagBaseObj01 : Migration { diff --git a/MagMan.Data/Migrations/MagManContextModelSnapshot.cs b/MagMan.Data.Tenant/Migrations/MagManContextModelSnapshot.cs similarity index 99% rename from MagMan.Data/Migrations/MagManContextModelSnapshot.cs rename to MagMan.Data.Tenant/Migrations/MagManContextModelSnapshot.cs index 6f1c17b..9092b6a 100644 --- a/MagMan.Data/Migrations/MagManContextModelSnapshot.cs +++ b/MagMan.Data.Tenant/Migrations/MagManContextModelSnapshot.cs @@ -7,7 +7,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; #nullable disable -namespace MagMan.Data.Migrations +namespace MagMan.Data.Tenant.Migrations { [DbContext(typeof(MagManContext))] partial class MagManContextModelSnapshot : ModelSnapshot diff --git a/MagMan.Data/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs b/MagMan.Data.Tenant/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs similarity index 100% rename from MagMan.Data/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs rename to MagMan.Data.Tenant/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.Designer.cs diff --git a/MagMan.Data/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs b/MagMan.Data.Tenant/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs similarity index 100% rename from MagMan.Data/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs rename to MagMan.Data.Tenant/Migrations/UserIdentityDb/20231222165912_CreateIdentitySchema.cs diff --git a/MagMan.Data/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs b/MagMan.Data.Tenant/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs similarity index 100% rename from MagMan.Data/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs rename to MagMan.Data.Tenant/Migrations/UserIdentityDb/UserIdentityDbContextModelSnapshot.cs diff --git a/MagMan.Data/ModelBuilderExtensions.cs b/MagMan.Data.Tenant/ModelBuilderExtensions.cs similarity index 99% rename from MagMan.Data/ModelBuilderExtensions.cs rename to MagMan.Data.Tenant/ModelBuilderExtensions.cs index 5c8470e..fd001d9 100644 --- a/MagMan.Data/ModelBuilderExtensions.cs +++ b/MagMan.Data.Tenant/ModelBuilderExtensions.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data +namespace MagMan.Data.Tenant { public static class ModelBuilderExtensions { diff --git a/MagMan.Data.Tenant/Services/BaseServ.cs b/MagMan.Data.Tenant/Services/BaseServ.cs new file mode 100644 index 0000000..828283d --- /dev/null +++ b/MagMan.Data.Tenant/Services/BaseServ.cs @@ -0,0 +1,70 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MagMan.Data.Tenant.Services +{ + /// + /// Classe di partenza x costruzione servizi di accesso dati + cache + /// + public class BaseServ + { + #region Protected Properties + + /// + /// Durata cache breve (1 min circa + perturbazione percentuale +/-10%) + /// + protected TimeSpan FastCache + { + get => TimeSpan.FromSeconds(cacheTtlShort * rnd.Next(900, 1100) / 1000); + } + + /// + /// Durata cache lunga (+ perturbazione percentuale +/-10%) + /// + protected TimeSpan LongCache + { + get => TimeSpan.FromSeconds(cacheTtlLong * rnd.Next(900, 1100) / 1000); + } + + /// + /// Durata cache MOLTO breve (10 sec circa + perturbazione percentuale +/-10%) + /// + protected TimeSpan UltraFastCache + { + get => TimeSpan.FromSeconds(cacheTtlShort / 6 * rnd.Next(900, 1100) / 1000); + } + + /// + /// Durata cache MOLTO lunga (+ perturbazione percentuale +/-10%) + /// + protected TimeSpan UltraLongCache + { + get => TimeSpan.FromSeconds(cacheTtlLong * 10 * rnd.Next(900, 1100) / 1000); + } + + #endregion Protected Properties + + + protected static IConfiguration _configuration = null!; + + #region Private Fields + + /// + /// Durata cache lunga IN SECONDI + /// + private int cacheTtlLong = 60 * 5; + + /// + /// Durata cache breve IN SECONDI + /// + private int cacheTtlShort = 60 * 1; + + private Random rnd = new Random(); + + #endregion Private Fields + } +} diff --git a/MagMan.Data/Services/MessageService.cs b/MagMan.Data.Tenant/Services/MessageService.cs similarity index 98% rename from MagMan.Data/Services/MessageService.cs rename to MagMan.Data.Tenant/Services/MessageService.cs index d9907f3..65c9a4c 100644 --- a/MagMan.Data/Services/MessageService.cs +++ b/MagMan.Data.Tenant/Services/MessageService.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Data.Tenant.Services { public class MessageService { diff --git a/MagMan.Data/Services/SelectData.cs b/MagMan.Data.Tenant/Services/SelectData.cs similarity index 97% rename from MagMan.Data/Services/SelectData.cs rename to MagMan.Data.Tenant/Services/SelectData.cs index 2cd4ae5..7e073ca 100644 --- a/MagMan.Data/Services/SelectData.cs +++ b/MagMan.Data.Tenant/Services/SelectData.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Data.Tenant.Services { public class SelectData { diff --git a/MagMan.Data/Services/SelectOrderData.cs b/MagMan.Data.Tenant/Services/SelectOrderData.cs similarity index 97% rename from MagMan.Data/Services/SelectOrderData.cs rename to MagMan.Data.Tenant/Services/SelectOrderData.cs index 1395eb3..bb95de3 100644 --- a/MagMan.Data/Services/SelectOrderData.cs +++ b/MagMan.Data.Tenant/Services/SelectOrderData.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace MagMan.Data.Services +namespace MagMan.Data.Tenant.Services { public class SelectOrderData : SelectData { diff --git a/MagMan.Data/AdminContext.cs b/MagMan.Data/AdminContext.cs deleted file mode 100644 index 459ae66..0000000 --- a/MagMan.Data/AdminContext.cs +++ /dev/null @@ -1,75 +0,0 @@ -using MagMan.Data.DbModels; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagMan.Data -{ - // - // This is here so CodeMaid doesn't reorganize this document - // - public partial class AdminContext : DbContext - { - #region Private Fields - - private IConfiguration _configuration; - - #endregion Private Fields - - #region Public Constructors - - public AdminContext() - { - } - - public AdminContext(IConfiguration configuration) - { - _configuration = configuration; - } - - public AdminContext(DbContextOptions options) : base(options) - { - } - - #endregion Public Constructors - - #region Public Properties - - /// - /// User management - /// - public DbSet UserList { get; set; } - - #endregion Public Properties - - #region Protected Methods - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - string connString = DbConfig.ADMIN_CONNECTION_STRING; - if (!optionsBuilder.IsConfigured) - { - //connString = _configuration.GetConnectionString("MagMan.Data"); - connString = "Server=localhost;port=3306;database=mysql;user=root;pwd=Egalware_24068!;sslmode=None;"; - var serverVersion = ServerVersion.AutoDetect(connString); - optionsBuilder.UseMySql(connString, serverVersion); - } - } - - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder.Entity().HasKey(c => new { c.Host, c.User }); - - OnModelCreatingPartial(modelBuilder); - } - - #endregion Protected Methods - - - partial void OnModelCreatingPartial(ModelBuilder modelBuilder); - } -} \ No newline at end of file diff --git a/MagMan.Data/MailKitEmailSender.cs b/MagMan.Data/MailKitEmailSender.cs deleted file mode 100644 index eff7ed5..0000000 --- a/MagMan.Data/MailKitEmailSender.cs +++ /dev/null @@ -1,69 +0,0 @@ -using Microsoft.Extensions.Options; -using MimeKit.Text; -using MimeKit; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using MailKit.Net.Smtp; -using Microsoft.AspNetCore.Identity.UI.Services; - -namespace MagMan.Data -{ - /// - /// Implementazione interfaccia email con pacchetto MailKIT - /// - /// https://www.ryadel.com/en/asp-net-core-send-email-messages-smtp-mailkit/ - /// - public class MailKitEmailSender : IEmailSender - { - #region Public Constructors - - public MailKitEmailSender(IOptions options) - { - this.Options = options.Value; - } - - #endregion Public Constructors - - #region Public Properties - - public MailKitEmailSenderOptions Options { get; set; } - - #endregion Public Properties - - #region Public Methods - - public Task Execute(string to, string subject, string message) - { - // create message - var email = new MimeMessage(); - email.Sender = MailboxAddress.Parse(Options.Sender_EMail); - if (!string.IsNullOrEmpty(Options.Sender_Name)) - email.Sender.Name = Options.Sender_Name; - email.From.Add(email.Sender); - email.To.Add(MailboxAddress.Parse(to)); - email.Subject = subject; - email.Body = new TextPart(TextFormat.Html) { Text = message }; - - // send email - using (var smtp = new SmtpClient()) - { - smtp.Connect(Options.Host_Address, Options.Host_Port, Options.Host_SecureSocketOptions); - smtp.Authenticate(Options.Host_Username, Options.Host_Password); - smtp.Send(email); - smtp.Disconnect(true); - } - - return Task.FromResult(true); - } - - public Task SendEmailAsync(string email, string subject, string message) - { - return Execute(email, subject, message); - } - - #endregion Public Methods - } -} \ No newline at end of file diff --git a/MagMan.Data/MailKitEmailSenderOptions.cs b/MagMan.Data/MailKitEmailSenderOptions.cs deleted file mode 100644 index 36eaadd..0000000 --- a/MagMan.Data/MailKitEmailSenderOptions.cs +++ /dev/null @@ -1,36 +0,0 @@ -using MailKit.Security; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagMan.Data -{ - public class MailKitEmailSenderOptions - { - #region Public Constructors - - public MailKitEmailSenderOptions() - { - Host_SecureSocketOptions = SecureSocketOptions.Auto; - } - - #endregion Public Constructors - - #region Public Properties - - public string Host_Address { get; set; } = ""; - - public string Host_Password { get; set; } = ""; - public int Host_Port { get; set; } = 0; - - public SecureSocketOptions Host_SecureSocketOptions { get; set; } = SecureSocketOptions.None; - public string Host_Username { get; set; } = ""; - public string Sender_EMail { get; set; } = ""; - - public string Sender_Name { get; set; } = ""; - - #endregion Public Properties - } -} \ No newline at end of file diff --git a/MagMan.Data/UserAdminConfiguration.cs b/MagMan.Data/UserAdminConfiguration.cs deleted file mode 100644 index c2cbde7..0000000 --- a/MagMan.Data/UserAdminConfiguration.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagMan.Data -{ - public class UserAdminConfiguration : IEntityTypeConfiguration - { - #region Public Methods - - public void Configure(EntityTypeBuilder builder) - { - builder.HasData( - new IdentityUser { UserName = "samuele@steamware.net", Email = "samuele@steamware.net", EmailConfirmed = true }, - new IdentityUser { UserName = "samuele.locatelli@egalware.com", Email = "samuele.locatelli@egalware.com", EmailConfirmed = true } - ); - } - - #endregion Public Methods - } -} diff --git a/MagMan.Data/UserData.cs b/MagMan.Data/UserData.cs deleted file mode 100644 index 5c15c58..0000000 --- a/MagMan.Data/UserData.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore.Identity; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagMan.Data -{ - /// - /// Classe generalizzaizone identity (user + roles + claims) x gestione semplificata in editing - /// - public class UserData - { - #region Public Properties - - public List Claims { get; set; } = new List(); - - public IdentityUser Identity { get; set; } = new IdentityUser(); - - public List Roles { get; set; } = new List(); - - #endregion Public Properties - } -} diff --git a/MagMan.Data/UserIdentityDbContext.cs b/MagMan.Data/UserIdentityDbContext.cs deleted file mode 100644 index 3d415a1..0000000 --- a/MagMan.Data/UserIdentityDbContext.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection.Emit; -using System.Text; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Identity.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore; -using MagMan.Data.DbModels; - -namespace MagMan.Data -{ - public class UserIdentityDbContext : IdentityDbContext - { - #region Public Constructors - - public UserIdentityDbContext() - { - try - { - // se non ci fosse... crea o migra! - Database.Migrate(); - } - catch (Exception exc) - { } - } - - public UserIdentityDbContext(DbContextOptions options) - : base(options) - { -#if false - // se non ci fosse... crea! - Database.EnsureCreated(); -#endif - try - { - // se non ci fosse... crea o migra! - Database.Migrate(); - } - catch (Exception exc) - { } - } - - #endregion Public Constructors - - #region Public Properties - - public DbSet DbSetCounts { get; set; } - - #endregion Public Properties - - #region Protected Methods - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - string connString = DbConfig.CONNECTION_STRING; - if (!optionsBuilder.IsConfigured) - { - var serverVersion = ServerVersion.AutoDetect(connString); - optionsBuilder.UseMySql(connString, serverVersion); - } - } - - protected override void OnModelCreating(ModelBuilder builder) - { - base.OnModelCreating(builder); - - // aggiunta ruoli - builder.ApplyConfiguration(new UserRoleConfiguration()); - // aggiunta user admin base - builder.ApplyConfiguration(new UserAdminConfiguration()); - - // Todo: aggiungere configurazione claims oltre ai roles... - - } - - #endregion Protected Methods - } -} diff --git a/MagMan.UI.sln b/MagMan.UI.sln index 5c96199..60bf249 100644 --- a/MagMan.UI.sln +++ b/MagMan.UI.sln @@ -7,9 +7,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagMan.UI", "MagMan.UI\MagM EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagMan.Core", "MagMan.Core\MagMan.Core.csproj", "{328950E0-CCFB-40EF-AC68-A26912135588}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MagMan.Data", "MagMan.Data\MagMan.Data.csproj", "{4F26EF07-74E7-4A8F-B24B-19AACDD718B3}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagMan.Data.Tenant", "MagMan.Data.Tenant\MagMan.Data.Tenant.csproj", "{69E22B67-FFA7-4E21-81A7-B8F025A420C5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagMan.User", "MagMan.User\MagMan.User.csproj", "{E63054F2-C7EE-4996-B764-B9DA6033F754}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagMan.Data.Admin", "MagMan.Data.Admin\MagMan.Data.Admin.csproj", "{324914D5-2616-42D8-82EF-5420148DC9E1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -25,14 +25,14 @@ Global {328950E0-CCFB-40EF-AC68-A26912135588}.Debug|Any CPU.Build.0 = Debug|Any CPU {328950E0-CCFB-40EF-AC68-A26912135588}.Release|Any CPU.ActiveCfg = Release|Any CPU {328950E0-CCFB-40EF-AC68-A26912135588}.Release|Any CPU.Build.0 = Release|Any CPU - {4F26EF07-74E7-4A8F-B24B-19AACDD718B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4F26EF07-74E7-4A8F-B24B-19AACDD718B3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4F26EF07-74E7-4A8F-B24B-19AACDD718B3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4F26EF07-74E7-4A8F-B24B-19AACDD718B3}.Release|Any CPU.Build.0 = Release|Any CPU - {E63054F2-C7EE-4996-B764-B9DA6033F754}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E63054F2-C7EE-4996-B764-B9DA6033F754}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E63054F2-C7EE-4996-B764-B9DA6033F754}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E63054F2-C7EE-4996-B764-B9DA6033F754}.Release|Any CPU.Build.0 = Release|Any CPU + {69E22B67-FFA7-4E21-81A7-B8F025A420C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {69E22B67-FFA7-4E21-81A7-B8F025A420C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {69E22B67-FFA7-4E21-81A7-B8F025A420C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {69E22B67-FFA7-4E21-81A7-B8F025A420C5}.Release|Any CPU.Build.0 = Release|Any CPU + {324914D5-2616-42D8-82EF-5420148DC9E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {324914D5-2616-42D8-82EF-5420148DC9E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {324914D5-2616-42D8-82EF-5420148DC9E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {324914D5-2616-42D8-82EF-5420148DC9E1}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MagMan.UI/Components/MigrationManager.razor b/MagMan.UI/Components/MigrationManager.razor index 512650a..cf922c0 100644 --- a/MagMan.UI/Components/MigrationManager.razor +++ b/MagMan.UI/Components/MigrationManager.razor @@ -44,7 +44,7 @@ return; reportProcess(); - await MagMan.Data.DbAdmin.migrateDbMain(); + await MagMan.Data.Tenant.DbAdmin.migrateDbMain(); await ReloadData(); reportChange(); } @@ -55,7 +55,7 @@ return; reportProcess(); - await MagMan.User.DbAdmin.migrateDbIdentity(); + await MagMan.Data.Admin.DbAdmin.migrateDbIdentity(); await ReloadData(); reportChange(); } @@ -71,7 +71,7 @@ protected async Task ReloadData() { - var resultIden = await Health.Checks.DbIdentity(DbConfig.DATABASE_NAME); + var resultIden = await Health.Checks.DbIdentity(MagMan.Data.Admin.DbConfig.DATABASE_NAME); DbIdentity = (resultIden.Status == Microsoft.Extensions.Diagnostics.HealthChecks.HealthStatus.Healthy); DbAllOk = (DbIdentity); } diff --git a/MagMan.UI/Components/SearchMod.razor.cs b/MagMan.UI/Components/SearchMod.razor.cs index 8f49591..c16384a 100644 --- a/MagMan.UI/Components/SearchMod.razor.cs +++ b/MagMan.UI/Components/SearchMod.razor.cs @@ -1,6 +1,5 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -using MagMan.Data.Services; + +using MagMan.Data.Tenant.Services; using Microsoft.AspNetCore.Components; namespace MagMan.UI.Components diff --git a/MagMan.UI/Components/SetupDiagnostics.razor b/MagMan.UI/Components/SetupDiagnostics.razor index 28f9b47..e0b04ba 100644 --- a/MagMan.UI/Components/SetupDiagnostics.razor +++ b/MagMan.UI/Components/SetupDiagnostics.razor @@ -87,10 +87,10 @@ } protected async Task ReloadData() { - var resultLog = await Health.Checks.DbPlantTable(DbConfig.DATABASE_NAME); - var resultIden = await Health.Checks.DbIdentity(DbConfig.DATABASE_NAME); - DbLogOk = (resultLog.Status == HealthStatus.Healthy); + var resultIden = await Health.Checks.DbIdentity(MagMan.Data.Admin.DbConfig.DATABASE_NAME); + var resultLog = await Health.Checks.DbPlantTable(MagMan.Data.Tenant.DbConfig.DATABASE_NAME); DbIdentity = (resultIden.Status == HealthStatus.Healthy); + DbLogOk = (resultLog.Status == HealthStatus.Healthy); DbAllOk = (DbLogOk && DbIdentity); } diff --git a/MagMan.UI/Health/Checks.cs b/MagMan.UI/Health/Checks.cs index 4dfe5a1..8c112a9 100644 --- a/MagMan.UI/Health/Checks.cs +++ b/MagMan.UI/Health/Checks.cs @@ -1,12 +1,13 @@ -using MagMan.Data.DbModels; +using MagMan.Data.Tenant.DbModels; using MagMan.Data; using Microsoft.Extensions.Diagnostics.HealthChecks; using NLog; using Org.BouncyCastle.Pqc.Crypto.Lms; using System.Net.NetworkInformation; -using MagMan.User; -using MagMan.User.DbModels; +using MagMan.Data.Admin; +using MagMan.Data.Admin.DbModels; using Microsoft.EntityFrameworkCore; +using MagMan.Data.Tenant; namespace MagMan.UI.Health { @@ -25,7 +26,7 @@ namespace MagMan.UI.Health using (var appDb = new UserIdentityDbContext()) { string description = "Try check Table IdentityUsers"; - List recordList = new List(); + List recordList = new List(); var healthCheckData = new Dictionary(); try { @@ -85,7 +86,7 @@ namespace MagMan.UI.Health using (var adminDb = new AdminContext()) { string description = "Try check MySql User table"; - List userList = new List(); + List userList = new List(); var healthCheckData = new Dictionary(); try { diff --git a/MagMan.UI/MagMan.UI.csproj b/MagMan.UI/MagMan.UI.csproj index 7ce14f2..a9e7c1a 100644 --- a/MagMan.UI/MagMan.UI.csproj +++ b/MagMan.UI/MagMan.UI.csproj @@ -44,14 +44,15 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + - - + + diff --git a/MagMan.UI/Pages/Index.razor.cs b/MagMan.UI/Pages/Index.razor.cs index 60125d1..090aa2a 100644 --- a/MagMan.UI/Pages/Index.razor.cs +++ b/MagMan.UI/Pages/Index.razor.cs @@ -1,4 +1,4 @@ -using MagMan.Data.Services; +using MagMan.Data.Tenant.Services; using Microsoft.AspNetCore.Components; using System; diff --git a/MagMan.UI/Program.cs b/MagMan.UI/Program.cs index c6f9588..3b6fdb2 100644 --- a/MagMan.UI/Program.cs +++ b/MagMan.UI/Program.cs @@ -1,22 +1,23 @@ -using MagMan.UI.Data; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Web; -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore; -using MagMan.Data; -using Microsoft.AspNetCore.Localization; -using System.Globalization; -using Microsoft.AspNetCore.HttpOverrides; -using StackExchange.Redis; -using MagMan.Data.Services; -using HealthChecks.UI.Client; -using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Blazored.LocalStorage; using Blazored.SessionStorage; -using Microsoft.Extensions.Diagnostics.HealthChecks; -using System.Configuration; -using Microsoft.AspNetCore.Components.Authorization; +using HealthChecks.UI.Client; +using MagMan.Core; +using MagMan.Core.Services; +using MagMan.Data; +using MagMan.Data.Admin; +using MagMan.Data.Tenant; +using MagMan.Data.Tenant.Services; using MagMan.UI.Areas.Identity; +using MagMan.UI.Data; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Diagnostics.HealthChecks; +using Microsoft.AspNetCore.HttpOverrides; +using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Localization; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Diagnostics.HealthChecks; +using StackExchange.Redis; +using System.Globalization; var builder = WebApplication.CreateBuilder(args); @@ -37,14 +38,18 @@ builder.Services.AddSingleton(redisMultiplexer); string dbServerAddr = builder.Configuration["DbConfig:Server"]; string nKey = builder.Configuration["DbConfig:nKey"]; string sKey = builder.Configuration["DbConfig:sKey"]; -MagMan.Data.DbConfig.InitDb(dbServerAddr, nKey, sKey); -MagMan.User.DbConfig.InitDb(dbServerAddr, nKey, sKey); +MagMan.Data.Admin.DbConfig.InitDb(dbServerAddr, nKey, sKey); +MagMan.Data.Tenant.DbConfig.InitDb(dbServerAddr, nKey, sKey); // inizializzo il DB e creo (se necessario) l'utente -MagMan.User.DbConfig.CheckUser(nKey, sKey); +MagMan.Data.Admin.DbConfig.CheckUser(nKey, sKey); + +// spostare e fare in caso nelle chiamate custom +#if true // verifico se serve applicazione migrazioni -MagMan.Data.DbConfig.ExecMigrationMain(); +MagMan.Data.Tenant.DbConfig.ExecMigrationMain(); +#endif //DbConfig.ExecMigrationIdentity(); -string connStringDB = DbConfig.CONNECTION_STRING; +string connStringDB = MagMan.Data.Admin.DbConfig.CONNECTION_STRING; // healthchecks builder.Services.AddHealthChecks() @@ -85,11 +90,11 @@ builder.Services.Configure(o => -builder.Services.AddDbContext(options => +builder.Services.AddDbContext(options => options.UseSqlServer(connectionString)); builder.Services.AddDefaultIdentity(options => options.SignIn.RequireConfirmedAccount = true) - .AddEntityFrameworkStores(); + .AddEntityFrameworkStores(); #if false @@ -123,7 +128,7 @@ builder.Services.AddBlazoredLocalStorage(); builder.Services.AddBlazoredSessionStorage(); // gestione email -builder.Services.Configure(builder.Configuration.GetSection(nameof(MailKitMailSettings))); +builder.Services.Configure(builder.Configuration.GetSection(nameof(MailKitMailSettings))); builder.Services.AddScoped(); builder.Services.AddHttpContextAccessor(); diff --git a/MagMan.UI/_Imports.razor b/MagMan.UI/_Imports.razor index 698ee8b..105b4e4 100644 --- a/MagMan.UI/_Imports.razor +++ b/MagMan.UI/_Imports.razor @@ -7,11 +7,14 @@ @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop @using MagMan.Core +@using MagMan.Core.DTO @using MagMan.Data -@using MagMan.Data.DbModels -@using MagMan.Data.Services -@* @using MagMan.Data.DTO *@ -@using MagMan.Data.Services +@using MagMan.Data.Admin +@using MagMan.Data.Admin.DbModels +@using MagMan.Data.Admin.Services +@using MagMan.Data.Tenant +@using MagMan.Data.Tenant.DbModels +@using MagMan.Data.Tenant.Services @using MagMan.UI @using MagMan.UI.Shared @using MagMan.UI.Components diff --git a/MagMan.User/UserRoleConfiguration.cs b/MagMan.User/UserRoleConfiguration.cs deleted file mode 100644 index ab563c7..0000000 --- a/MagMan.User/UserRoleConfiguration.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Microsoft.AspNetCore.Identity; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagMan.User -{ - public class UserRoleConfiguration : IEntityTypeConfiguration - { - #region Public Methods - - public void Configure(EntityTypeBuilder builder) - { - builder.HasData( - new IdentityRole { Name = "Undef", NormalizedName = "UNDEF" }, - //new IdentityRole { Name = "ExtUser", NormalizedName = "EXTUSER" }, - //new IdentityRole { Name = "ExtTransp", NormalizedName = "EXTTRANSP" }, - new IdentityRole { Name = "User", NormalizedName = "USER" }, - new IdentityRole { Name = "Admin", NormalizedName = "ADMIN" }, - new IdentityRole { Name = "SuperAdmin", NormalizedName = "SUPERADMIN" } - ); - } - - #endregion Public Methods - } -} diff --git a/README.md b/README.md index 66b7181..889c395 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,45 @@ Il sofware è previsto in modalità **multi-tenant**, dove verrà generato un DB Di base il sistema deve prevedere il riconoscimento degli utenti e/o dei software EgalWare licenziati e reindirizzare l'impiego delle funzionalità avanzate verso il DB dedicato al cliente. +## Architettura + +Il progetto è pensato in architettura **multi-tenant** per la versione **online**, ovvero un unico indirizzo web (tramite load balancers x reverse proxy) che fornisce l'applicazione a tutti i clienti. + +Ogni cliente, facendo login, verrà riconosciuto e gli verrà fornita la partizione dati/DB di competenza del tenant secondo lo schema seguente: + +### Workflow + +Di seguito lo schema di funzionamento +```mermaid +flowchart TB + user(User Login\n web browser) --> ServerApp + egtbw(EgtB&W sw\n REST call) --> ServerApp + + ServerApp{{magman.egalware.com}} --> multiTenant(Admin DB) + ServerApp --> clientData(Tenant DB Data) + + multiTenant--> tenantMgmt(Clienti) + multiTenant--> MachMgmt(Macchine) + multiTenant--> KeyMgmt(Chiavi) + multiTenant--> UserMgmt(Utenti) + + clientData --> MagData(Dati Magazzino) + clientData --> MachineData(Stato Impianto) + clientData --> LogData(Log Impianto) + clientData --> CommData(Stato Commesse) + + +style ServerApp fill:#223999 +style multiTenant fill:#921111 +style clientData fill:#226919 + + +``` + +In pratica le chiamate vengono inviate tutte al servizio web e da qui smistate per competenza e funzionalità verso i vari DB. + +A livello architetturale il progetto è separato tra la parte **Data.Admin** e **Data.Tenant**. + ## Oggetti di base Gli oggetti di abse sono i seguenti: @@ -88,4 +127,6 @@ Ogni nuovo user dovrà poi essere associato al bucket del cliente tramite un cod Version | Date | Editor | Note :--: |----------|----- | ----: + 0.3 | 2024.01.10 | S.E. Locatelli | Revisione modalità multi-tenant + 0.2 | 2024.01.05 | S.E. Locatelli | update ruoli e workflow 0.1 | 2023.12.28 | S.E. Locatelli | Prima revisione documento diff --git a/README.pdf b/README.pdf index e21a504..a432f22 100644 Binary files a/README.pdf and b/README.pdf differ