using CMS_CORE_Library.Models; using Step.Model.DTOModels.Scada; using Step.NC; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Http; using static Step.Config.ServerConfig; namespace Step.Controllers.WebApi { [RoutePrefix("api/scada")] public class ScadaController : ApiController { [Route("list")] public IHttpActionResult GetScadaList() { using (NcHandler ncHandler = new NcHandler()) { return Ok(ConfiguredScadaSchema); } } [Route("subscribe/{scadaId:int}")] public IHttpActionResult SubscribeScada(int scadaId) { // Select schema ScadaSchemaModel selectedScadaSchema = ConfiguredScadaSchema .Where(x => x.Id == scadaId) .FirstOrDefault(); if (selectedScadaSchema == null) return BadRequest(); // Add to the subscriber list SubscribedScada.Add(selectedScadaSchema); using (NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); // Read the selected scada data CmsError cmsError = ncHandler.ReadScadaData(selectedScadaSchema, out DTOScadaModel values); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); return Ok(values); } } [Route("unsubscribe/{scadaId:int}")] public IHttpActionResult UnsubscribeScada(int scadaId) { using (NcHandler ncHandler = new NcHandler()) { // Find scada by id ScadaSchemaModel scadaToRemove = SubscribedScada .Where(x => x.Id == scadaId) .FirstOrDefault(); if (scadaToRemove == null) return BadRequest(); // Remove from the subiscriber list SubscribedScada.Remove(scadaToRemove); return Ok(); } } [Route("production")] public IHttpActionResult GetProductionPageList() { using(NcHandler ncHandler = new NcHandler()) { ncHandler.Connect(); CmsError cmsError = ncHandler.ReadScadasData(ProductionScadaSchema, out List values); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); ScadaDataAndSchema data = new ScadaDataAndSchema() { schemes = ProductionScadaSchema, values = values }; return Ok(data); } } public class ScadaDataAndSchema { public List schemes; public List values; } } }