refactor: Migrate backend and frontend architecture from a module-based to an app-based structure.
This commit is contained in:
@@ -1,23 +1,23 @@
|
||||
namespace Zentral.Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Rappresenta un modulo dell'applicazione (es. Magazzino, Acquisti, Vendite).
|
||||
/// I moduli possono essere attivati/disattivati per gestire licenze e funzionalità.
|
||||
/// Rappresenta un'applicazione (es. Magazzino, Acquisti, Vendite).
|
||||
/// Le applicazioni possono essere attivate/disattivate per gestire licenze e funzionalità.
|
||||
/// </summary>
|
||||
public class AppModule : BaseEntity
|
||||
public class App : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// Codice univoco del modulo (es. "warehouse", "purchases", "sales")
|
||||
/// Codice univoco dell'applicazione (es. "warehouse", "purchases", "sales")
|
||||
/// </summary>
|
||||
public required string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Nome visualizzato del modulo (es. "Magazzino", "Acquisti")
|
||||
/// Nome visualizzato dell'applicazione (es. "Magazzino", "Acquisti")
|
||||
/// </summary>
|
||||
public required string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione estesa delle funzionalità del modulo
|
||||
/// Descrizione estesa delle funzionalità dell'applicazione
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
|
||||
@@ -27,7 +27,7 @@ public class AppModule : BaseEntity
|
||||
public string? Icon { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Prezzo base annuale del modulo in EUR
|
||||
/// Prezzo base annuale dell'applicazione in EUR
|
||||
/// </summary>
|
||||
public decimal BasePrice { get; set; }
|
||||
|
||||
@@ -42,30 +42,30 @@ public class AppModule : BaseEntity
|
||||
public int SortOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Se true, il modulo fa parte del core e non può essere disattivato
|
||||
/// Se true, l'applicazione fa parte del core e non può essere disattivata
|
||||
/// </summary>
|
||||
public bool IsCore { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Lista di codici modulo prerequisiti separati da virgola (es. "warehouse,purchases")
|
||||
/// Lista di codici applicazione prerequisiti separati da virgola (es. "warehouse,purchases")
|
||||
/// </summary>
|
||||
public string? Dependencies { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Path base per le route frontend del modulo (es. "/warehouse")
|
||||
/// Path base per le route frontend dell'applicazione (es. "/warehouse")
|
||||
/// </summary>
|
||||
public string? RoutePath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Se false, il modulo è nascosto e non disponibile per l'acquisto
|
||||
/// Se false, l'applicazione è nascosta e non disponibile per l'acquisto
|
||||
/// </summary>
|
||||
public bool IsAvailable { get; set; } = true;
|
||||
|
||||
// Navigation property
|
||||
public ModuleSubscription? Subscription { get; set; }
|
||||
public AppSubscription? Subscription { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce la lista dei codici modulo prerequisiti
|
||||
/// Restituisce la lista dei codici applicazione prerequisiti
|
||||
/// </summary>
|
||||
public IEnumerable<string> GetDependencies()
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace Zentral.Domain.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// Tipo di abbonamento per un modulo
|
||||
/// Tipo di abbonamento per un'applicazione
|
||||
/// </summary>
|
||||
public enum SubscriptionType
|
||||
{
|
||||
@@ -14,18 +14,18 @@ public enum SubscriptionType
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rappresenta lo stato di abbonamento/attivazione di un modulo per questa istanza dell'applicazione.
|
||||
/// Ogni ModuleSubscription è collegata 1:1 con un AppModule.
|
||||
/// Rappresenta lo stato di abbonamento/attivazione di un'applicazione.
|
||||
/// Ogni AppSubscription è collegata 1:1 con un'App.
|
||||
/// </summary>
|
||||
public class ModuleSubscription : BaseEntity
|
||||
public class AppSubscription : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del modulo associato
|
||||
/// ID dell'applicazione associata
|
||||
/// </summary>
|
||||
public int ModuleId { get; set; }
|
||||
public int AppId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Se true, il modulo è attualmente attivo e accessibile
|
||||
/// Se true, l'applicazione è attualmente attiva e accessibile
|
||||
/// </summary>
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
@@ -65,7 +65,7 @@ public class ModuleSubscription : BaseEntity
|
||||
public decimal? PaidPrice { get; set; }
|
||||
|
||||
// Navigation property
|
||||
public AppModule Module { get; set; } = null!;
|
||||
public App App { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Verifica se l'abbonamento è attualmente valido (attivo e non scaduto)
|
||||
Reference in New Issue
Block a user