Files
cms_thermo_active/Step/Controllers/WebApi/ScadaController.cs
T
Lucio Maranta 0b63a0e0e6 WIP Scada
Added subribe
Added thread
Fix & refactor
2019-01-14 11:30:53 +01:00

98 lines
3.0 KiB
C#

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<DTOScadaModel> values);
if (cmsError.IsError())
return BadRequest(cmsError.localizationKey);
ScadaDataAndSchema data = new ScadaDataAndSchema()
{
schemes = ProductionScadaSchema,
values = values
};
return Ok(data);
}
}
public class ScadaDataAndSchema
{
public List<ScadaSchemaModel> schemes;
public List<DTOScadaModel> values;
}
}
}