pre-update descrizioni

This commit is contained in:
Samuele Locatelli
2026-06-01 13:56:14 +02:00
parent d2e82d7209
commit 3ea4b77827
7 changed files with 88 additions and 4 deletions
+37
View File
@@ -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<AnagCountersModel> AnagCountersGetNextAsync(string cntType);
Task<List<vSelEventiBCodeModel>> AnagEventiGeneralAsync();
Task<bool> AnagGruppiDeleteAsync(AnagGruppiModel updRec);
Task<bool> AnagGruppiUpsertAsync(AnagGruppiModel UpdRec);
Task<List<ListValuesModel>> AnagStatiCommAsync();
Task<List<ListValuesModel>> AnagTipoArtLvAsync();
Task<List<string>> ArticleWithDossierAsync();
Task<int> ArticoliCountSearchAsync(string tipo = "*", string azienda = "*", string searchVal = "");
Task<List<AnagArticoliModel>> ArticoliGetByTipoAsync(string tipo, string azienda = "*");
Task<List<AnagArticoliModel>> ArticoliGetSearchAsync(int numRecord, string tipoArt, string azienda, string searchVal);
Task<List<AnagArticoliModel>> ArticoliInKitAsync();
Task<bool> ArticoliDeleteRecord(AnagArticoliModel currRec);
Task<bool> ArticoliUpdateRecord(AnagArticoliModel currRec);
Task<List<ListValuesModel>> ListValuesFiltAsync(string tabName, string fieldName);
Task<List<MacchineModel>> MacchineByMatrOper(int MatrOpr);
Task<List<MacchineModel>> MacchineGetFiltAsync(string codGruppo);
Task<Dictionary<string, string>> VocabolarioGetLang(string lingua);
Task<bool> VocabolarioUpsertAsync(VocabolarioModel upsRec);
}
}
+1 -1
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP.SPEC</RootNamespace>
<Version>8.16.2606.109</Version>
<Version>8.16.2606.113</Version>
<UserSecretsId>1800a78a-6ff1-40f9-b490-87fb8bfc1394</UserSecretsId>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
</PropertyGroup>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 8.16.2606.109</h4>
<h4>Versione: 8.16.2606.113</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
8.16.2606.109
8.16.2606.113
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>8.16.2606.109</version>
<version>8.16.2606.113</version>
<url>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+47
View File
@@ -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.
Binary file not shown.