using FspWebApp.Entity.Service; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.IO; using System.Text.RegularExpressions; namespace FspWebApp.Controllers { [Route("api/[controller]")] [ApiController] public class FuelProductController : ControllerBase { #region Fields private static NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("FspWebApp"); #endregion // GET api/fuelproduct [HttpGet] public ActionResult Get() { object fuelProducts = null; try { fuelProducts = JsonConvert.SerializeObject(DevicesConfig.fuelProducts); } catch { } return fuelProducts; } // POST api/fuelproduct [HttpPost] public ActionResult Post([FromBody] object value) { try { logger.Info($"Fuel Product Change {value}"); FuelProduct.onChangeFuelProduct(value); string bcpn = ""; // "1:93#;2:98#;3:92#;5:95#;6:0#;" var nozzleDic = new StringDictionary(); var fuelProducts = JsonConvert.DeserializeObject>(value.ToString()); foreach (FuelProduct val in fuelProducts.Values) { bcpn += val.Barcode + ":" + val.FuelName + ";"; foreach (int nozzle in val.CurrentNozzles) { nozzleDic[nozzle.ToString()] = val.Barcode.ToString(); } } logger.Info($"rawProductNameToPosProductNameStr {bcpn}"); string path = Directory.GetCurrentDirectory(); string filename = "settings.xml"; string allText = System.IO.File.ReadAllText(Path.Combine(path, filename)); string pattern = "name=\"rawProductNameToPosProductNameStr\" value=\"{0}\""; var reg = new Regex(string.Format(pattern, "(.+)")); string modified = reg.Replace(allText, string.Format(pattern, bcpn)); foreach (string siteLevelNozzleId in nozzleDic.Keys) { pattern = "siteLevelNozzleId=\"{0}\" productBarcode=\"{1}\""; reg = new Regex(string.Format(pattern, siteLevelNozzleId, "(\\d+)")); modified = reg.Replace(modified, string.Format(pattern, siteLevelNozzleId, nozzleDic[siteLevelNozzleId])); } System.IO.File.WriteAllText(Path.Combine(path, filename), modified); } catch (Exception ex) { logger.Info($"Post ChangeFuelProduct {ex}"); return new { Name = "FuelProduct", Value = false }; } return new { Name = "FuelProduct", Value = true }; } } }