0b63a0e0e6
Added subribe Added thread Fix & refactor
98 lines
3.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|