FuelProductController.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using FspWebApp.Entity.Service;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Collections.Specialized;
  7. using System.IO;
  8. using System.Text.RegularExpressions;
  9. namespace FspWebApp.Controllers
  10. {
  11. [Route("api/[controller]")]
  12. [ApiController]
  13. public class FuelProductController : ControllerBase
  14. {
  15. #region Fields
  16. private static NLog.Logger logger = NLog.LogManager.LoadConfiguration("NLog.config").GetLogger("FspWebApp");
  17. #endregion
  18. // GET api/fuelproduct
  19. [HttpGet]
  20. public ActionResult<object> Get()
  21. {
  22. object fuelProducts = null;
  23. try
  24. {
  25. fuelProducts = JsonConvert.SerializeObject(DevicesConfig.fuelProducts);
  26. }
  27. catch { }
  28. return fuelProducts;
  29. }
  30. // POST api/fuelproduct
  31. [HttpPost]
  32. public ActionResult<object> Post([FromBody] object value)
  33. {
  34. try
  35. {
  36. logger.Info($"Fuel Product Change {value}");
  37. FuelProduct.onChangeFuelProduct(value);
  38. string bcpn = ""; // "1:93#;2:98#;3:92#;5:95#;6:0#;"
  39. var nozzleDic = new StringDictionary();
  40. var fuelProducts = JsonConvert.DeserializeObject<Dictionary<int, FuelProduct>>(value.ToString());
  41. foreach (FuelProduct val in fuelProducts.Values)
  42. {
  43. bcpn += val.Barcode + ":" + val.FuelName + ";";
  44. foreach (int nozzle in val.CurrentNozzles)
  45. {
  46. nozzleDic[nozzle.ToString()] = val.Barcode.ToString();
  47. }
  48. }
  49. logger.Info($"rawProductNameToPosProductNameStr {bcpn}");
  50. string path = Directory.GetCurrentDirectory();
  51. string filename = "settings.xml";
  52. string allText = System.IO.File.ReadAllText(Path.Combine(path, filename));
  53. string pattern = "name=\"rawProductNameToPosProductNameStr\" value=\"{0}\"";
  54. var reg = new Regex(string.Format(pattern, "(.+)"));
  55. string modified = reg.Replace(allText, string.Format(pattern, bcpn));
  56. foreach (string siteLevelNozzleId in nozzleDic.Keys)
  57. {
  58. pattern = "siteLevelNozzleId=\"{0}\" productBarcode=\"{1}\"";
  59. reg = new Regex(string.Format(pattern, siteLevelNozzleId, "(\\d+)"));
  60. modified = reg.Replace(modified, string.Format(pattern, siteLevelNozzleId, nozzleDic[siteLevelNozzleId]));
  61. }
  62. System.IO.File.WriteAllText(Path.Combine(path, filename), modified);
  63. }
  64. catch (Exception ex)
  65. {
  66. logger.Info($"Post ChangeFuelProduct {ex}");
  67. return new { Name = "FuelProduct", Value = false };
  68. }
  69. return new { Name = "FuelProduct", Value = true };
  70. }
  71. }
  72. }