diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index f5cc5192..1eddded3 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -403,6 +403,43 @@ namespace MP.Data.Controllers return answ; } + /// + /// Update ddel campo VALORE di un dossier (che contiene json flux log serializzati) + /// + /// record dossier da modificare + /// + public async Task DossiersUpdateValore(Dossiers editRec) + { + bool fatto = false; + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + var currRec = dbCtx + .DbSetDossiers + .Where(x => x.IdxDossier == editRec.IdxDossier) + .FirstOrDefault(); + if (currRec != null) + { + currRec.Valore= editRec.Valore; + dbCtx.Entry(currRec).State = EntityState.Modified; + } + else + { + dbCtx + .DbSetDossiers + .Add(editRec); + } + await dbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DossiersUpdateRecord{Environment.NewLine}{exc}"); + } + } + return fatto; + } /// /// Elenco valori link (x home e navMenu laterale) /// diff --git a/MP.Data/DTO/DossierFluxLogDTO.cs b/MP.Data/DTO/DossierFluxLogDTO.cs index 8476b851..ed804309 100644 --- a/MP.Data/DTO/DossierFluxLogDTO.cs +++ b/MP.Data/DTO/DossierFluxLogDTO.cs @@ -13,8 +13,10 @@ namespace MP.Data.DTO { public class DossierFluxLogDTO { - public List ODL { get; set; } = new List(); + /// + /// Elenco valori FluxLogDTO serializzato (compreso valori edit) + /// + public List ODL { get; set; } = new List(); - public List SEND { get; set; } = new List(); } } diff --git a/MP.Data/DTO/FluxLogDTO.cs b/MP.Data/DTO/FluxLogDTO.cs new file mode 100644 index 00000000..b36a12bb --- /dev/null +++ b/MP.Data/DTO/FluxLogDTO.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MP.Data.DTO +{ + public class FluxLogDTO + { + public string IdxMacchina { get; set; } + + public DateTime dtEvento { get; set; } + + public string CodFlux { get; set; } + + public string Valore { get; set; } + + public string ValoreEdit { get; set; } + + } +} diff --git a/MP.SPEC/Components/ListDossiers.razor b/MP.SPEC/Components/ListDossiers.razor index 33f7fc74..6c05ad1b 100644 --- a/MP.SPEC/Components/ListDossiers.razor +++ b/MP.SPEC/Components/ListDossiers.razor @@ -86,7 +86,9 @@ else @foreach (var record in listaFlux) { - cloneRecord(record)" class="btn btn-info btn-sm" title="Duplica Record"> + + editRecord(record)" class="btn btn-info btn-sm" title="Duplica Record"> + @record.IdxMacchina @@ -97,12 +99,12 @@ else @record.CodFlux - @record.Valore - @if (ListRecordsMod != null) + @record.Valore + @record.Valore + @*@if (ListRecordsMod != null) { @findRec(record) - - } + }*@ } diff --git a/MP.SPEC/Components/ListDossiers.razor.cs b/MP.SPEC/Components/ListDossiers.razor.cs index 64c5d3a9..a5f3f6e0 100644 --- a/MP.SPEC/Components/ListDossiers.razor.cs +++ b/MP.SPEC/Components/ListDossiers.razor.cs @@ -13,7 +13,7 @@ namespace MP.SPEC.Components [Parameter] public EventCallback RecordSel { get; set; } [Parameter] - public EventCallback RecordSelFlux { get; set; } + public EventCallback RecordSelFlux { get; set; } [Parameter] public SelectDossierParams SelFilter { get; set; } = null!; @@ -72,31 +72,22 @@ namespace MP.SPEC.Components await reloadData(true); await Task.Delay(1); } - protected async Task cloneRecord(FluxLog selRec) + protected async Task editRecord(FluxLogDTO selRec) { - // creo record duplicato... - FluxLog newRec = new FluxLog() - { - IdxMacchina = selRec.IdxMacchina, - dtEvento = selRec.dtEvento, - CodFlux = selRec.CodFlux, - Valore = $"{selRec.Valore} - OLD" - }; - currRecordFlux = selRec; - if (selRec != null) - { - ListRecordsMod.Add(newRec); - } - await RecordSelFlux.InvokeAsync(newRec); + + // indico record selezionato + await RecordSelFlux.InvokeAsync(selRec); } protected string findRec(FluxLog record) { string answ = ""; +#if false if (ListRecordsMod != null) { answ = ListRecordsMod.Where(l => l.IdxMacchina == record.IdxMacchina && l.CodFlux == record.CodFlux).Select(x => x.Valore).SingleOrDefault(); - } + } +#endif return answ; } @@ -127,7 +118,7 @@ namespace MP.SPEC.Components { currRecord = selRec; await RecordSel.InvokeAsync(selRec); - listaFlux = MDService.getOrigToFluxLog(selRec.Valore); + listaFlux = MDService.getFluxLog(selRec.Valore); await toggleTableFlux(); } @@ -147,9 +138,7 @@ namespace MP.SPEC.Components private List? ListRecords; - private List? ListRecordsMod { get; set; } = new List(); - - private FluxLog? currRecordFlux; + private FluxLogDTO? currRecordFlux; private List? ListStati; @@ -167,7 +156,7 @@ namespace MP.SPEC.Components private bool isLoading { get; set; } = false; - private List? listaFlux { get; set; } = null; + private List? listaFlux { get; set; } = null; private int MaxRecord { diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 4f3b41d7..f09d8334 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -274,9 +274,9 @@ namespace MP.SPEC.Data return await Task.FromResult(dbController.ConfigUpdate(updRec)); } - public List getOrigToFluxLog(string Valore) + public List getFluxLog(string Valore) { - List answ = new List(); + List answ = new List(); DossierFluxLogDTO? result = JsonConvert.DeserializeObject(Valore); if (result != null) { @@ -286,33 +286,39 @@ namespace MP.SPEC.Data .ODL .OrderBy(x => x.CodFlux) .ToList(); + // inizializzo SE necessario + foreach (var item in answ) + { + item.ValoreEdit = String.IsNullOrEmpty(item.ValoreEdit) ? item.Valore : item.ValoreEdit; + } } } return answ; } - public List getSendFluxLog(string Valore) + + public async Task updateDossierValue(Dossiers currDoss, FluxLogDTO editFL) { - List answ = new List(); - DossierFluxLogDTO? result = JsonConvert.DeserializeObject(Valore); - if (result != null) + bool answ = false; + // recupero intero set valori dossier deserializzando... + var fluxLogList = getFluxLog(currDoss.Valore); + await Task.Delay(1); + + // se tutto ok + if (fluxLogList != null) { - // se NON avessi SEND --> duplico da ODL... - if (result.SEND == null) + // aggiorno recordo corrente + var currRec = fluxLogList.FirstOrDefault(x => x.CodFlux == editFL.CodFlux && x.dtEvento == editFL.dtEvento); + if (currRec != null) { - result.SEND = new List(); - foreach (var item in result.ODL) - { - result.SEND.Add(item); - } - } - if (result.SEND != null) - { - answ = result - .SEND - .OrderBy(x => x.CodFlux) - .ToList(); + currRec = editFL; } + // serializzo nuovamente valore + string rawVal = JsonConvert.SerializeObject(fluxLogList); + currDoss.Valore = rawVal; + // aggiorno record sul DB + await dbController.DossiersUpdateValore(currDoss); } + return answ; } diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 1df9cac6..bdfe044b 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2210.1120 + 6.16.2210.1206 diff --git a/MP.SPEC/Pages/DOSS.razor b/MP.SPEC/Pages/DOSS.razor index b11873af..8fba837a 100644 --- a/MP.SPEC/Pages/DOSS.razor +++ b/MP.SPEC/Pages/DOSS.razor @@ -21,7 +21,7 @@ - @if (currRecord != null) + @if (currDetFluxLogRecord != null) { @@ -32,25 +32,25 @@ MACCHINA - + DATA - + DATA TYPE - + VALORE - + @@ -66,7 +66,7 @@ - update(currRecord)" class="btn btn-success">Save + update(currDetFluxLogRecord)" class="btn btn-success">Save @@ -82,7 +82,7 @@ } else { - + }