diff --git a/MP.Data/Repositories/IAnagRepository.cs b/MP.Data/Repositories/IAnagRepository.cs new file mode 100644 index 00000000..8cbbbc98 --- /dev/null +++ b/MP.Data/Repositories/IAnagRepository.cs @@ -0,0 +1,37 @@ +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using MP.Core.DTO; +using MP.Core.Objects; +using MP.Data.DbModels; +using NLog; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Threading.Tasks; + +namespace MP.Data.Repositories +{ + public interface IAnagRepository + { + Task AnagCountersGetNextAsync(string cntType); + Task> AnagEventiGeneralAsync(); + Task AnagGruppiDeleteAsync(AnagGruppiModel updRec); + Task AnagGruppiUpsertAsync(AnagGruppiModel UpdRec); + Task> AnagStatiCommAsync(); + Task> AnagTipoArtLvAsync(); + Task> ArticleWithDossierAsync(); + Task ArticoliCountSearchAsync(string tipo = "*", string azienda = "*", string searchVal = ""); + Task> ArticoliGetByTipoAsync(string tipo, string azienda = "*"); + Task> ArticoliGetSearchAsync(int numRecord, string tipoArt, string azienda, string searchVal); + Task> ArticoliInKitAsync(); + Task ArticoliDeleteRecord(AnagArticoliModel currRec); + Task ArticoliUpdateRecord(AnagArticoliModel currRec); + Task> ListValuesFiltAsync(string tabName, string fieldName); + Task> MacchineByMatrOper(int MatrOpr); + Task> MacchineGetFiltAsync(string codGruppo); + Task> VocabolarioGetLang(string lingua); + Task VocabolarioUpsertAsync(VocabolarioModel upsRec); + } +} diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 2d0f50e7..7dc37fbb 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 8.16.2606.109 + 8.16.2606.113 1800a78a-6ff1-40f9-b490-87fb8bfc1394 en diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index 9d115dbc..91e3fb3c 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 8.16.2606.109

+

Versione: 8.16.2606.113


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index ce4acb58..142014de 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -8.16.2606.109 +8.16.2606.113 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index 1c7d6282..1f1a8e1b 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 8.16.2606.109 + 8.16.2606.113 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false diff --git a/MP.SPEC/refactor_repository.md b/MP.SPEC/refactor_repository.md new file mode 100644 index 00000000..e804649b --- /dev/null +++ b/MP.SPEC/refactor_repository.md @@ -0,0 +1,47 @@ +# ?? Proposta di Refactoring: Decomposizione MpSpecController + +## 1. Situazione Attuale (AS-IS) +* **Componente**: MpSpecController (situato in MP.Data\Controllers\). +* **Pattern**: "God Object" / Monolithic Repository. +* **Problemi identificati**: + * **Violazione SRP**: Gestisce entità eterogenee (Anagrafiche, Produzione, Dossier, Configurazione, Log). + * **Naming**: Il suffisso Controller è fuorviante (indica un livello API, mentre il ruolo è di Repository). + * **Manutenibilità**: Elevato rischio di regressioni durante le modifiche a causa dell'accorpamento di logiche diverse. + * **Testabilità**: Difficoltà estrema nel mockare le dipendenze (molteplici DbContext e parametri di configurazione) in un unico oggetto. + * **Accoppiamento**: MpDataService dipende da un unico, enorme oggetto per ogni operazione di persistenza. + +## 2. Situazione Proposta (TO-BE) +* **Trasformazione**: MpSpecController viene rinominato in MpSpecRepository (come fallback o hub centrale temporaneo) e poi progressivamente svuotato. +* **Nuova Architettura**: Introduzione di Repository specializzati per **Domini Logici**, ognuno con la propria interfaccia (I...Repository). +* **Iniezione delle Dipendenze**: MpDataService smetterà di iniettare un unico repository e inizierà a iniettare solo i moduli di cui ha realmente bisogno (es. IAnagRepository, IProductionRepository, ecc.). +* **Standardizzazione**: Ogni repository gestirà esclusivamente il proprio DbContext di riferimento. + +## 3. Elenco Repository da Creare (Domain Grouping) + +| Repository | Responsabilità (entità/Modelli) | Context Target | +| :--- | :--- | :--- | +| **IAnagRepository** | AnagGruppi, AnagArticoli, AnagOperatori, AnagStatiComm, AnagTipoArtLv, Vocabolario, Parametri | MoonProContext | +| **IProductionRepository** | ODL, PODL, IstanzeKit, TemplateKit, WipKit, Macchine, Gruppi2Macc/Oper | MoonProContext | +| **IDossierRepository** | Dossier, DossierFluxLog | MoonProContext | +| **IFluxLogRepository** | FluxLog, StatDedupDTO, ParetoFluxLog | MoonPro_FluxContext | +| **ISystemRepository** | LinkMenu, Config, Manutenzione DB | MoonProContext / MoonProAdminContext | + +## 4. Checklist Avanzamento Modifiche + +### Fase 1: Preparazione (Infrastruttura) +- [ ] Creazione file +efactor_repository.md. +- [ ] Analisi delle interfacce necessarie per ogni dominio. +- [ ] Rinomina MpSpecController $\rightarrow$ MpSpecRepository (per allineamento naming). + +### Fase 2: Estrazione Modulare (Iterativa) +- [ ] **Modulo Anagrafica**: Creazione AnagRepository $\rightarrow$ Spostamento metodi $\rightarrow$ Aggiornamento MpDataService. +- [ ] **Modulo Produzione**: Creazione ProductionRepository $\rightarrow$ Spostamento metodi $\rightarrow$ Aggiornamento MpDataService. +- [ ] **Modulo Dossier**: Creazione DossierRepository $\rightarrow$ Spostamento metodi $\rightarrow$ Aggiornamento MpDataService. +- [ ] **Modulo FluxLog**: Creazione FluxLogRepository $\rightarrow$ Spostamento metodi $\rightarrow$ Aggiornamento MpDataService. +- [ ] **Modulo Sistema**: Creazione SystemRepository $\rightarrow$ Spostamento metodi $\rightarrow$ Aggiornamento MpDataService. + +### Fase 3: Pulizia e Verifica +- [ ] Rimozione del codice residuo da MpSpecRepository. +- [ ] Verifica della compilazione della soluzione (./build_all_par.ps1 --agent). +- [ ] Verifica della coerenza dei log e della persistenza dei dati. diff --git a/MP.SPEC/refactor_repository.pdf b/MP.SPEC/refactor_repository.pdf new file mode 100644 index 00000000..806fa38d Binary files /dev/null and b/MP.SPEC/refactor_repository.pdf differ