From 57c61eac3bab2187d59f2c4451e382039a88cc4e Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 9 Feb 2023 15:33:11 +0100 Subject: [PATCH] Update gestioen ricetta --- MP.Data/Conf/RecipeBlockConfig.cs | 37 +++++-------- MP.Data/Controllers/MpMongoController.cs | 40 +++----------- MP.Data/Controllers/MpSpecController.cs | 1 + MP.Data/MgModels/RecipeModel.cs | 58 +++++++++++---------- MP.SPEC/Components/RecipeMan.razor | 63 +++++++++++++---------- MP.SPEC/Components/RecipeMan.razor.cs | 36 ++++++++++++- MP.SPEC/Data/MpDataService.cs | 7 +-- MP.SPEC/MP.SPEC.csproj | 2 +- MP.SPEC/Recipe/README.md | 23 +++++++++ MP.SPEC/Recipe/README.pdf | Bin 0 -> 42024 bytes MP.SPEC/Resources/ChangeLog.html | 2 +- MP.SPEC/Resources/VersNum.txt | 2 +- MP.SPEC/Resources/manifest.xml | 2 +- 13 files changed, 152 insertions(+), 121 deletions(-) create mode 100644 MP.SPEC/Recipe/README.md create mode 100644 MP.SPEC/Recipe/README.pdf diff --git a/MP.Data/Conf/RecipeBlockConfig.cs b/MP.Data/Conf/RecipeBlockConfig.cs index 8c400c81..b960fabc 100644 --- a/MP.Data/Conf/RecipeBlockConfig.cs +++ b/MP.Data/Conf/RecipeBlockConfig.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; namespace MP.Data.Conf { @@ -11,30 +7,21 @@ namespace MP.Data.Conf /// public class RecipeBlockConfig { - /// - /// Dizionario delle chiavi, differenziate dai primi caratteri: - /// C: --> Calcolato - /// E: --> Enum: modificabile ma da dizionario valori seguente - /// F: --> Fixed (NON modificabile) - /// "" --> editabile - /// - public Dictionary ListKeys { get; set; } = new Dictionary(); - + #region Public Properties /// /// Dizionario degli enum permessi /// public Dictionary> EnumVal { get; set; } = new Dictionary>(); - /// - /// Dizionario degli enum permessi - /// - public Dictionary CalcVal { get; set; } = new Dictionary(); - public class CalcDetail - { - public string Description { get; set; } = ""; - public string Type { get; set; } = ""; - public string Format { get; set; } = ""; - } + /// + /// Dizionario delle chiavi, differenziate dai primi caratteri: + /// C: --> Calcolato + /// E: --> Enum: modificabile ma da dizionario valori seguente + /// F: --> Fixed (NON modificabile) "" --> editabile + /// + public Dictionary ListKeys { get; set; } = new Dictionary(); + + #endregion Public Properties } -} +} \ No newline at end of file diff --git a/MP.Data/Controllers/MpMongoController.cs b/MP.Data/Controllers/MpMongoController.cs index d618879b..3dfaaeec 100644 --- a/MP.Data/Controllers/MpMongoController.cs +++ b/MP.Data/Controllers/MpMongoController.cs @@ -92,11 +92,15 @@ namespace MP.Data.Controllers /// /// Init ricetta dato PODL + conf /// - /// + /// + /// + /// /// - public RecipeModel InitRecipe(int idxPODL, string confPath) + public RecipeModel InitRecipe(string confPath, int idxPODL, Dictionary CalcArgs) { RecipeModel answ = new RecipeModel(); + // recupero dati da PODL... + // per prima cosa leggo file di conf x inizializzare ricetta... string fullPath = RecipePath(confPath); bool fileOk = File.Exists(fullPath); @@ -104,36 +108,8 @@ namespace MP.Data.Controllers { string rawData = File.ReadAllText(fullPath); var currRecipe = JsonConvert.DeserializeObject(rawData); - // copio la mia ricetta come conf... - answ = new RecipeModel(idxPODL, currRecipe); - - //answ = new RecipeModel() - //{ - // IdxPODL = idxPODL, - // TemplateFile = currRecipe.TemplateFile, - // HeadConf = currRecipe.HeadConf, - // RowsConf = currRecipe.RowsConf, - // //HeadVal = currRecipe.HeadConf.ListKeys, - // HeadVal = RecipeModel.ConvertToValues(currRecipe.HeadConf.ListKeys), - // // aggiungo 1 riga... - // RowsVal = new Dictionary>() - // { - // { "1", currRecipe.RowsConf.ListKeys} - // } - - // //IdxPODL = idxPODL, - // //TemplateFile = currRecipe.TemplateFile, - // //HeadConf = currRecipe.HeadConf, - // //RowsConf = currRecipe.RowsConf, - // ////HeadVal = currRecipe.HeadConf.ListKeys, - // //HeadVal = RecipeModel.ConvertToObj(currRecipe.HeadConf.ListKeys), - // //// aggiungo 1 riga... - // //RowsVal = new Dictionary>() - // //{ - // // //{ "1", rigaBase } - // // { "1", RecipeModel.ConvertToObj(currRecipe.RowsConf.ListKeys)} - // //} - //}; + // inizializzo dalla conf... + answ = new RecipeModel(idxPODL, currRecipe, CalcArgs); } return answ; diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index aef9d456..94b5d405 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -1034,6 +1034,7 @@ namespace MP.Data.Controllers .DbSetPODL .AsNoTracking() .Where(x => x.IdxPromessa == idxPODL) + .Include(a => a.ArticoloNav) .FirstOrDefault(); } catch (Exception exc) diff --git a/MP.Data/MgModels/RecipeModel.cs b/MP.Data/MgModels/RecipeModel.cs index edb97f91..afe67c56 100644 --- a/MP.Data/MgModels/RecipeModel.cs +++ b/MP.Data/MgModels/RecipeModel.cs @@ -21,19 +21,26 @@ namespace MP.Data.MgModels /// /// Init da configurazione di base /// - /// - public RecipeModel(int IdxPODL, RecipeConfig origConfig) + /// idx PODL + /// + /// Dizionario argomenti x decodifica (es cod articolo, descrizione...) + public RecipeModel(int IdxPODL, RecipeConfig OrigConfig, Dictionary CalcArgs) { this.IdxPODL = IdxPODL; - this.TemplateFile = origConfig.TemplateFile; - this.HeadConf = origConfig.HeadConf; - this.RowsConf = origConfig.RowsConf; + this.TemplateFile = OrigConfig.TemplateFile; + this.HeadConf = OrigConfig.HeadConf; + this.RowsConf = OrigConfig.RowsConf; // init oggetti tipizzati da valori conf ricevuti - this.HeadVal = ElementConverter(origConfig.HeadConf.ListKeys); + this.HeadVal = ElementConverter(OrigConfig.HeadConf.ListKeys, CalcArgs); + // aggiungo args x gestione contatori righe... + CalcArgs.Add("RowNum", $"0"); + CalcArgs.Add("RowTot", $"{OrigConfig.NumRow}"); // aggiungo righe elementi.. - for (int i = 1; i <= origConfig.NumRow; i++) + for (int i = 1; i <= OrigConfig.NumRow; i++) { - this.RowsVal.Add($"{i}", ElementConverter(origConfig.RowsConf.ListKeys)); + // valore calcolato numero riga gestito ad ogni iterazione + CalcArgs["RowNum"] = $"{i}"; + this.RowsVal.Add($"{i}", ElementConverter(OrigConfig.RowsConf.ListKeys, CalcArgs)); } } @@ -92,28 +99,14 @@ namespace MP.Data.MgModels /// /// Converte il dizionario in List Element /// - public static List ElementConverter(Dictionary ListKeys) + public static List ElementConverter(Dictionary ListKeys, Dictionary CalcArgs) { List ListObj = ListKeys - .Select(x => new Element(x.Key, x.Value)) + .Select(x => new Element(x.Key, x.Value, CalcArgs)) .ToList(); return ListObj; } - public static Element getToConfig(string rawKey, string rawVal) - { - return new Element(rawKey, rawVal); - } - - /// - /// Clone dell'oggetto - /// - /// - public RecipeModel Clone() - { - return (RecipeModel)this.MemberwiseClone(); - } - #endregion Public Methods #region Public Classes @@ -128,9 +121,9 @@ namespace MP.Data.MgModels /// /// Init classe da valore kvp /// - /// - /// - public Element(string rawKey, string rawVal) + /// Chiave item + /// Valore grezzo item + public Element(string rawKey, string rawVal, Dictionary CalcArgs) { this.Key = rawKey; this.OrigVal = rawVal; @@ -143,7 +136,16 @@ namespace MP.Data.MgModels { case "C:": this.Type = KeyType.Calc; - this.Value = rawVal.Substring(2); + // recupero item x ricerca in dizionario... + string cKey = rawVal.Substring(2); + if (CalcArgs.ContainsKey(cKey)) + { + this.Value = CalcArgs[cKey]; + } + else + { + this.Value = cKey; + } break; case "E:": diff --git a/MP.SPEC/Components/RecipeMan.razor b/MP.SPEC/Components/RecipeMan.razor index 4523c596..201de174 100644 --- a/MP.SPEC/Components/RecipeMan.razor +++ b/MP.SPEC/Components/RecipeMan.razor @@ -6,40 +6,32 @@ } else { -
+

Testata Ricetta

-
- @if (needSave) + @if (!showHead) + { + @CurrRecipe?.HeadVal.Count par + } + @if (needSave) + { + + + } + -
-
-
-
- -
-
+ } -
- -
-
+ else + { + + } +
@if (showHead && CurrRecipe?.HeadVal != null) @@ -76,7 +68,24 @@ else }
-
Righe Ricetta
+
+
+
Righe Ricetta
+
+
+ + +
+
@if (CurrRecipe?.RowsVal != null) { @foreach (var riga in CurrRecipe.RowsVal) diff --git a/MP.SPEC/Components/RecipeMan.razor.cs b/MP.SPEC/Components/RecipeMan.razor.cs index ee4825bb..e9b40f1f 100644 --- a/MP.SPEC/Components/RecipeMan.razor.cs +++ b/MP.SPEC/Components/RecipeMan.razor.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Components; using MP.Data; using MP.Data.MgModels; using MP.SPEC.Data; +using MP.SPEC.Pages; using Newtonsoft.Json; namespace MP.SPEC.Components @@ -80,6 +81,7 @@ namespace MP.SPEC.Components #region Private Fields private bool showHead = true; + private bool showAllRows = false; private Dictionary showRows = new Dictionary(); #endregion Private Fields @@ -95,12 +97,27 @@ namespace MP.SPEC.Components CurrRecipe = new RecipeModel(); // effettua ricerca ricetta su MongoDb CurrRecipe = await MDService.RecipeGetByPODL(IdxPODL); - OrigRecipe = await MDService.RecipeGetByPODL(IdxPODL); // se non trova crea nuova... if (CurrRecipe == null) { - CurrRecipe = MDService.InitRecipe(IdxPODL, RecipePath); + // preparo dizionario valori calcolati + Dictionary CalcArgs = new Dictionary(); + // aggiungo dati PODL + CalcArgs.Add("IdxPODL", $"{IdxPODL}"); + CalcArgs.Add("CodePODL", $"PODL{IdxPODL:00000000}"); + // recupero altri dati da PODL + var rowPodl = await MDService.PODL_getByKey(IdxPODL); + if (rowPodl != null) + { + CalcArgs.Add("CodArticolo", rowPodl.CodArticolo); + CalcArgs.Add("DescArticolo", rowPodl.ArticoloNav.DescArticolo); + } + CurrRecipe = MDService.InitRecipe(RecipePath, IdxPODL, CalcArgs); + // la salvo... + await MDService.RecipeSetByPODL(CurrRecipe); } + // rileggo la default + OrigRecipe = await MDService.RecipeGetByPODL(IdxPODL); // sistemo lista bool x righe showRows = new Dictionary(); for (int i = 1; i <= CurrRecipe.RowsVal.Count; i++) @@ -136,6 +153,10 @@ namespace MP.SPEC.Components } } + private async Task addRow() + { + await Task.Delay(1); + } private void toggleHead() @@ -143,6 +164,17 @@ namespace MP.SPEC.Components showHead = !showHead; } + private async Task toggleRows() + { + showAllRows = !showAllRows; + foreach (var item in showRows) + { + showRows[item.Key] = showAllRows; + } + await Task.Delay(1); + } + + private async Task toggleRow(string rowNum) { showRows[rowNum] = !showRows[rowNum]; diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index a4b81b96..7554bd33 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -74,12 +74,13 @@ namespace MP.SPEC.Data /// /// Init ricetta /// - /// /// + /// + /// /// - public RecipeModel InitRecipe(int idxPODL, string confPath) + public RecipeModel InitRecipe(string confPath, int idxPODL, Dictionary CalcArgs) { - return mongoController.InitRecipe(idxPODL, confPath); + return mongoController.InitRecipe(confPath, idxPODL, CalcArgs); } /// /// Salva ricetta su MongoDB diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index af7d0f76..807f72ec 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2302.911 + 6.16.2302.915 diff --git a/MP.SPEC/Recipe/README.md b/MP.SPEC/Recipe/README.md new file mode 100644 index 00000000..9925615a --- /dev/null +++ b/MP.SPEC/Recipe/README.md @@ -0,0 +1,23 @@ +# Ricette +- [Ricette](#ricette) +- [Gestione formati e tag x ricette](#gestione-formati-e-tag-x-ricette) + - [Campi Calcolati](#campi-calcolati) + + +# Gestione formati e tag x ricette + +Nelle ricette ci possono essere campi liberi, campi da enum (da configurare nel json) e campi calcolati + + +## Campi Calcolati + +I tag noti x decodifica riguardano i campi calcolati; hard coded, e riconosciuti, sono i seguenti: + +| ID | Note | Format | Esempio | +|--------------|-----------------------------------------|------------------|-----------------| +| IdxPODL | IdxODL numerico | - | 123 | +| CodePODL | Codice alfanumerico partendo da IdxPODL | PODL{0:00000000} | PODL00000123 | +| CodArticolo | Campo CodArticolo | - | Art000123 | +| DescArticolo | Campo DescArticolo | - | Articol 123 blu | +| RowNum | Numero riga | - | 1 | +| RowTot | Totale righe | - | 10 | diff --git a/MP.SPEC/Recipe/README.pdf b/MP.SPEC/Recipe/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3f36eaff047a7e081abb000c5a346d7cbe3a433f GIT binary patch literal 42024 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%0AJj0qw*EKv?1`z=TloE;( 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 aJxwhqXG2Hl-xCXX*a(SSf)^<4-&Q literal 0 HcmV?d00001 diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index e93ffe87..f0ae4d97 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2302.911

+

Versione: 6.16.2302.915


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index 37ed7d71..c653806e 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2302.911 +6.16.2302.915 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index d07e8bc4..69e5e3f5 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2302.911 + 6.16.2302.915 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