using AppData; using Newtonsoft.Json; using NKC_SDK; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web.Http; namespace NKC_WF.Controllers { /// /// Classe controller per gestione eventi stats /// Riceve una lista di 1..n eventi con /// * CodMacchina /// * DataOra /// * Codice (Evento/stato) - codice 00 = KeepAlive, imposto dataora/drift /// * Valore/Descrizione /// /// e la salva su DB per successiva elaborazione /// public class MachineStatController : ApiController { #region Protected Fields /// /// oggetto static/singleton per fare chiamate sul datalayer /// protected DataLayer DLMan = new DataLayer(); /// /// Codice macchina (HARD CODED) /// protected string machine = "WRK000"; #endregion Protected Fields #region Public Methods /// /// Restituisce un array di stati macchina correnti /// GET: api/MachineStat /// /// [HttpGet] public MachineStatData Get() { MachineStatData answ = new MachineStatData(); try { answ = ComLib.prodMachStateDataGet(machine); } catch (Exception exc) { Log.Instance.Error($"EXCEPTION api/MachineStat | get{Environment.NewLine}{exc}"); } // se vuoto metto 1 finto... if (answ == null) { answ = new MachineStatData() { Machine = machine }; } return answ; } /// /// Fornisce il record dello stato macchina corrente /// GET: api/MachineStat/WRK001 /// /// /// [HttpGet] public MachineStatData Get(string id) { MachineStatData answ = new MachineStatData() { Machine = id }; try { answ = ComLib.prodMachStateDataGet(id); } catch (Exception exc) { Log.Instance.Error($"EXCEPTION api/MachineStat | get({id}){Environment.NewLine}{exc}"); } return answ; } /************************************ * METODI PUT * * per abilitare è necessario agire sulla conf di IIS: * * - modificare il file applicationHost.config che si trova in C:\Windows\System32\inetsrv\config * - disinstallare webDav oppure commentare le righe * * * * - aggiungere PUT/DELETE a handler: * * * **************************************/ /// /// Effettua la chiamata di update x un set di dati delle macchine /// /// Oggetto con macchina + Elenco record da aggiornare // PUT: api/Sheet [HttpPut] public void Put(MachineStatData updatedInfo) { // NB. decodifico direttamente come oggetto, vedere qui: // https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api // https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers if (updatedInfo != null) { // mi limito a chiamnare procedura di update... ComLib.prodMachStateDataInsert(updatedInfo); } } #endregion Public Methods } }