using global::System; using global::System.Collections.Generic; using global::System.Linq; using global::System.Threading.Tasks; using global::Microsoft.AspNetCore.Components; using System.Net.Http; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Components.Routing; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.Web.Virtualization; using Microsoft.JSInterop; using MP_TAB3; using MP_TAB3.Shared; using MP_TAB3.Components; using MP.Data; using MP.Data.DbModels; using MP.Data.DTO; using MP.Data.Services; using Newtonsoft.Json; using NLog; namespace MP_TAB3.Components { public partial class NotesEditor { #region Public Properties [Parameter] public bool CanSave { get; set; } = false; [Parameter] public EventCallback E_relData { get; set; } [Parameter] public CommentiModel? CurrComm { set { if (value != null) { DateSel = value.InizioStato; UserComment = value.Value; ShowBtn = false; } } } [Parameter] public EventCallback E_CommRec { get; set; } [Parameter] public EventCallback E_DateSel { get; set; } [Parameter] public EventCallback E_Updated { get; set; } [Parameter] public MappaStatoExplModel? RecMSE { get; set; } = null; [Parameter] public string Title { get; set; } = "NA"; [Parameter] public EventListModel? CurrRecord { set { if (value != null) { DateSel = value.InizioStato ?? DateTime.Now; UserComment = value.Value; ShowBtn = false; } } } #endregion Public Properties #region Protected Properties protected DateTime DateSel { get => dateSel.Round(TimeSpan.FromSeconds(1)); set { if (dateSel != value) { dateSel = value; E_DateSel.InvokeAsync(value).ConfigureAwait(false); } } } [Inject] protected MessageService MServ { get; set; } = null!; [Inject] protected SharedMemService SMServ { get; set; } = null!; [Inject] protected TabDataService TabServ { get; set; } = null!; #endregion Protected Properties #region Protected Methods protected async Task doCancel() { await E_relData.InvokeAsync(true); DoReset(); } /// /// Forza salvataggio impostando data-ora /// /// /// public async Task ForceSave(DateTime dtRif) { DateSel = dtRif; // ora salvo await doSave(); } protected async Task doSave() { // registro evento EventListModel newRec = new EventListModel() { IdxMacchina = IdxMacc, InizioStato = DateSel, IdxTipo = idxTipoCommento, CodArticolo = CodArt, Value = UserComment, MatrOpr = MatrOpr, pallet = "-" }; // elimino vecchio se c'è... await TabServ.EvListDelete(IdxMacc, DateSel, idxTipoCommento); // se c'è un commento lo inserisco if (!string.IsNullOrEmpty(UserComment)) { // inserisco await TabServ.EvListInsert(newRec, MP.Core.Objects.Enums.tipoInputEvento.commento); } // reset await E_relData.InvokeAsync(true); DoReset(); //StateHasChanged(); //ToggleCtrl(); } protected override void OnInitialized() { idxTipoCommento = SMServ.GetConfInt("idxTipoCommento"); dltMinRealtime = SMServ.GetConfInt("dltMinRealtime"); } protected override async Task OnAfterRenderAsync(bool firstRender) { // verifico SE ci sia una data da usare... bool hasDtRif = await MServ.SessHasVal(MessageService.KeyCommDtRif); if (hasDtRif) { await Task.Delay(1); ShowBtn = false; UserComment = await MServ.CommentoValGet(true); DateSel = await MServ.CommentoDtRifGet(true); await InvokeAsync(StateHasChanged); } } protected int dltMinRealtime = 1; /// /// Determina se insert sia Realtime o batch con DataOra (in base a diff tra DataOra /// selezionata e realtime, se superiore ad X minuti NON � realtime) /// protected bool insRealtime { get { bool answ = true; try { if (Math.Abs(DateSel.Subtract(DateTime.Now).TotalMinutes) > dltMinRealtime) { answ = false; } } catch { } return answ; } } protected void ToggleCtrl() { ShowBtn = !ShowBtn; if (ShowBtn) { DateSel = DateTime.Now; } } #endregion Protected Methods #region Private Fields private int idxTipoCommento = 0; #endregion Private Fields #region Private Properties private string CodArt { get => RecMSE != null ? RecMSE.CodArticolo : ""; } private DateTime dateSel { get; set; } = DateTime.Now; private string IdxMacc { get => RecMSE != null ? RecMSE.IdxMacchina : ""; } private int MatrOpr { get => MServ.MatrOpr; } private bool ShowBtn { get; set; } = true; private string userComment { get; set; } = ""; private string UserComment { get => userComment.Trim(); set { if (userComment != value) { userComment = value; E_CommRec.InvokeAsync(value).ConfigureAwait(false); } } } #endregion Private Properties #region Private Methods private void DoReset() { UserComment = ""; DateSel = DateTime.Now; //CurrComm = null; ShowBtn = true; //StateHasChanged(); } #endregion Private Methods } }