using AppData; using Newtonsoft.Json; using NKC_SDK; 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 List Get() { List answ = new List(); try { answ = ComLib.prodMachStateDataGet(); } catch { } // se vuoto metto 1 finto... if (answ.Count == 0) { var demoItem = new MachineStatData(); demoItem.Records.Add(new MachineStatRecord()); answ.Add(demoItem); } return answ; } /// /// Fornisce il record dello stato macchina corrente /// GET: api/MachineStat/WRK001 /// /// /// [HttpGet] public MachineStatData Get(string id) { MachineStatData answ = new MachineStatData(); try { var listState = ComLib.prodMachStateDataGet(); if (listState != null && listState.Count > 0) { answ = listState.Where(x => x.Machine == id).FirstOrDefault(); } } catch { } 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/5 [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 } }