فهرست منبع

fix chức năng export

student 1 ماه پیش
والد
کامیت
54d0a51aee
100فایلهای تغییر یافته به همراه7571 افزوده شده و 43 حذف شده
  1. 368 1
      ApiWeb/ApiProcessToken/Controllers/balance.cs
  2. 102 1
      ApiWeb/ApiProcessToken/Controllers/systemApi.cs
  3. 25 26
      ApiWeb/ApiProcessToken/Models/DataAccess.cs
  4. 227 6
      ApiWeb/ApiProcessToken/Models/banlance/balanceDataAccess.cs
  5. 79 0
      ApiWeb/ApiProcessToken/Models/banlance/getListCommon.cs
  6. 7 4
      ApiWeb/ApiProcessToken/Models/systemDataAccess.cs
  7. 38 0
      ApiWeb/ApiProcessToken/Models/systemUserDataAccess.cs
  8. 2 3
      ApiWeb/ApiProcessToken/Process/AdminUserCheckService.cs
  9. 1 1
      ApiWeb/ApiProcessToken/appsettings.json
  10. 1 1
      ApiWeb/ApiProcessToken/publish/appsettings.json
  11. 1010 0
      Balance_pkg
  12. 32 0
      ConvertLog/ConvertLog.csproj
  13. 8 0
      ConvertLog/Program.cs
  14. 18 0
      ConvertLog/Properties/PublishProfiles/FolderProfile.pubxml
  15. 27 0
      ConvertLog/appsettings.json
  16. 323 0
      ConvertLog/business/DataAccess.cs
  17. 279 0
      ConvertLog/common/Common.cs
  18. 1091 0
      ConvertLog/common/CommonObj.cs
  19. 152 0
      ConvertLog/common/ConfigData.cs
  20. 219 0
      ConvertLog/common/Queue.cs
  21. BIN
      ConvertLog/convert.tar
  22. 20 0
      ConvertLog/log4net.config
  23. BIN
      ConvertLog/publish/CommonObj.dll
  24. BIN
      ConvertLog/publish/CommonObj.pdb
  25. BIN
      ConvertLog/publish/ConvertLog
  26. 3528 0
      ConvertLog/publish/ConvertLog.deps.json
  27. BIN
      ConvertLog/publish/ConvertLog.dll
  28. BIN
      ConvertLog/publish/ConvertLog.pdb
  29. 14 0
      ConvertLog/publish/ConvertLog.runtimeconfig.json
  30. BIN
      ConvertLog/publish/Microsoft.Bcl.AsyncInterfaces.dll
  31. BIN
      ConvertLog/publish/Microsoft.CSharp.dll
  32. BIN
      ConvertLog/publish/Microsoft.Extensions.Configuration.Abstractions.dll
  33. BIN
      ConvertLog/publish/Microsoft.Extensions.Configuration.FileExtensions.dll
  34. BIN
      ConvertLog/publish/Microsoft.Extensions.Configuration.Json.dll
  35. BIN
      ConvertLog/publish/Microsoft.Extensions.Configuration.dll
  36. BIN
      ConvertLog/publish/Microsoft.Extensions.FileProviders.Abstractions.dll
  37. BIN
      ConvertLog/publish/Microsoft.Extensions.FileProviders.Physical.dll
  38. BIN
      ConvertLog/publish/Microsoft.Extensions.FileSystemGlobbing.dll
  39. BIN
      ConvertLog/publish/Microsoft.Extensions.Primitives.dll
  40. BIN
      ConvertLog/publish/Microsoft.VisualBasic.Core.dll
  41. BIN
      ConvertLog/publish/Microsoft.VisualBasic.dll
  42. BIN
      ConvertLog/publish/Microsoft.Win32.Primitives.dll
  43. BIN
      ConvertLog/publish/Microsoft.Win32.Registry.dll
  44. BIN
      ConvertLog/publish/Microsoft.Win32.SystemEvents.dll
  45. BIN
      ConvertLog/publish/Newtonsoft.Json.dll
  46. BIN
      ConvertLog/publish/Oracle.ManagedDataAccess.dll
  47. BIN
      ConvertLog/publish/Pipelines.Sockets.Unofficial.dll
  48. BIN
      ConvertLog/publish/StackExchange.Redis.dll
  49. BIN
      ConvertLog/publish/System.AppContext.dll
  50. BIN
      ConvertLog/publish/System.Buffers.dll
  51. BIN
      ConvertLog/publish/System.Collections.Concurrent.dll
  52. BIN
      ConvertLog/publish/System.Collections.Immutable.dll
  53. BIN
      ConvertLog/publish/System.Collections.NonGeneric.dll
  54. BIN
      ConvertLog/publish/System.Collections.Specialized.dll
  55. BIN
      ConvertLog/publish/System.Collections.dll
  56. BIN
      ConvertLog/publish/System.ComponentModel.Annotations.dll
  57. BIN
      ConvertLog/publish/System.ComponentModel.DataAnnotations.dll
  58. BIN
      ConvertLog/publish/System.ComponentModel.EventBasedAsync.dll
  59. BIN
      ConvertLog/publish/System.ComponentModel.Primitives.dll
  60. BIN
      ConvertLog/publish/System.ComponentModel.TypeConverter.dll
  61. BIN
      ConvertLog/publish/System.ComponentModel.dll
  62. BIN
      ConvertLog/publish/System.Configuration.ConfigurationManager.dll
  63. BIN
      ConvertLog/publish/System.Configuration.dll
  64. BIN
      ConvertLog/publish/System.Console.dll
  65. BIN
      ConvertLog/publish/System.Core.dll
  66. BIN
      ConvertLog/publish/System.Data.Common.dll
  67. BIN
      ConvertLog/publish/System.Data.DataSetExtensions.dll
  68. BIN
      ConvertLog/publish/System.Data.dll
  69. BIN
      ConvertLog/publish/System.Diagnostics.Contracts.dll
  70. BIN
      ConvertLog/publish/System.Diagnostics.Debug.dll
  71. BIN
      ConvertLog/publish/System.Diagnostics.DiagnosticSource.dll
  72. BIN
      ConvertLog/publish/System.Diagnostics.FileVersionInfo.dll
  73. BIN
      ConvertLog/publish/System.Diagnostics.PerformanceCounter.dll
  74. BIN
      ConvertLog/publish/System.Diagnostics.Process.dll
  75. BIN
      ConvertLog/publish/System.Diagnostics.StackTrace.dll
  76. BIN
      ConvertLog/publish/System.Diagnostics.TextWriterTraceListener.dll
  77. BIN
      ConvertLog/publish/System.Diagnostics.Tools.dll
  78. BIN
      ConvertLog/publish/System.Diagnostics.TraceSource.dll
  79. BIN
      ConvertLog/publish/System.Diagnostics.Tracing.dll
  80. BIN
      ConvertLog/publish/System.DirectoryServices.Protocols.dll
  81. BIN
      ConvertLog/publish/System.DirectoryServices.dll
  82. BIN
      ConvertLog/publish/System.Drawing.Common.dll
  83. BIN
      ConvertLog/publish/System.Drawing.Primitives.dll
  84. BIN
      ConvertLog/publish/System.Drawing.dll
  85. BIN
      ConvertLog/publish/System.Dynamic.Runtime.dll
  86. BIN
      ConvertLog/publish/System.Formats.Asn1.dll
  87. BIN
      ConvertLog/publish/System.Globalization.Calendars.dll
  88. BIN
      ConvertLog/publish/System.Globalization.Extensions.dll
  89. BIN
      ConvertLog/publish/System.Globalization.dll
  90. BIN
      ConvertLog/publish/System.IO.Compression.Brotli.dll
  91. BIN
      ConvertLog/publish/System.IO.Compression.FileSystem.dll
  92. BIN
      ConvertLog/publish/System.IO.Compression.ZipFile.dll
  93. BIN
      ConvertLog/publish/System.IO.Compression.dll
  94. BIN
      ConvertLog/publish/System.IO.FileSystem.AccessControl.dll
  95. BIN
      ConvertLog/publish/System.IO.FileSystem.DriveInfo.dll
  96. BIN
      ConvertLog/publish/System.IO.FileSystem.Primitives.dll
  97. BIN
      ConvertLog/publish/System.IO.FileSystem.Watcher.dll
  98. BIN
      ConvertLog/publish/System.IO.FileSystem.dll
  99. BIN
      ConvertLog/publish/System.IO.IsolatedStorage.dll
  100. BIN
      ConvertLog/publish/System.IO.MemoryMappedFiles.dll

+ 368 - 1
ApiWeb/ApiProcessToken/Controllers/balance.cs

@@ -34,6 +34,67 @@ namespace ApiProcess.Controllers
             this.memoryCache = memoryCache;
         }
 
+        private bool CheckWebToken(JObject userObj, Response response, out string language)
+        {
+            language = Convert.ToString(userObj["language"]);
+            if (string.IsNullOrEmpty(language)) language = "-1";
+
+            string token = Convert.ToString(userObj["token"]);
+            string channel = Convert.ToString(userObj["channel"]);
+            string RedisIp = Common.GetValuesAppSetting("webConfig", "RedisIp");
+            string RedisPort = Common.GetValuesAppSetting("webConfig", "RedisPort");
+            string RedisPass = Common.GetValuesAppSetting("webConfig", "RedisPass");
+            var clientIp = HttpContext.Connection.RemoteIpAddress.ToString();
+
+            redisConnection _redis;
+            memoryCache.TryGetValue("redis", out _redis);
+            if (_redis == null)
+            {
+                var cacheExpiryOptions = new MemoryCacheEntryOptions
+                {
+                    AbsoluteExpiration = DateTime.Now.AddMonths(12),
+                    Priority = CacheItemPriority.High,
+                    SlidingExpiration = TimeSpan.FromMinutes(2),
+                    Size = 1024,
+                };
+                _redis = new redisConnection(RedisIp, RedisPort, RedisPass);
+                _redis.connet();
+                memoryCache.Set("redis", _redis, cacheExpiryOptions);
+            }
+            if (!_redis.isConnet())
+            {
+                if (!_redis.connet())
+                {
+                    logger.Info("Connect to redis false");
+                    response.responseCode = "-2";
+                    response.responseMessage = "System Update";
+                    return false;
+                }
+                else
+                {
+                    var cacheExpiryOptions = new MemoryCacheEntryOptions
+                    {
+                        AbsoluteExpiration = DateTime.Now.AddMonths(12),
+                        Priority = CacheItemPriority.High,
+                        SlidingExpiration = TimeSpan.FromMinutes(2),
+                        Size = 1024,
+                    };
+                    memoryCache.Set("redis", _redis, cacheExpiryOptions);
+                }
+            }
+
+            tokenObj _tokenObj = null;
+            if (!CommonFunction.checkToken(clientIp, token, channel, _redis, logger, out _tokenObj))
+            {
+                logger.Info("Authen token false");
+                response.responseCode = "35";
+                response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language);
+                return false;
+            }
+
+            return true;
+        }
+
 
 
         // {"users":"123","pass":"123"}
@@ -188,6 +249,126 @@ namespace ApiProcess.Controllers
             return Ok(response);
         }
 
+        [HttpPost]
+        public IActionResult hiddenChangeStatus([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income hiddenChangeStatus :" + sendData.ToString());
+            Response response = new Response();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+
+                string users = Convert.ToString(userObj["users"]);
+                string type = Convert.ToString(userObj["type"]);
+                string id = Convert.ToString(userObj["id"]);
+                string status = Convert.ToString(userObj["status"]);
+
+                if (string.IsNullOrEmpty(users)) users = "-1";
+                if (string.IsNullOrEmpty(type)) type = "-1";
+                if (string.IsNullOrEmpty(id)) id = "-1";
+                if (string.IsNullOrEmpty(status)) status = "-1";
+
+                string language;
+                if (!CheckWebToken(userObj, response, out language))
+                {
+                    logger.Info("hiddenChangeStatus response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                DataSet ds_regist = balanceDataAccess.hiddenChangeStatus(type, id, status, users);
+
+                logger.Info("Call database hiddenChangeStatus success:");
+                if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    response.responseCode = ds_regist.Tables[0].Rows[0]["status"].ToString();
+                    response.responseMessage = ds_regist.Tables[0].Rows[0]["msg"].ToString();
+                }
+                else
+                {
+                    response.responseCode = "-1";
+                    response.responseMessage = "Err unknow";
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+            logger.Info("Responase to web: " + response.ToString());
+            return Ok(response);
+        }
+
+        [HttpPost]
+        public IActionResult hiddenCamGetList([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income hiddenCamGetList :" + sendData.ToString());
+            campaignObjList response = new campaignObjList();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+
+                string users = Convert.ToString(userObj["users"]);
+                string id = Convert.ToString(userObj["id"]);
+                string isDefault = Convert.ToString(userObj["isDefault"]);
+                string isMyservice = Convert.ToString(userObj["isMyservice"]);
+                string status = Convert.ToString(userObj["status"]);
+                string name = Convert.ToString(userObj["name"]);
+                string code = Convert.ToString(userObj["code"]);
+                string fromDate = Convert.ToString(userObj["fromDate"]);
+                string toDate = Convert.ToString(userObj["toDate"]);
+                string order = Convert.ToString(userObj["order"]);
+                string rowsOnPage = Convert.ToString(userObj["rowsOnPage"]);
+                string seqPage = Convert.ToString(userObj["seqPage"]);
+
+                if (string.IsNullOrEmpty(name)) name = "-1";
+                if (string.IsNullOrEmpty(code)) code = "-1";
+                if (string.IsNullOrEmpty(fromDate)) fromDate = "-1";
+                if (string.IsNullOrEmpty(toDate)) toDate = "-1";
+                if (string.IsNullOrEmpty(order)) order = "asc";
+                if (string.IsNullOrEmpty(rowsOnPage)) rowsOnPage = "1000000000000";
+                if (string.IsNullOrEmpty(seqPage)) seqPage = "1";
+                if (string.IsNullOrEmpty(isDefault)) isDefault = "-1";
+                if (string.IsNullOrEmpty(isMyservice)) isMyservice = "-1";
+                if (string.IsNullOrEmpty(status)) status = "-1";
+                if (string.IsNullOrEmpty(users)) users = "-1";
+                if (string.IsNullOrEmpty(id)) id = "-1";
+
+                string language;
+                if (!CheckWebToken(userObj, response, out language))
+                {
+                    logger.Info("hiddenCamGetList response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                string _rowsOnPage, _seqPage, _totalPage;
+                List<campaignObj> list = getListCommon.getListHiddenCam(id, users, name, code, fromDate, toDate, order, rowsOnPage, seqPage, status,
+                    out _rowsOnPage, out _seqPage, out _totalPage, isDefault, isMyservice);
+
+                response.responseCode = "0";
+                response.responseMessage = "Success";
+                response.rowsOnPage = _rowsOnPage;
+                response.seqPage = _seqPage;
+                response.totalPage = _totalPage;
+                response.list = list;
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+
+            logger.Info("Responase to web: " + response.ToString());
+            return Ok(response);
+        }
+
 
         //{"id":"2","users":"quangbh","key":"jqB3Vi1fIlu+9a2ODQs65w=="}
         [HttpPost]
@@ -388,7 +569,7 @@ namespace ApiProcess.Controllers
 
                 
                 if (string.IsNullOrEmpty(code)) code = "-1";
-               if (string.IsNullOrEmpty(name)) name = "-1";
+                if (string.IsNullOrEmpty(name)) name = "-1";
                 if (string.IsNullOrEmpty(phone)) phone = "-1";
                 if (string.IsNullOrEmpty(email)) email = "-1";
                 if (string.IsNullOrEmpty(address)) address = "-1";
@@ -4626,6 +4807,74 @@ namespace ApiProcess.Controllers
             return Ok(response);
         }
 
+        [HttpPost]
+        public IActionResult hiddenCamInsert([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income hiddenCamInsert :" + sendData.ToString());
+            campaignInsert response = new campaignInsert();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+                string code = Convert.ToString(userObj["code"]);
+                string name = Convert.ToString(userObj["name"]);
+                string fromDate = Convert.ToString(userObj["fromDate"]);
+                string toDate = Convert.ToString(userObj["toDate"]);
+                string fromHour = Convert.ToString(userObj["fromHour"]);
+                string toHour = Convert.ToString(userObj["toHour"]);
+                string rule = Convert.ToString(userObj["rule"]);
+                string priority = Convert.ToString(userObj["priority"]);
+                string balanceId = Convert.ToString(userObj["balanceId"]);
+                string expireDateId = Convert.ToString(userObj["expireDateId"]);
+                string status = Convert.ToString(userObj["status"]);
+                string note = Convert.ToString(userObj["note"]);
+                string numberDisplay = Convert.ToString(userObj["numberDisplay"]);
+                string addType = Convert.ToString(userObj["addType"]);
+                string title = Convert.ToString(userObj["title"]);
+                string isDefault = Convert.ToString(userObj["isDefault"]);
+                string isMyservice = Convert.ToString(userObj["isMyservice"]);
+                string users = Convert.ToString(userObj["users"]);
+
+                if (string.IsNullOrEmpty(code)) code = "-1";
+                if (string.IsNullOrEmpty(numberDisplay)) numberDisplay = "1";
+                if (string.IsNullOrEmpty(addType)) addType = "1";
+                if (string.IsNullOrEmpty(users)) users = "-1";
+
+                string language;
+                if (!CheckWebToken(userObj, response, out language))
+                {
+                    logger.Info("hiddenCamInsert response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                DataSet ds_regist = balanceDataAccess.hiddenCamInsert(code, name, fromDate, toDate, fromHour, toHour, rule,
+                    priority, balanceId, expireDateId, status, note, users, numberDisplay, addType, title, isDefault, isMyservice);
+                logger.Info("Call database hiddenCamInsert success:");
+
+                if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    response.responseCode = ds_regist.Tables[0].Rows[0]["status"].ToString();
+                    response.responseMessage = ds_regist.Tables[0].Rows[0]["msg"].ToString();
+                    response.id = ds_regist.Tables[0].Rows[0]["id"].ToString();
+                }
+                else
+                {
+                    response.responseCode = "-1";
+                    response.responseMessage = "Err unknow";
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+            logger.Info("Responase to web: " + response.ToString());
+            return Ok(response);
+        }
+
 
 
         /*
@@ -4775,6 +5024,75 @@ namespace ApiProcess.Controllers
             return Ok(response);
         }
 
+        [HttpPost]
+        public IActionResult hiddenCamUpdate([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income hiddenCamUpdate :" + sendData.ToString());
+            Response response = new Response();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+                string id = Convert.ToString(userObj["id"]);
+                string code = Convert.ToString(userObj["code"]);
+                string name = Convert.ToString(userObj["name"]);
+                string fromDate = Convert.ToString(userObj["fromDate"]);
+                string toDate = Convert.ToString(userObj["toDate"]);
+                string fromHour = Convert.ToString(userObj["fromHour"]);
+                string toHour = Convert.ToString(userObj["toHour"]);
+                string rule = Convert.ToString(userObj["rule"]);
+                string priority = Convert.ToString(userObj["priority"]);
+                string balanceId = Convert.ToString(userObj["balanceId"]);
+                string expireDateId = Convert.ToString(userObj["expireDateId"]);
+                string status = Convert.ToString(userObj["status"]);
+                string note = Convert.ToString(userObj["note"]);
+                string type = Convert.ToString(userObj["type"]);
+                string numberDisplay = Convert.ToString(userObj["numberDisplay"]);
+                string addType = Convert.ToString(userObj["addType"]);
+                string title = Convert.ToString(userObj["title"]);
+                string isDefault = Convert.ToString(userObj["isDefault"]);
+                string isMyservice = Convert.ToString(userObj["isMyservice"]);
+                string users = Convert.ToString(userObj["users"]);
+
+                if (string.IsNullOrEmpty(id)) id = "-1";
+                if (string.IsNullOrEmpty(type)) type = "0";
+                if (string.IsNullOrEmpty(numberDisplay)) numberDisplay = "1";
+                if (string.IsNullOrEmpty(addType)) addType = "1";
+                if (string.IsNullOrEmpty(users)) users = "-1";
+
+                string language;
+                if (!CheckWebToken(userObj, response, out language))
+                {
+                    logger.Info("hiddenCamUpdate response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                DataSet ds_regist = balanceDataAccess.hiddenCamUpdate(id, code, name, fromDate, toDate, fromHour, toHour, rule,
+                    priority, balanceId, expireDateId, status, note, users, type, numberDisplay, addType, title, isDefault, isMyservice);
+                logger.Info("Call database hiddenCamUpdate success:");
+                if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    response.responseCode = ds_regist.Tables[0].Rows[0]["status"].ToString();
+                    response.responseMessage = ds_regist.Tables[0].Rows[0]["msg"].ToString();
+                }
+                else
+                {
+                    response.responseCode = "-1";
+                    response.responseMessage = "Err unknow";
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+            logger.Info("Responase to web: " + response.ToString());
+            return Ok(response);
+        }
+
 
 
 
@@ -4899,6 +5217,55 @@ namespace ApiProcess.Controllers
             return Ok(response);
         }
 
+        [HttpPost]
+        public IActionResult hiddenCamCopy([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income hiddenCamCopy :" + sendData.ToString());
+            campaignInsert response = new campaignInsert();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+                string id = Convert.ToString(userObj["id"]);
+                string users = Convert.ToString(userObj["users"]);
+
+                if (string.IsNullOrEmpty(id)) id = "-1";
+                if (string.IsNullOrEmpty(users)) users = "-1";
+
+                string language;
+                if (!CheckWebToken(userObj, response, out language))
+                {
+                    logger.Info("hiddenCamCopy response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                DataSet ds_regist = balanceDataAccess.hiddenCamCopy(id);
+                logger.Info("Call database hiddenCamCopy success:");
+
+                if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    response.responseCode = ds_regist.Tables[0].Rows[0]["status"].ToString();
+                    response.responseMessage = ds_regist.Tables[0].Rows[0]["msg"].ToString();
+                    response.id = ds_regist.Tables[0].Rows[0]["id"].ToString();
+                }
+                else
+                {
+                    response.responseCode = "-1";
+                    response.responseMessage = "Err unknow";
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+            logger.Info("Responase to web: " + response.ToString());
+            return Ok(response);
+        }
+
 
 
         //{"id":"2","users":"quangbh","key":"jqB3Vi1fIlu+9a2ODQs65w=="}

+ 102 - 1
ApiWeb/ApiProcessToken/Controllers/systemApi.cs

@@ -539,7 +539,7 @@ namespace ApiProcess.Controllers
                     return Ok(response);
                 }
 
-                DataSet ds_regist = systemUserDataAccess.SYS_USER_WEB_CMS_UPDATE(id, username, password, role, countryCode, isLock, timeLock, totalFalse, note, users);
+                DataSet ds_regist = systemUserDataAccess.SYS_USER_WEB_CMS_UPDATE(id, username, ResfullApi.Models.CustomEncryption.Encrypt(password), role, countryCode, isLock, timeLock, totalFalse, note, users);
                 logger.Info("Call database SYS_USER_WEB_CMS_UPDATE success:");
                 
                 if (ds_regist != null && ds_regist.Tables[0].Rows.Count > 0)
@@ -906,6 +906,107 @@ namespace ApiProcess.Controllers
             return Ok(response);
         }
 
+        [HttpPost]
+        public IActionResult sysFunctionWebCmsDelete([FromBody] dynamic sendData)
+        {
+            logger.Info("New request income sysFunctionWebCmsDelete :" + sendData.ToString());
+            Response response = new Response();
+            response.responseCode = "-1";
+            response.responseMessage = "Err unknow";
+
+            try
+            {
+                var userObj = JObject.Parse(sendData.ToString());
+                string id = Convert.ToString(userObj["id"]);
+                string users = Convert.ToString(userObj["users"]);
+
+                if (string.IsNullOrEmpty(id)) id = "-1";
+                if (string.IsNullOrEmpty(users)) users = "-1";
+
+                string token = Convert.ToString(userObj["token"]);
+                string channel = Convert.ToString(userObj["channel"]);
+                string language = Convert.ToString(userObj["language"]);
+                if (string.IsNullOrEmpty(language)) language = "-1";
+
+                string RedisIp = Common.GetValuesAppSetting("webConfig", "RedisIp");
+                string RedisPort = Common.GetValuesAppSetting("webConfig", "RedisPort");
+                string RedisPass = Common.GetValuesAppSetting("webConfig", "RedisPass");
+                var clientIp = HttpContext.Connection.RemoteIpAddress.ToString();
+
+                //---------------------Lay ra va luu mot redis tu cache-----------------------------
+                redisConnection _redis;
+                memoryCache.TryGetValue("redis", out _redis);
+                if (_redis == null)
+                {
+                    var cacheExpiryOptions = new MemoryCacheEntryOptions
+                    {
+                        AbsoluteExpiration = DateTime.Now.AddMonths(12),
+                        Priority = CacheItemPriority.High,
+                        SlidingExpiration = TimeSpan.FromMinutes(2),
+                        Size = 1024,
+                    };
+                    _redis = new redisConnection(RedisIp, RedisPort, RedisPass);
+                    _redis.connet();
+                    memoryCache.Set("redis", _redis, cacheExpiryOptions);
+                }
+                if (!_redis.isConnet())
+                {
+                    if (!_redis.connet())
+                    {
+                        logger.Info("Connect to redis false");
+                        response.responseCode = "-2";
+                        response.responseMessage = "System Update";
+                        logger.Info("confirmTicket response : " + response.ToString());
+                        return Ok(response);
+                    }
+                    else
+                    {
+                        var cacheExpiryOptions = new MemoryCacheEntryOptions
+                        {
+                            AbsoluteExpiration = DateTime.Now.AddMonths(12),
+                            Priority = CacheItemPriority.High,
+                            SlidingExpiration = TimeSpan.FromMinutes(2),
+                            Size = 1024,
+                        };
+                        memoryCache.Set("redis", _redis, cacheExpiryOptions);
+                    }
+                }
+                //----------------------Ket thuc lay redis tu cache -------------------------------------
+
+                tokenObj _tokenObj = null;
+                if (!CommonFunction.checkToken(clientIp, token, channel, _redis, logger, out _tokenObj))
+                {
+                    logger.Info("Authen token false");
+                    response.responseCode = "35";
+                    response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language);
+                    logger.Info("confirmTicket response : " + response.ToString());
+                    return Ok(response);
+                }
+
+                DataSet ds_regist = systemUserDataAccess.SYS_FUNCTION_WEB_CMS_DELETE(id, users);
+                logger.Info("Call database SYS_FUNCTION_WEB_CMS_DELETE success:");
+                
+                if (ds_regist != null && ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    response.responseCode = ds_regist.Tables[0].Rows[0]["status"].ToString();
+                    response.responseMessage = ds_regist.Tables[0].Rows[0]["msg"].ToString();
+                }
+                else
+                {
+                    response.responseCode = "-1";
+                    response.responseMessage = "Err unknow";
+                }
+            }
+            catch (Exception ex)
+            {
+                logger.Info("exception: " + ex.ToString());
+                response.responseCode = "-2";
+                response.responseMessage = "System upgrade";
+            }
+            logger.Info("Response to web: " + response.ToString());
+            return Ok(response);
+        }
+
         // REPORT COUNT DAILY MANAGEMENT APIs
         [HttpPost]
         public IActionResult sysReportCountDailyGetList([FromBody] dynamic sendData)

+ 25 - 26
ApiWeb/ApiProcessToken/Models/DataAccess.cs

@@ -123,7 +123,11 @@ namespace ResfullApi.Models
             }
             finally
             {
-                connection.Close();
+                if (connection != null)
+                {
+                    connection.Close();
+                    connection.Dispose();
+                }
             }
         }
 
@@ -265,34 +269,29 @@ namespace ResfullApi.Models
         public static DataSet getDataFromProcedure(string sSQL, string sTableName, params OracleParameter[] cmdParms)
         {
             DataSet ds = new DataSet();
-            OracleConnection dbConnection = getPoolingConnection();
-            OracleDataAdapter dataAdapter;
-            dataAdapter = new OracleDataAdapter();
-            try
+            using (OracleConnection dbConnection = getPoolingConnection())
+            using (OracleCommand command = new OracleCommand(sSQL, dbConnection))
+            using (OracleDataAdapter dataAdapter = new OracleDataAdapter(command))
             {
-                dataAdapter.SelectCommand = new OracleCommand(sSQL, dbConnection);
-                dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
+                command.CommandType = CommandType.StoredProcedure;
+                command.CommandTimeout = 120;
                 for (int i = 0; i < cmdParms.Length; i++)
-                    dataAdapter.SelectCommand.Parameters.Add(cmdParms[i]);
-                if (sTableName != "")
+                    command.Parameters.Add(cmdParms[i]);
+
+                try
                 {
-                    dataAdapter.Fill(ds, sTableName);
+                    if (sTableName != "")
+                    {
+                        dataAdapter.Fill(ds, sTableName);
+                    }
+                    else
+                        dataAdapter.Fill(ds);
+                }
+                catch (OracleException)
+                {
+                    OracleConnection.ClearPool(dbConnection);
+                    throw;
                 }
-                else
-                    dataAdapter.Fill(ds);
-            }
-            catch (OracleException loadException)
-            {
-                
-                throw loadException;
-            }
-            catch (Exception unException)
-            {
-                throw unException;
-            }
-            finally
-            {
-                dbConnection.Close();
             }
             return ds;
         }
@@ -314,4 +313,4 @@ namespace ResfullApi.Models
 
     }
 
-}
+}

+ 227 - 6
ApiWeb/ApiProcessToken/Models/banlance/balanceDataAccess.cs

@@ -1464,7 +1464,7 @@ namespace ResfullApi.Models.balance
 
             string str;
             str = "";
-            str = "BALANCE_PKG.CAM_GET";
+            str = "BALANCE_PKG.CAM_NOT_HIDDEN_GET";
             OracleParameter[] parms;
             parms = new OracleParameter[]
                             {
@@ -1500,6 +1500,50 @@ namespace ResfullApi.Models.balance
             return DataAccess.getDataFromProcedure(str, "", parms);
         }
 
+        public static DataSet hiddenCamGetList(string v_id, string v_users, string v_name, string v_code, string v_fromDate, string v_toDate
+            , string v_order, string v_rowsOnPage, string v_seqPage, string v_status, string isDefault, string isMyservice)
+        {
+            return camGetListByProcedure("BALANCE_PKG.HIDDEN_CAM_GET", v_id, v_users, v_name, v_code, v_fromDate, v_toDate,
+                v_order, v_rowsOnPage, v_seqPage, v_status, isDefault, isMyservice);
+        }
+
+        private static DataSet camGetListByProcedure(string str, string v_id, string v_users, string v_name, string v_code, string v_fromDate, string v_toDate
+            , string v_order, string v_rowsOnPage, string v_seqPage, string v_status, string isDefault, string isMyservice)
+        {
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("v_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_users", OracleDbType.NVarchar2),
+                                new OracleParameter("v_name", OracleDbType.NVarchar2),
+                                new OracleParameter("v_code", OracleDbType.NVarchar2),
+                                new OracleParameter("v_fromDate", OracleDbType.NVarchar2),
+                                new OracleParameter("v_toDate", OracleDbType.NVarchar2),
+
+                                new OracleParameter("v_order", OracleDbType.NVarchar2),
+                                new OracleParameter("v_rowsOnPage", OracleDbType.NVarchar2),
+                                new OracleParameter("v_seqPage", OracleDbType.NVarchar2),
+                                new OracleParameter("v_status", OracleDbType.NVarchar2),
+                                new OracleParameter("v_isDefault", OracleDbType.NVarchar2),
+                                new OracleParameter("v_isMyservice", OracleDbType.NVarchar2),
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_id;
+            parms[1].Value = v_users;
+            parms[2].Value = v_name;
+            parms[3].Value = v_code;
+            parms[4].Value = v_fromDate;
+            parms[5].Value = v_toDate;
+            parms[6].Value = v_order;
+            parms[7].Value = v_rowsOnPage;
+            parms[8].Value = v_seqPage;
+            parms[9].Value = v_status;
+            parms[10].Value = isDefault;
+            parms[11].Value = isMyservice;
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
         public static DataSet camGetListCalendar( string v_users, string v_fromDate, string v_toDate,string status)
         {
 
@@ -1591,6 +1635,96 @@ namespace ResfullApi.Models.balance
             return DataAccess.getDataFromProcedure(str, "", parms);
         }
 
+        public static DataSet hiddenChangeStatus(string v_type, string v_id, string v_status, string v_users)
+        {
+
+            string str;
+            str = "";
+            str = "BALANCE_PKG.HIDDEN_CHANGE_STATUS";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("v_type", OracleDbType.NVarchar2),
+                                new OracleParameter("v_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_status", OracleDbType.NVarchar2),
+                                new OracleParameter("v_users", OracleDbType.NVarchar2),
+
+
+
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_type;
+            parms[1].Value = v_id;
+            parms[2].Value = v_status;
+            parms[3].Value = v_users;
+
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
+        public static DataSet hiddenCamInsert(string V_CODE, string V_NAME, string V_FROM_DATE,
+            string V_TO_DATE, string V_FROM_HOUR, string V_TO_HOUR, string V_RULE_ADD,
+             string V_PRIORITY, string V_BALANCE_ID, string V_EXPIRE_DATE_ID, string V_STATUS, string V_NOTE, string V_USERS, string V_NUMBERDIS, string addType, string title, string isDefault, string isMyservice)
+        {
+            return camInsertByProcedure("BALANCE_PKG.HIDDEN_CAM_INSERT", V_CODE, V_NAME, V_FROM_DATE, V_TO_DATE, V_FROM_HOUR, V_TO_HOUR,
+                V_RULE_ADD, V_PRIORITY, V_BALANCE_ID, V_EXPIRE_DATE_ID, V_STATUS, V_NOTE, V_USERS, V_NUMBERDIS, addType, title, isDefault, isMyservice);
+        }
+
+        private static DataSet camInsertByProcedure(string str, string V_CODE, string V_NAME, string V_FROM_DATE,
+            string V_TO_DATE, string V_FROM_HOUR, string V_TO_HOUR, string V_RULE_ADD,
+             string V_PRIORITY, string V_BALANCE_ID, string V_EXPIRE_DATE_ID, string V_STATUS, string V_NOTE, string V_USERS, string V_NUMBERDIS, string addType, string title, string isDefault, string isMyservice)
+        {
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("V_CODE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NAME", OracleDbType.NVarchar2),
+                                new OracleParameter("V_FROM_DATE", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_TO_DATE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_FROM_HOUR", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_TO_HOUR", OracleDbType.NVarchar2),
+                                new OracleParameter("V_RULE_ADD", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_PRIORITY", OracleDbType.NVarchar2),
+                                new OracleParameter("V_BALANCE_ID", OracleDbType.NVarchar2),
+                                new OracleParameter("V_EXPIRE_DATE_ID", OracleDbType.NVarchar2),
+                                new OracleParameter("V_STATUS", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NOTE", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_USERS", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DISPLAY", OracleDbType.NVarchar2),
+                                new OracleParameter("V_ADD_TYPE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TITLE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DEFAULT", OracleDbType.NVarchar2),
+                                new OracleParameter("V_MYSERVICE", OracleDbType.NVarchar2),
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = V_CODE;
+            parms[1].Value = V_NAME;
+            parms[2].Value = V_FROM_DATE;
+            parms[3].Value = V_TO_DATE;
+            parms[4].Value = V_FROM_HOUR;
+            parms[5].Value = V_TO_HOUR;
+            parms[6].Value = V_RULE_ADD;
+            parms[7].Value = V_PRIORITY;
+            parms[8].Value = V_BALANCE_ID;
+            parms[9].Value = V_EXPIRE_DATE_ID;
+            parms[10].Value = V_STATUS;
+            parms[11].Value = V_NOTE;
+            parms[12].Value = V_USERS;
+            parms[13].Value = V_NUMBERDIS;
+            parms[14].Value = addType;
+            parms[15].Value = title;
+            parms[16].Value = isDefault;
+            parms[17].Value = isMyservice;
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
 
 
         public static DataSet camUpdate(string V_ID, string V_CODE, string V_NAME, string V_FROM_DATE,
@@ -1658,6 +1792,73 @@ namespace ResfullApi.Models.balance
             return DataAccess.getDataFromProcedure(str, "", parms);
         }
 
+        public static DataSet hiddenCamUpdate(string V_ID, string V_CODE, string V_NAME, string V_FROM_DATE,
+            string V_TO_DATE, string V_FROM_HOUR, string V_TO_HOUR, string V_RULE_ADD,
+             string V_PRIORITY, string V_BALANCE_ID, string V_EXPIRE_DATE_ID, string V_STATUS, string V_NOTE, string V_USERS, string V_TYPE, string DISPLAY, string addType, string title, string isDefault, string isMyService)
+        {
+            return camUpdateByProcedure("BALANCE_PKG.HIDDEN_CAM_UPDATE", V_ID, V_CODE, V_NAME, V_FROM_DATE, V_TO_DATE, V_FROM_HOUR, V_TO_HOUR,
+                V_RULE_ADD, V_PRIORITY, V_BALANCE_ID, V_EXPIRE_DATE_ID, V_STATUS, V_NOTE, V_USERS, V_TYPE, DISPLAY, addType, title, isDefault, isMyService);
+        }
+
+        private static DataSet camUpdateByProcedure(string str, string V_ID, string V_CODE, string V_NAME, string V_FROM_DATE,
+            string V_TO_DATE, string V_FROM_HOUR, string V_TO_HOUR, string V_RULE_ADD,
+             string V_PRIORITY, string V_BALANCE_ID, string V_EXPIRE_DATE_ID, string V_STATUS, string V_NOTE, string V_USERS, string V_TYPE, string DISPLAY, string addType, string title, string isDefault, string isMyService)
+        {
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+                                new OracleParameter("V_ID", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_CODE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NAME", OracleDbType.NVarchar2),
+                                new OracleParameter("V_FROM_DATE", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_TO_DATE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_FROM_HOUR", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_TO_HOUR", OracleDbType.NVarchar2),
+                                new OracleParameter("V_RULE_ADD", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_PRIORITY", OracleDbType.NVarchar2),
+                                new OracleParameter("V_BALANCE_ID", OracleDbType.NVarchar2),
+                                new OracleParameter("V_EXPIRE_DATE_ID", OracleDbType.NVarchar2),
+                                new OracleParameter("V_STATUS", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NOTE", OracleDbType.NVarchar2),
+
+
+                                new OracleParameter("V_USERS", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TYPE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DISPLAY", OracleDbType.NVarchar2),
+                                new OracleParameter("V_ADD_TYPE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TITLE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DEFAULT", OracleDbType.NVarchar2),
+                                new OracleParameter("V_MYSERVICE", OracleDbType.NVarchar2),
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = V_ID;
+            parms[1].Value = V_CODE;
+            parms[2].Value = V_NAME;
+            parms[3].Value = V_FROM_DATE;
+            parms[4].Value = V_TO_DATE;
+            parms[5].Value = V_FROM_HOUR;
+            parms[6].Value = V_TO_HOUR;
+            parms[7].Value = V_RULE_ADD;
+            parms[8].Value = V_PRIORITY;
+            parms[9].Value = V_BALANCE_ID;
+            parms[10].Value = V_EXPIRE_DATE_ID;
+            parms[11].Value = V_STATUS;
+            parms[12].Value = V_NOTE;
+            parms[13].Value = V_USERS;
+            parms[14].Value = V_TYPE;
+            parms[15].Value = DISPLAY;
+            parms[16].Value = addType;
+            parms[17].Value = title;
+            parms[18].Value = isDefault;
+            parms[19].Value = isMyService;
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
 
 
         public static DataSet camCopy(string id)
@@ -1680,6 +1881,26 @@ namespace ResfullApi.Models.balance
             return DataAccess.getDataFromProcedure(str, "", parms);
         }
 
+        public static DataSet hiddenCamCopy(string id)
+        {
+
+            string str;
+            str = "";
+            str = "BALANCE_PKG.HIDDEN_CAM_COPY";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("v_id", OracleDbType.NVarchar2),
+
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = id;
+
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
 
         public static DataSet camBalGetList(string v_id, string v_users, string v_campaignId, string v_fromDate, string v_toDate
             , string v_order, string v_rowsOnPage, string v_seqPage,string  channel,string language)
@@ -2980,7 +3201,7 @@ namespace ResfullApi.Models.balance
 				}
 				
 				// Build WHERE clause
-				string whereClause = "WHERE TRUNC(REPORT_DATE, 'HH') >= TRUNC(:startDate, 'HH') AND TRUNC(REPORT_DATE, 'HH') <= TRUNC(:endDate, 'HH')";
+				string whereClause = "WHERE TRUNC(REPORT_DATE, 'HH') >= TRUNC(:startDate, 'HH') AND TRUNC(REPORT_DATE, 'HH') <= TRUNC(:endDate, 'HH') AND (CAMPAIGN_ID IS NULL OR CAMPAIGN_ID < 2000000 OR CAMPAIGN_ID > 2999999)";
 				
 				if (!string.IsNullOrEmpty(v_campaignId) && v_campaignId != "-1" && v_campaignId != "All")
 				{
@@ -3056,7 +3277,7 @@ namespace ResfullApi.Models.balance
 				dbConnection.Open();
 				
 				// Build WHERE clause
-				string whereClause = "WHERE 1=1";
+				string whereClause = "WHERE 1=1 AND (CAMPAIGN_ID IS NULL OR CAMPAIGN_ID < 2000000 OR CAMPAIGN_ID > 2999999)";
 				
 				if (!string.IsNullOrEmpty(v_fromDate) && v_fromDate != "-1")
 				{
@@ -3140,7 +3361,7 @@ namespace ResfullApi.Models.balance
 			{
 				dbConnection.Open();
 
-				string whereClause = "WHERE 1=1";
+				string whereClause = "WHERE 1=1 AND (CAMPAIGN_ID IS NULL OR CAMPAIGN_ID < 2000000 OR CAMPAIGN_ID > 2999999)";
 
 				if (!string.IsNullOrEmpty(v_fromDate) && v_fromDate != "-1")
 				{
@@ -3231,7 +3452,7 @@ namespace ResfullApi.Models.balance
 			{
 				dbConnection.Open();
 
-				string whereClause = "WHERE 1=1";
+				string whereClause = "WHERE 1=1 AND (CAMPAIGN_ID IS NULL OR CAMPAIGN_ID < 2000000 OR CAMPAIGN_ID > 2999999)";
 
 				if (!string.IsNullOrEmpty(v_fromDate) && v_fromDate != "-1")
 				{
@@ -3317,4 +3538,4 @@ namespace ResfullApi.Models.balance
 
 
     }
-}
+}

+ 79 - 0
ApiWeb/ApiProcessToken/Models/banlance/getListCommon.cs

@@ -111,6 +111,85 @@ namespace ApiProcessToken.Models.banlance
             return _result;
         }
 
+        public static List<campaignObj> getListHiddenCam(string id, string users, string name, string code, string fromDate, string toDate
+            , string order, string rowsOnPage, string seqPage, string status, out string _rowsOnPage, out string _seqPage, out string _totalPage, string isDefault, string isMyservice)
+        {
+            string v1, v2, v3;
+            _rowsOnPage = rowsOnPage;
+            _seqPage = seqPage;
+            _totalPage = "100";
+            List<campaignObj> _result = new List<campaignObj>();
+            try
+            {
+                DataSet ds_regist = balanceDataAccess.hiddenCamGetList(id, users, name, code, fromDate, toDate, order, rowsOnPage, seqPage, status, isDefault, isMyservice);
+                if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0)
+                {
+                    _rowsOnPage = ds_regist.Tables[0].Rows[0]["ROW_ON_PAGE"].ToString();
+                    _seqPage = ds_regist.Tables[0].Rows[0]["SEQ_PAGE"].ToString();
+                    _totalPage = ds_regist.Tables[0].Rows[0]["TOTAL_PAGE"].ToString();
+
+                    for (int j = 0; j < ds_regist.Tables[0].Rows.Count; j++)
+                    {
+                        campaignObj _obj = new campaignObj();
+
+                        _obj.id = ds_regist.Tables[0].Rows[j]["ID"].ToString();
+                        _obj.code = ds_regist.Tables[0].Rows[j]["CODE"].ToString();
+                        _obj.name = ds_regist.Tables[0].Rows[j]["NAME"].ToString();
+                        _obj.fromDate = ds_regist.Tables[0].Rows[j]["FROM_DATE"].ToString();
+                        _obj.toDate = ds_regist.Tables[0].Rows[j]["TO_DATE"].ToString();
+                        _obj.fromHour = ds_regist.Tables[0].Rows[j]["FROM_HOUR"].ToString();
+
+                        _obj.toHour = ds_regist.Tables[0].Rows[j]["TO_HOUR"].ToString();
+                        _obj.rule = ds_regist.Tables[0].Rows[j]["RULE_ADD"].ToString();
+
+                        _obj.priority = ds_regist.Tables[0].Rows[j]["PRIORITY"].ToString();
+                        _obj.balanceId = ds_regist.Tables[0].Rows[j]["BALANCE_ID"].ToString();
+                        _obj.expireDateId = ds_regist.Tables[0].Rows[j]["EXPIRE_DATE_ID"].ToString();
+                        _obj.status = ds_regist.Tables[0].Rows[j]["STATUS"].ToString();
+                        _obj.numberDisplay = ds_regist.Tables[0].Rows[j]["NUMBER_DISPLAY"].ToString();
+                        _obj.addType = ds_regist.Tables[0].Rows[j]["ADD_TYPE"].ToString();
+
+                        _obj.title = ds_regist.Tables[0].Rows[j]["TITLE"].ToString();
+                        _obj.isReload = ds_regist.Tables[0].Rows[j]["IS_RELOAD"].ToString();
+                        _obj.isDefault = ds_regist.Tables[0].Rows[j]["IS_DEFAULT"].ToString();
+                        _obj.isMyService = ds_regist.Tables[0].Rows[j]["IS_MYSERVICE"].ToString();
+
+                        _obj.usersCreated = ds_regist.Tables[0].Rows[j]["USERS_CREATED"].ToString();
+                        _obj.dateCreated = ds_regist.Tables[0].Rows[j]["DATE_CREATED"].ToString();
+                        _obj.usersUpdate = ds_regist.Tables[0].Rows[j]["USERS_UPDATE"].ToString();
+                        _obj.dateUpdate = ds_regist.Tables[0].Rows[j]["DATE_UPDATE"].ToString();
+
+                        _obj.listServiceMapCam = getListServiceOfCam("-1", users, _obj.id, fromDate
+                        , toDate, order, "100000", "1", "WEB",
+                        "EN", out v1, out v2, out v3);
+
+                        _obj.listBalanceMapCam = getListBalanceOfCam("-1", users, _obj.id, fromDate
+                        , toDate, order, "100000", "1", "WEB",
+                        "EN", out v1, out v2, out v3);
+
+                        _obj.listExpireMapCam = getListExpireOfCam("-1", users, _obj.id, fromDate
+                        , toDate, order, "100000", "1", "WEB",
+                        "EN", out v1, out v2, out v3);
+
+                        _obj.listShortCodeMapCam = getListShortCodeOfCam("-1", users, _obj.id, fromDate
+                        , toDate, order, "100000", "1", "WEB",
+                        "EN", out v1, out v2, out v3);
+
+                        _obj.listSubMapCam = getListSubOfCam("-1", users, _obj.id, fromDate
+                        , toDate, order, "100000", "1", "WEB",
+                        "EN", out v1, out v2, out v3);
+
+                        _result.Add(_obj);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+            return _result;
+        }
+
 
 
 

+ 7 - 4
ApiWeb/ApiProcessToken/Models/systemDataAccess.cs

@@ -49,7 +49,8 @@ namespace ResfullApi.Models
                                           PUD.IS_STEP_2, PUD.STEP_2_TIME, PUD.ERROR_CODE, PUD.IS_SUCCESS, PUD.INSERT_TIME, PUD.LAST_UPDATE,PUD.MSG_CONTENT
                                    FROM PUSH_USSD_DETAIL PUD
                                         LEFT JOIN B_CAMPAIGN CAMP ON PUD.CAMPAIGN_ID = CAMP.ID
-                                   WHERE 1=1";
+                                   WHERE 1=1
+                                     AND (PUD.CAMPAIGN_ID IS NULL OR PUD.CAMPAIGN_ID < 2000000 OR PUD.CAMPAIGN_ID > 2999999)";
 
                 string where = "";
                 if (!string.IsNullOrEmpty(v_campaignId) && v_campaignId != "-1")
@@ -181,7 +182,8 @@ namespace ResfullApi.Models
                                    LEFT JOIN B_CAMPAIGN c ON rcd.CAMPAIGN_ID = c.ID
                                    LEFT JOIN B_CAMPAIGN_ADD ca ON c.ID = ca.CAMPAIGN_ID AND rcd.SERVICE_ID = ca.SERVICE_ADD_ID AND ca.IS_DELETE = 0
                                    LEFT JOIN B_SERVICE s ON (ca.SERVICE_ADD_ID = s.ID OR (ca.SERVICE_ADD_ID IS NULL AND rcd.SERVICE_ID = s.ID))
-                                   WHERE 1=1";
+                                   WHERE 1=1
+                                     AND (rcd.CAMPAIGN_ID IS NULL OR rcd.CAMPAIGN_ID < 2000000 OR rcd.CAMPAIGN_ID > 2999999)";
                 string dataSql = @"SELECT rcd.ID, rcd.REPORT_DATE, rcd.CAMPAIGN_ID, c.NAME AS CAMPAIGN_NAME,
                                    c.PRIORITY, c.IS_DEFAULT, c.IS_MYSERVICE, c.ADD_TYPE,
                                    rcd.SERVICE_ID, s.NAME AS SERVICE_NAME,
@@ -192,7 +194,8 @@ namespace ResfullApi.Models
                                    LEFT JOIN B_CAMPAIGN c ON rcd.CAMPAIGN_ID = c.ID
                                    LEFT JOIN B_CAMPAIGN_ADD ca ON c.ID = ca.CAMPAIGN_ID AND rcd.SERVICE_ID = ca.SERVICE_ADD_ID AND ca.IS_DELETE = 0
                                    LEFT JOIN B_SERVICE s ON (ca.SERVICE_ADD_ID = s.ID OR (ca.SERVICE_ADD_ID IS NULL AND rcd.SERVICE_ID = s.ID))
-                                   WHERE 1=1";
+                                   WHERE 1=1
+                                     AND (rcd.CAMPAIGN_ID IS NULL OR rcd.CAMPAIGN_ID < 2000000 OR rcd.CAMPAIGN_ID > 2999999)";
                 
                 // Add filters
                 if (v_id != null && v_id != "-1")
@@ -448,4 +451,4 @@ namespace ResfullApi.Models
 
 
     }
-}
+}

+ 38 - 0
ApiWeb/ApiProcessToken/Models/systemUserDataAccess.cs

@@ -592,5 +592,43 @@ namespace ResfullApi.Models
             ds.Tables.Add(tb);
             return ds;
         }
+
+        public static DataSet SYS_FUNCTION_WEB_CMS_DELETE(string V_ID, string V_USERS)
+        {
+            DataSet ds = new DataSet();
+            DataTable tb = new DataTable();
+            tb.Columns.Add("status", typeof(string));
+            tb.Columns.Add("msg", typeof(string));
+            OracleConnection dbConnection = DataAccess.getPoolingConnection();
+            try
+            {
+                dbConnection.Open();
+                string sql = @"DELETE FROM USER_WEB_CMS_FUNCTION WHERE ID = :id";
+                using (OracleCommand cmd = new OracleCommand(sql, dbConnection))
+                {
+                    cmd.CommandType = CommandType.Text;
+                    cmd.Parameters.Add(":id", OracleDbType.NVarchar2).Value = V_ID ?? "";
+                    int affected = cmd.ExecuteNonQuery();
+                    
+                    var row = tb.NewRow();
+                    row["status"] = affected > 0 ? "0" : "-1";
+                    row["msg"] = affected > 0 ? "Deleted successfully" : "Delete failed - Function not found";
+                    tb.Rows.Add(row);
+                }
+            }
+            catch (Exception ex)
+            {
+                var row = tb.NewRow();
+                row["status"] = "-1";
+                row["msg"] = ex.Message;
+                tb.Rows.Add(row);
+            }
+            finally
+            {
+                dbConnection.Close();
+            }
+            ds.Tables.Add(tb);
+            return ds;
+        }
     }
 }

+ 2 - 3
ApiWeb/ApiProcessToken/Process/AdminUserCheckService.cs

@@ -12,11 +12,11 @@ namespace ApiProcess.Process
     public class AdminUserCheckService : BackgroundService
     {
         private static readonly ILog logger = LogManager.GetLogger(typeof(AdminUserCheckService));
-        private const int INTERVAL_MINUTES = 1;
+        private const int INTERVAL_MINUTES = 5;
 
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
         {
-            logger.Info($"AdminUserCheckService started. Will check every {INTERVAL_MINUTES} minutes.");
+            logger.Info($"AdminUserCheckService started. Will check database every {INTERVAL_MINUTES} minutes.");
 
             while (!stoppingToken.IsCancellationRequested)
             {
@@ -25,7 +25,6 @@ namespace ApiProcess.Process
                     bool result = CheckAdminUser();
                     logger.Info($"AdminUserCheckService: Check result = {result}");
 
-                    // Wait for 10 minutes before next check
                     await Task.Delay(TimeSpan.FromMinutes(INTERVAL_MINUTES), stoppingToken);
                 }
                 catch (OperationCanceledException)

+ 1 - 1
ApiWeb/ApiProcessToken/appsettings.json

@@ -7,7 +7,7 @@
     "key": "VietNam#1980",
     "isCheckToken": "1",
     //"Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=171.244.50.177)(PORT=1530))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=LOTO_THAILAN;Password=loto098;Connection Timeout=120;",
-    "Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1539))(CONNECT_DATA=(SERVICE_NAME=ORA12C)));User Id=MYTEL_BLANCE;Password=123456;Connection Timeout=120;",
+    "Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1539))(CONNECT_DATA=(SERVICE_NAME=ORA12C)));User Id=MYTEL_BLANCE;Password=123456;Connection Timeout=30;Pooling=true;Min Pool Size=1;Max Pool Size=100;Incr Pool Size=5;Decr Pool Size=2;Connection Lifetime=300;Validate Connection=true;",
     //"Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1561))(CONNECT_DATA=(SERVICE_NAME=REP_DB_DG)));User Id=bplus_app;Password=BbQ09grnqF1CM0ob;Connection Timeout=120; Connection Lifetime=180;Pooling=true;Min Pool Size=1;Max Pool Size=100;Incr Pool Size=10;Validate Connection=true",
     "urlPostGetErrCodeMessage": "http://localhost:41341/api/luckyGame/executes/data",
     "keyPostGetErrCodeMessage": "jqB3Vi1fIlu+9a2ODQs65w==",

+ 1 - 1
ApiWeb/ApiProcessToken/publish/appsettings.json

@@ -7,7 +7,7 @@
     "key": "VietNam#1980",
     "isCheckToken": "1",
     //"Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=171.244.50.177)(PORT=1530))(CONNECT_DATA=(SERVICE_NAME=orcl)));User Id=LOTO_THAILAN;Password=loto098;Connection Timeout=120;",
-    "Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1539))(CONNECT_DATA=(SERVICE_NAME=ORA12C)));User Id=BALANCE;Password=BALANCE;Connection Timeout=120;",
+    "Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1539))(CONNECT_DATA=(SERVICE_NAME=ORA12C)));User Id=BALANCE;Password=BALANCE;Connection Timeout=30;Pooling=true;Min Pool Size=1;Max Pool Size=100;Incr Pool Size=5;Decr Pool Size=2;Connection Lifetime=300;Validate Connection=true;",
     //"Connection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.225.5.163)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=vasnew)));User Id=luckycard;Password=V@sLuckY13#$68;Connection Timeout=120; Connection Lifetime=180;Pooling=true;Min Pool Size=1;Max Pool Size=100;Incr Pool Size=10;Validate Connection=true",
     "urlPostGetErrCodeMessage": "http://localhost:41341/api/luckyGame/executes/data",
     "keyPostGetErrCodeMessage": "jqB3Vi1fIlu+9a2ODQs65w==",

+ 1010 - 0
Balance_pkg

@@ -0,0 +1,1010 @@
+--------------------------------------------------------
+--  File created - Thursday-November-27-2025   
+--------------------------------------------------------
+--------------------------------------------------------
+--  DDL for Package BALANCE_PKG
+--------------------------------------------------------
+
+  CREATE OR REPLACE EDITIONABLE PACKAGE "BALANCE_PKG" IS
+TYPE refcursor IS REF CURSOR;
+PROCEDURE PARAMS_GET_LIST
+(
+  v_type in varchar2,
+  P_RESULT OUT refcursor
+);
+ PROCEDURE pro_get_reload
+(
+  v_prId in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE pro_get_update
+(
+  v_prId in varchar2,
+  v_user in varchar2,
+  P_RESULT OUT refcursor
+);
+
+PROCEDURE COM_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+   v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE COM_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_PHONE in varchar2,
+V_EMAIL in varchar2,
+V_ADDRESS in varchar2,
+V_DESCRIPTION in nvarchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE COM_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_PHONE in varchar2,
+V_EMAIL in varchar2,
+V_ADDRESS in varchar2,
+V_DESCRIPTION in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+P_RESULT OUT refcursor
+);
+
+PROCEDURE BL_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+  v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+   v_isActive in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE BL_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_MIN in varchar2,
+V_MAX in varchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE BL_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_MIN in varchar2,
+V_MAX in varchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE EP_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+  v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+  v_isActive in varchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE EP_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_TOTAL_DAY_USE in varchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_MIN in varchar2,
+V_MAX in varchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE EP_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_TOTAL_DAY_USE in varchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+V_MIN in varchar2,
+V_MAX in varchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE PAM_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE PAM_INSERT
+(
+
+V_CODE in varchar2,
+V_SVALUES in varchar2,
+V_NOTE in nvarchar2,
+V_STATUS in varchar2,
+V_CODE_GROUP in varchar2,
+V_DISPLAY0 in nvarchar2,
+V_DISPLAY1 in nvarchar2,
+V_DISPLAY2 in nvarchar2,
+V_DISPLAY3 in nvarchar2,
+V_DISPLAY4 in nvarchar2,
+V_DISPLAY5 in nvarchar2,
+V_GAME_ID in varchar2,
+V_CHANNEL in varchar2,
+V_USERS in varchar2,
+P_RESULT OUT refcursor
+) ;
+PROCEDURE PAM_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_SVALUES in varchar2,
+V_NOTE in nvarchar2,
+V_STATUS in varchar2,
+V_CODE_GROUP in varchar2,
+V_DISPLAY0 in nvarchar2,
+V_DISPLAY1 in nvarchar2,
+V_DISPLAY2 in nvarchar2,
+V_DISPLAY3 in nvarchar2,
+V_DISPLAY4 in nvarchar2,
+V_DISPLAY5 in nvarchar2,
+V_GAME_ID in varchar2,
+V_CHANNEL in varchar2,
+V_USERS in varchar2,
+V_TYPE in varchar2,
+
+P_RESULT OUT refcursor
+);
+PROCEDURE SVGROUP_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE SV_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+  v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+  v_isActive in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE SV_INSERT
+(
+
+      V_CODE in nvarchar2,
+      V_NAME in nvarchar2,
+      V_DESCRIPTION in nvarchar2,
+      V_SHORT_CODE in nvarchar2,
+      V_COMMAND_REGISTER in nvarchar2,
+      V_CONTENT_EN in nvarchar2,
+      V_CONTENT_FR in nvarchar2,
+      V_CONTENT_LC in nvarchar2,
+      V_NOTE in nvarchar2,
+      V_COMPANY_ID in nvarchar2,
+
+
+      V_USERS in nvarchar2,
+
+      V_USSD_MSG_REGISTER_SUC in nvarchar2,
+      V_USSD_MSG_REGISTER_FAIL in nvarchar2,
+      V_USSD_CONFIRM in nvarchar2,
+
+      V_SERVICE_GROUP_ID in nvarchar2,
+      V_API_SERVICE_ID in nvarchar2,
+      v_isMyservice in nvarchar2,
+      P_RESULT OUT refcursor
+);
+PROCEDURE SV_UPDATE
+(
+      V_ID in varchar2,
+
+      V_CODE in nvarchar2,
+      V_NAME in nvarchar2,
+      V_DESCRIPTION in nvarchar2,
+      V_SHORT_CODE in nvarchar2,
+      V_COMMAND_REGISTER in nvarchar2,
+      V_CONTENT_EN in nvarchar2,
+      V_CONTENT_FR in nvarchar2,
+      V_CONTENT_LC in nvarchar2,
+      V_NOTE in nvarchar2,
+      V_COMPANY_ID in nvarchar2,
+
+      V_USERS in nvarchar2,
+      V_TYPE in varchar2,
+      V_USSD_MSG_REGISTER_SUC in nvarchar2,
+      V_USSD_MSG_REGISTER_FAIL in nvarchar2,
+      V_USSD_CONFIRM in nvarchar2,  
+
+      V_SERVICE_GROUP_ID in nvarchar2,
+      V_API_SERVICE_ID in nvarchar2,
+      v_isMyservice in nvarchar2,
+      P_RESULT OUT refcursor
+);
+/*
+PROCEDURE SVADD_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE SVADD_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+
+V_ADD_TYPE in varchar2,
+V_NUMBER_DISPLAY in varchar2,
+V_PRIORITY in varchar2,
+V_SERVICE_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE SVADD_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_ADD_TYPE in varchar2,
+V_NUMBER_DISPLAY in varchar2,
+V_PRIORITY in varchar2,
+V_SERVICE_ID in varchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+P_RESULT OUT refcursor
+);
+*/
+PROCEDURE CAM_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+   v_name in varchar2,
+  v_code in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+  v_status in varchar2,
+   v_isDefault in varchar2,
+   v_isMyservice in varchar2,
+  P_RESULT OUT refcursor
+);
+
+ PROCEDURE CAM_GET_CALENDAR
+(
+
+  v_users in varchar2,
+
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+v_status in varchar2,
+  P_RESULT OUT refcursor
+);
+
+ PROCEDURE CAM_GET_REPORT_TOTAL
+(
+
+  v_users in varchar2,
+
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+  v_status in varchar2,
+  v_isDefault in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE CAM_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+
+V_FROM_DATE in varchar2,
+V_TO_DATE in varchar2,
+V_FROM_HOUR in varchar2,
+V_TO_HOUR in varchar2,
+V_RULE_ADD in varchar2,
+V_PRIORITY in varchar2,
+V_BALANCE_ID in varchar2,
+V_EXPIRE_DATE_ID in varchar2,
+V_STATUS in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_DISPLAY in nvarchar2,
+V_ADD_TYPE in nvarchar2,
+V_TITLE in nvarchar2,
+V_DEFAULT in nvarchar2,
+V_MYSERVICE in nvarchar2,
+
+P_RESULT OUT refcursor
+);
+PROCEDURE CAM_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+
+V_FROM_DATE in varchar2,
+V_TO_DATE in varchar2,
+V_FROM_HOUR in varchar2,
+V_TO_HOUR in varchar2,
+V_RULE_ADD in varchar2,
+V_PRIORITY in varchar2,
+V_BALANCE_ID in varchar2,
+V_EXPIRE_DATE_ID in varchar2,
+V_STATUS in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+V_DISPLAY in nvarchar2,
+V_ADD_TYPE in nvarchar2,
+V_TITLE in nvarchar2,
+V_DEFAULT in nvarchar2,
+V_MYSERVICE in nvarchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE CAM_COPPY
+(
+  v_id in varchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE CAMADD_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+  v_campaignId varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE CAMADD_INSERT
+(
+
+V_CAMPAING_ID in varchar2,
+V_SERVICE_ADD_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_USSD_DIS in nvarchar2,
+V_KEY_REGIS in nvarchar2,
+V_MSG_CONFIRM in nvarchar2,
+
+P_RESULT OUT refcursor
+);
+PROCEDURE CAMADD_UPDATE
+(
+V_ID in varchar2,
+V_CAMPAING_ID in varchar2,
+V_SERVICE_ADD_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+V_USSD_DIS in nvarchar2,
+V_KEY_REGIS in nvarchar2,
+V_MSG_CONFIRM in nvarchar2,
+
+P_RESULT OUT refcursor
+);
+
+PROCEDURE CAM_SUB_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+
+  v_campaignId in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+   v_channel in varchar2,
+  v_language in varchar2,
+  P_RESULT OUT refcursor
+) ;
+PROCEDURE CAM_SUB_INSERT
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+  v_channel in varchar2,
+  v_language in varchar2,
+
+P_RESULT OUT refcursor
+);
+PROCEDURE CAM_SUB_UPDATE
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+
+v_channel in varchar2,
+  v_language in varchar2,
+  V_ID in varchar2,
+  V_TYPE in varchar2, --1=delete,2=update
+P_RESULT OUT refcursor
+);
+
+PROCEDURE CAM_BAL_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+
+  v_campaignId in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+   v_channel in varchar2,
+  v_language in varchar2,
+  P_RESULT OUT refcursor
+);
+
+PROCEDURE CAM_BAL_INSERT
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+  v_channel in varchar2,
+  v_language in varchar2,
+
+P_RESULT OUT refcursor
+) ;
+PROCEDURE CAM_BAL_UPDATE
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+
+v_channel in varchar2,
+  v_language in varchar2,
+  V_ID in varchar2,
+  V_TYPE in varchar2, --1=delete,2=update
+P_RESULT OUT refcursor
+) ;
+
+
+PROCEDURE CAM_EXP_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+
+  v_campaignId in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+   v_channel in varchar2,
+  v_language in varchar2,
+  P_RESULT OUT refcursor
+);
+
+PROCEDURE CAM_EXP_INSERT
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+  v_channel in varchar2,
+  v_language in varchar2,
+
+P_RESULT OUT refcursor
+) ;
+PROCEDURE CAM_EXP_UPDATE
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+
+v_channel in varchar2,
+  v_language in varchar2,
+  V_ID in varchar2,
+  V_TYPE in varchar2, --1=delete,2=update
+P_RESULT OUT refcursor
+) ;
+
+
+
+
+PROCEDURE CAM_SC_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+
+
+  v_campaignId in varchar2,
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+   v_channel in varchar2,
+  v_language in varchar2,
+  P_RESULT OUT refcursor
+);
+
+PROCEDURE CAM_SC_INSERT
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+  v_channel in varchar2,
+  v_language in varchar2,
+
+P_RESULT OUT refcursor
+) ;
+PROCEDURE CAM_SC_UPDATE
+(
+
+V_CAMPAING_ID in varchar2,
+V_REF_ID in varchar2,
+
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+
+v_channel in varchar2,
+  v_language in varchar2,
+  V_ID in varchar2,
+  V_TYPE in varchar2, --1=delete,2=update
+P_RESULT OUT refcursor
+) ;
+
+
+
+PROCEDURE ERR_CODE_GET_LIST
+(
+  v_type in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE ADMIN_LOGIN
+(
+  v_user in nvarchar2,
+  v_pass in nvarchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE ADMIN_GET_ROLE
+(
+  v_role in nvarchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE USERS_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE USERS_INSERT
+(
+
+V_USERNAME in varchar2,
+V_PASSWORD in varchar2,
+V_ROLE in nvarchar2,
+V_COUNTRY_CODE in varchar2,
+V_IS_LOCK in varchar2,
+V_TOTAL_FALSE in nvarchar2,
+V_TIME_LOCK in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in varchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE USERS_UPDATE
+(
+V_ID in varchar2,
+V_USERNAME in varchar2,
+V_PASSWORD in varchar2,
+V_ROLE in nvarchar2,
+V_COUNTRY_CODE in varchar2,
+V_IS_LOCK in varchar2,
+V_TOTAL_FALSE in nvarchar2,
+V_TIME_LOCK in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in varchar2,
+V_TYPE in varchar2,
+
+P_RESULT OUT refcursor
+);
+
+ PROCEDURE TMP_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE TMP_INSERT
+(
+
+V_NAME in varchar2,
+V_SV in varchar2,
+V_MSG in nvarchar2,
+V_FD in varchar2,
+V_TD in varchar2,
+V_PC in nvarchar2,
+V_ADD_TYPE nvarchar2,
+V_USERS in varchar2,
+P_RESULT OUT refcursor
+) ;
+PROCEDURE TMP_UPDATE
+(
+V_ID in varchar2,
+V_NAME in varchar2,
+V_SV in varchar2,
+V_MSG in nvarchar2,
+V_FD in varchar2,
+V_TD in varchar2,
+V_PC in nvarchar2,
+V_ADD_TYPE nvarchar2,
+V_USERS in varchar2,
+V_TYPE in varchar2,
+
+P_RESULT OUT refcursor
+) ;
+PROCEDURE GET_DATA
+(
+  v_type in varchar2,
+  P_RESULT OUT refcursor
+) ;
+
+PROCEDURE BLACK_GET
+(
+  v_msisdn in varchar2,
+  v_type in varchar2, --1= Nhan vien,2=Blacklist all,3=blacklist theo dich vu,4=whitelist theo dich vu
+  v_sv_id in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE BLACK_INSERT
+(
+
+  v_msisdn in varchar2,
+  v_type in varchar2, --1= Nhan vien,2=Blacklist all,3=blacklist theo dich vu,4=whitelist theo dich vu
+  v_sv_id in varchar2,
+  v_action in varchar2, --1: insert, 2=delete
+  v_users in varchar2
+);
+
+PROCEDURE CORE_INSERT_USSD
+(
+  v_msisdn in varchar2,  
+  v_message in nvarchar2,
+  v_requestType in nvarchar2,
+  v_service in nvarchar2,
+  v_reqeustId in nvarchar2,
+  v_camIsDefault in nvarchar2,
+  v_camType in nvarchar2,
+  v_camService1 in nvarchar2,
+  v_camService2 in nvarchar2
+);
+
+PROCEDURE CORE_BLACKLIST_GET
+(
+  v_type in varchar2,  --1= Nhan vien,2=Blacklist all
+  P_RESULT OUT refcursor
+);
+PROCEDURE CORE_UPDATE_RELOAD
+(
+  v_type in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE GET_CAMPAIGN_RUNNING
+(
+  v_type in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE GET_SERVICE_OF_CAM
+(
+  v_campaignId in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE GET_SERVICE_OF_CAM_NGAM
+(
+  v_campaignId in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE CORE_INSERT_REGISTER
+(
+  v_msisdn in varchar2,  
+  v_campaign_add_id in nvarchar2,
+  v_campaign_id in nvarchar2,
+  v_service_id in nvarchar2,
+  v_request_id in nvarchar2,
+  v_key_press in nvarchar2,
+  v_err_code in nvarchar2,
+  v_err_msg in nvarchar2,
+  v_ussd_request in nvarchar2,
+  P_RESULT OUT refcursor
+)
+
+
+
+;
+PROCEDURE GET_CAMPAIGN_NGAM_RUNNING
+(
+  v_type in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE JOB_RESET_DAY;
+PROCEDURE JOB_CHANGE_CAMPAIGN;
+PROCEDURE GET_CAMPAIGN_NGAM_PLS_RUNNING
+(
+  v_type in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE GET_SERVICE_OF_CAM_NGAM_PLS
+(
+  v_campaignId in varchar2,  --Hien tai ko su dung
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE REPORT_BY_CAMPAIGN
+(
+  v_users in varchar2,
+  v_status in varchar2,
+  v_FROMDATE in varchar2,
+  v_TODATE in varchar2,
+  P_RESULT OUT refcursor
+);
+
+ PROCEDURE LIST_SUB_FILE_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  V_list_sub_id in varchar2, 
+  v_name in varchar2,
+  v_code in varchar2,
+
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+
+  P_RESULT OUT refcursor
+);
+PROCEDURE LIST_SUB_FILE_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_LIST_SUB_ID in nvarchar2,
+V_FILE_ID in nvarchar2,
+V_FILE_NAME in nvarchar2,
+
+P_RESULT OUT refcursor
+);
+PROCEDURE LIST_SUB_FILE_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_LIST_SUB_ID in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+V_STATUS in varchar2,
+P_RESULT OUT refcursor
+);
+PROCEDURE LIST_SUB_GET
+(
+  v_id in varchar2,
+  v_users in varchar2,
+  V_sub_type in varchar2, --1=black,2=white
+  v_name in varchar2,
+  v_code in varchar2,
+
+  v_fromDate in varchar2,
+  v_toDate in varchar2,
+
+  v_order in varchar2 , --0= tang dan theo ID ticket,1= giam dan theo Id ticket
+  v_rowsOnPage in varchar2,
+  v_seqPage in varchar2,
+  v_isActive in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE LIST_SUB_INSERT
+(
+
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+
+V_SUB_TYPE in nvarchar2, --1=black list, 2= white list
+
+
+P_RESULT OUT refcursor
+);
+PROCEDURE LIST_SUB_UPDATE
+(
+V_ID in varchar2,
+V_CODE in varchar2,
+V_NAME in nvarchar2,
+V_SUB_TYPE in nvarchar2,
+V_NOTE in nvarchar2,
+V_USERS in nvarchar2,
+V_TYPE in varchar2,
+V_STATUS in varchar2,
+P_RESULT OUT refcursor
+);
+ PROCEDURE IMPORT_GET_FILE
+(
+  v_type in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE IMPORT_FINSH_FILE
+(
+  v_uload_id in varchar2,
+  v_uload_detail_id in varchar2,
+  v_total_row in varchar2,
+  v_total_row_false in varchar2,
+
+  P_RESULT OUT refcursor
+) ;
+ PROCEDURE IMPORT_FINSH_ALL_FILE
+(
+  v_uload_id in varchar2,
+
+  P_RESULT OUT refcursor
+) ;
+  PROCEDURE IMPORT_INSERT
+(
+  v_upload_id in varchar2, 
+  v_upload_detail_id in varchar2,
+  v_type in varchar2, --ko su dung
+  v_ticket in varchar2
+);
+PROCEDURE LOG_INSERT
+(
+  v_reqeust in varchar2, 
+  v_biz_id in varchar2,
+  v_type in varchar2, --1=blacklust,2=whitelist,3=nhan vien
+  v_key in varchar2,
+  v_contnet in varchar2,
+  v_errCode in varchar2
+
+) ;
+PROCEDURE CHANGE_STATUS
+(
+  v_type in varchar2,
+  v_id in varchar2,
+  v_status in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+);
+PROCEDURE SORT_CODE_GET_LIST
+(
+  v_type in varchar2,
+  v_users in varchar2,
+  P_RESULT OUT refcursor
+) ;
+
+
+
+ FUNCTION GET_SERVICE_CHOICE
+(
+  v_campaign_id in varchar2, 
+  v_keypress in varchar2
+
+) return number;
+
+END;
+
+/

+ 32 - 0
ConvertLog/ConvertLog.csproj

@@ -0,0 +1,32 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>net7.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="log4net" Version="2.0.11" />
+    <PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.1" />
+    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="Oracle.ManagedDataAccess.Core" Version="3.21.100" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\ApiWeb\CommonObj\CommonObj.csproj" />
+  </ItemGroup>
+
+
+  <ItemGroup>
+    <None Update="appsettings.json">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+    <None Update="log4net.config">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
+  </ItemGroup>
+
+</Project>

+ 8 - 0
ConvertLog/Program.cs

@@ -0,0 +1,8 @@
+// See https://aka.ms/new-console-template for more information
+using ConvertLog.common;
+using System.Reflection;
+Console.WriteLine("Hello, World!");
+
+ConvertLog.common.ConfigData.LoadConfigData();
+
+ConvertLog.common.ConfigData.log.Info("Start......");

+ 18 - 0
ConvertLog/Properties/PublishProfiles/FolderProfile.pubxml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>D:\Code\Ex_publish\Mytel_BPlus\convertLog</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+    <TargetFramework>net7.0</TargetFramework>
+    <RuntimeIdentifier>linux-x64</RuntimeIdentifier>
+    <SelfContained>true</SelfContained>
+    <PublishSingleFile>false</PublishSingleFile>
+    <PublishTrimmed>false</PublishTrimmed>
+  </PropertyGroup>
+</Project>

+ 27 - 0
ConvertLog/appsettings.json

@@ -0,0 +1,27 @@
+{
+
+
+
+  "app": {
+
+    //"DbConnection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1539))(CONNECT_DATA=(SERVICE_NAME=ORA12C)));User Id=BALANCE;Password=BALANCE;Connection Timeout=120;",
+    "DbConnection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1561))(CONNECT_DATA=(SERVICE_NAME=REP_DB_DG)));User Id=bplus_app;Password=BbQ09grnqF1CM0ob;Connection Timeout=120; Connection Lifetime=180;Pooling=true;Min Pool Size=1;Max Pool Size=100;Incr Pool Size=10;Validate Connection=true",
+
+    "pathFileImport": "D:\\Viettech\\Code\\NetCore\\TimorBplus\\FileUpload\\",
+    "AppId": "1",
+
+    "RedisIp": "127.0.0.1",
+    "RedisPort": "9379",
+    "RedisPass": "p@ss$12E45"
+
+
+  },
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft": "Warning",
+      "Microsoft.Hosting.Lifetime": "Information"
+    }
+  }
+
+}

+ 323 - 0
ConvertLog/business/DataAccess.cs

@@ -0,0 +1,323 @@
+using Oracle.ManagedDataAccess.Client;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Text;
+
+namespace ConvertLog.common
+{
+    public class DataAccess
+    {
+
+
+        public DataAccess()
+        {
+
+        }
+
+
+
+
+        public static DataSet importGetFile(string type)
+        {
+
+            string str;
+            str = "";
+            str = "BALANCE_PKG.IMPORT_GET_FILE";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+                                new OracleParameter("v_type", OracleDbType.NVarchar2),
+                              new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = type;
+
+            return getDataFromProcedure(str, "", parms);
+        }
+
+        public static DataSet importFinishFile(string v_uload_id, string v_uload_detail_id, string v_total_row, string v_total_row_false)
+        {
+
+            string str;
+            str = "";
+            str = "BALANCE_PKG.IMPORT_FINSH_FILE";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+                                new OracleParameter("v_uload_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_uload_detail_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_total_row", OracleDbType.NVarchar2),
+                                new OracleParameter("v_total_row_false", OracleDbType.NVarchar2),
+
+                              new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_uload_id;
+            parms[1].Value = v_uload_detail_id;
+            parms[2].Value = v_total_row;
+            parms[3].Value = v_total_row_false;
+
+            return getDataFromProcedure(str, "", parms);
+        }
+        public static DataSet importFinishAllFile(string v_uload_id)
+        {
+
+            string str;
+            str = "";
+            str = "BALANCE_PKG.IMPORT_FINSH_ALL_FILE";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+                                new OracleParameter("v_uload_id", OracleDbType.NVarchar2),
+
+
+                              new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_uload_id;
+
+            return getDataFromProcedure(str, "", parms);
+        }
+
+        public static void upload_data(string sSQL, List<List<string>> dataColumn)
+        {
+            OracleConnection connection = null;
+            try
+            {
+                connection = getPoolingConnection();
+                connection.Open();
+                OracleTransaction transaction;
+
+                // Start a local transaction
+                transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
+                using (var command = connection.CreateCommand())
+                {
+                    command.CommandText = sSQL;
+                    command.CommandType = CommandType.StoredProcedure;
+                    command.ArrayBindCount = dataColumn[0].Count;
+                    command.Transaction = transaction;
+
+
+
+
+                    var v_upload_id = dataColumn[0].ToArray();
+                    OracleParameter param0 = new OracleParameter("v_upload_id", OracleDbType.NVarchar2, ParameterDirection.Input);
+                    param0.Value = v_upload_id;
+                    param0.Size = v_upload_id.Length;
+                    command.Parameters.Add(param0);
+
+                    var v_upload_detail_id = dataColumn[1].ToArray();
+                    OracleParameter param1 = new OracleParameter("v_upload_detail_id", OracleDbType.NVarchar2, ParameterDirection.Input);
+                    param1.Value = v_upload_detail_id;
+                    param1.Size = v_upload_detail_id.Length;
+                    command.Parameters.Add(param1);
+
+                    var v_type = dataColumn[2].ToArray();
+                    OracleParameter param2 = new OracleParameter("v_type", OracleDbType.NVarchar2, ParameterDirection.Input);
+                    param2.Value = v_type;
+                    param2.Size = v_type.Length;
+                    command.Parameters.Add(param2);
+
+                    var v_ticket = dataColumn[3].ToArray();
+                    OracleParameter param3 = new OracleParameter("v_ticket", OracleDbType.NVarchar2, ParameterDirection.Input);
+                    param3.Value = v_ticket;
+                    param3.Size = v_ticket.Length;
+                    command.Parameters.Add(param3);
+
+
+
+                    command.ExecuteNonQuery();
+
+
+
+                    transaction.Commit();
+
+                }
+
+            }
+            catch (OracleException ex)
+            {
+                Console.WriteLine(ex.ToString());
+                throw;
+            }
+            finally
+            {
+                connection.Close();
+            }
+        }
+
+        public static DataSet termIn(string V_TERM_ID, string V_NAME, string V_DISPLAY
+            , string V_START_DATE, string V_END_DATE, string V_DRAW_DATE, string V_NOTE,
+            string V_TOTAL_MONEY_DRAW_ON, string V_TOTAL_MONEY_DRAW_PREVIOUS_ON,
+            string V_TOTAL_MONEY_DRAW_OFF, string V_TOTAL_MONEY_DRAW_PREVIOUS_OFF,
+            string typeDraw, string limitJackport, string curentRevenue, string curentRevenueWin,
+            string curentJackport, string remainJackport, string curentOther, string remainOther,
+            string irdTerm
+
+
+            )
+        {
+
+            string str;
+            str = "";
+            str = "LUCKY_PKG.TERM_INSERT";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+                                new OracleParameter("V_TERM_ID", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NAME", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DISPLAY", OracleDbType.NVarchar2),
+                                new OracleParameter("V_START_DATE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_END_DATE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_DRAW_DATE", OracleDbType.NVarchar2),
+                                new OracleParameter("V_NOTE", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_TOTAL_MONEY_DRAW_ON", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TOTAL_MONEY_DRAW_PRE_ON", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TOTAL_MONEY_DRAW_OFF", OracleDbType.NVarchar2),
+                                new OracleParameter("V_TOTAL_MONEY_DRAW_PRE_OFF", OracleDbType.NVarchar2),
+
+                                new OracleParameter("V_typeDraw", OracleDbType.NVarchar2),
+                                new OracleParameter("V_limitJackport", OracleDbType.NVarchar2),
+                                new OracleParameter("V_curentRevenue", OracleDbType.NVarchar2),
+                                new OracleParameter("V_curentRevenueWin", OracleDbType.NVarchar2),
+                                new OracleParameter("V_curentJackport", OracleDbType.NVarchar2),
+                                new OracleParameter("V_remainJackport", OracleDbType.NVarchar2),
+                                new OracleParameter("V_curentOther", OracleDbType.NVarchar2),
+                                new OracleParameter("V_remainOther", OracleDbType.NVarchar2),
+                                new OracleParameter("V_irdTerm", OracleDbType.NVarchar2),
+
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = V_TERM_ID;
+            parms[1].Value = V_NAME;
+            parms[2].Value = V_DISPLAY;
+            parms[3].Value = V_START_DATE;
+            parms[4].Value = V_END_DATE;
+            parms[5].Value = V_DRAW_DATE;
+            parms[6].Value = V_NOTE;
+            parms[7].Value = V_TOTAL_MONEY_DRAW_ON;
+            parms[8].Value = V_TOTAL_MONEY_DRAW_PREVIOUS_ON;
+            parms[9].Value = V_TOTAL_MONEY_DRAW_OFF;
+            parms[10].Value = V_TOTAL_MONEY_DRAW_PREVIOUS_OFF;
+
+            parms[11].Value = typeDraw;
+            parms[12].Value = limitJackport;
+            parms[13].Value = curentRevenue;
+            parms[14].Value = curentRevenueWin;
+            parms[15].Value = curentJackport;
+            parms[16].Value = remainJackport;
+            parms[17].Value = curentOther;
+            parms[18].Value = remainOther;
+            parms[19].Value = irdTerm;
+
+            return getDataFromProcedure(str, "", parms);
+        }
+
+
+        public static DataSet get_data_sub(string v_ap_id, string v_total_row)
+        {
+
+            string str;
+            str = "";
+            str = "SYN_SUB_PKG.get_data";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("v_ap_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_total_row", OracleDbType.NVarchar2),
+                               
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_ap_id;
+            parms[1].Value = v_total_row;
+           
+
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
+
+        public static DataSet update_sub(string v_id, string v_errCode, string v_errMsg)
+        {
+
+            string str;
+            str = "";
+            str = "SYN_SUB_PKG.syn_update";
+            OracleParameter[] parms;
+            parms = new OracleParameter[]
+                            {
+
+                                new OracleParameter("v_id", OracleDbType.NVarchar2),
+                                new OracleParameter("v_errCode", OracleDbType.NVarchar2),
+                                new OracleParameter("v_errMsg", OracleDbType.NVarchar2),
+
+                                new OracleParameter("P_RESULT",OracleDbType.RefCursor,ParameterDirection.Output),
+            };
+            parms[0].Value = v_id;
+            parms[1].Value = v_errCode;
+            parms[2].Value = v_errMsg;
+
+
+
+            return DataAccess.getDataFromProcedure(str, "", parms);
+        }
+
+
+
+
+
+        public static DataSet getDataFromProcedure(string sSQL, string sTableName, params OracleParameter[] cmdParms)
+        {
+            DataSet ds = new DataSet();
+            OracleConnection dbConnection = getPoolingConnection();
+            OracleDataAdapter dataAdapter;
+            dataAdapter = new OracleDataAdapter();
+            try
+            {
+                dataAdapter.SelectCommand = new OracleCommand(sSQL, dbConnection);
+                dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
+                for (int i = 0; i < cmdParms.Length; i++)
+                    dataAdapter.SelectCommand.Parameters.Add(cmdParms[i]);
+                if (sTableName != "")
+                {
+                    dataAdapter.Fill(ds, sTableName);
+                }
+                else
+                    dataAdapter.Fill(ds);
+            }
+            catch (OracleException loadException)
+            {
+                throw loadException;
+            }
+            catch (Exception unException)
+            {
+                throw unException;
+            }
+            finally
+            {
+                dbConnection.Close();
+            }
+            return ds;
+        }
+
+
+
+
+        public static OracleConnection getPoolingConnection()
+        {
+            //string conn = ConfigurationSettings.AppSettings["Connection"];
+            string conn =ConfigData.GetValuesAppSetting("app", "DbConnection"); ;
+          
+            OracleConnection dbConn = new OracleConnection(conn);
+            return dbConn;
+        }
+
+
+
+
+
+
+
+
+    }
+}

+ 279 - 0
ConvertLog/common/Common.cs

@@ -0,0 +1,279 @@
+using Microsoft.Extensions.Configuration;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.IO;
+using System.Net;
+using System.Net.Http;
+using System.Net.Sockets;
+using System.Text;
+
+namespace ConvertLog.common
+{
+    public class Common
+    {
+        static readonly log4net.ILog logger = log4net.LogManager.GetLogger(typeof(Common));
+        private readonly IConfiguration _config;
+
+        public Common(IConfiguration configuration)
+        {
+
+            _config = configuration;
+            
+            string ConnectionString = _config["Configurations:ConnectionString"];
+        }
+
+
+        public string GetValuesAppSetting(string key, string subkey)
+        {
+            string reuturn = "";
+            string _key = key + ":" + subkey;
+            reuturn = _config[_key];
+
+
+            return reuturn;
+        }
+
+
+
+
+        public static string SocketUnSyn(string msg, string host, int port, int timeout)
+        {
+            //log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+            //log4net.Config.XmlConfigurator.Configure();
+
+            string result = "-1000";
+            TcpClient client = null;
+            NetworkStream stream = null;
+            try
+            {
+
+
+
+                byte[] data = System.Text.Encoding.ASCII.GetBytes(msg);
+
+                client = new TcpClient(host, port);
+
+                client.SendTimeout = timeout;
+                stream = client.GetStream();
+                BinaryWriter writer = new BinaryWriter(stream);
+                writer.Write(data);
+
+
+
+
+                String _readFromStream = String.Empty;
+                byte[] data_read = new byte[1024];
+                using (MemoryStream ms = new MemoryStream())
+                {
+
+                    int numBytesRead;
+                    while ((numBytesRead = stream.Read(data_read, 0, data_read.Length)) > 0)
+                    {
+                        ms.Write(data_read, 0, numBytesRead);
+
+
+                    }
+                    _readFromStream = System.Text.Encoding.ASCII.GetString(ms.ToArray(), 0, (int)ms.Length);
+                }
+
+
+
+
+
+                //string _readFromStream = GetResponse(stream);
+                /*
+                data = new Byte[1024];
+                String responseData = String.Empty;
+                Int32 bytes = stream.Read(data, 0, data.Length);
+                responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
+                */
+                logger.Info("Response from:" + host + ":" + port + " is:" + _readFromStream);
+                // Close everything.
+                stream.Close();
+                client.Close();
+                //Phan tich data tra ve:
+                result = _readFromStream;
+
+
+
+
+            }
+            catch (ArgumentNullException e)
+            {
+                logger.Info("ArgumentNullException and close connection:" + e.ToString());
+                stream.Close();
+                client.Close();
+                return "-1000";
+            }
+            catch (SocketException e)
+            {
+
+
+                return "-1000";
+            }
+            return result;
+        }
+
+
+
+
+        public static string GetResponse(NetworkStream stream)
+        {
+            byte[] data = new byte[1024];
+            using (MemoryStream memoryStream = new MemoryStream())
+            {
+                do
+                {
+                    stream.Read(data, 0, data.Length);
+                    memoryStream.Write(data, 0, data.Length);
+                } while (stream.DataAvailable);
+
+                return System.Text.Encoding.ASCII.GetString(memoryStream.ToArray(), 0, (int)memoryStream.Length);
+            }
+        }
+
+
+        public static string checkToken(string ip, string channel, string token, out string msisdn, out string message)
+        {
+            string result = "1"; //check token ko thanh cong
+            msisdn = "";
+            message = "";
+            try
+            {
+                //DataSet ds_check = usersDataAccess.TKcheckToken(ip, channel, token);
+                DataSet ds_check =null;
+                if (ds_check != null & ds_check.Tables[0].Rows.Count > 0)
+                {
+                    msisdn = ds_check.Tables[0].Rows[0]["msisdn"].ToString();
+                    result = ds_check.Tables[0].Rows[0]["status"].ToString();
+                    message = ds_check.Tables[0].Rows[0]["mesage"].ToString();
+
+                }
+            }
+            catch (Exception ex)
+            {
+                int a = 1;
+
+            }
+
+            return result;
+        }
+
+
+
+
+
+
+        public static string GetErrMessageFromErrCode(string errCode, string language, string url, string _keyPost, string channel)
+        {
+
+            Random _rd = new Random();
+            string strRandom = _rd.Next(1, 999999).ToString("000000");
+            string request_process = strRandom + DateTime.Now.ToString("ddMMyyyyhhmmssfff");
+
+
+            string jsomPost = "{\"requestId\":\"#?rqeustID#\",\"serviceId\":\"10\",\"key\":\"#?key# \",\"cmd\":\"getErrCodeToMessage\",\"language\":\"#?language#\",\"channel\":\"#?channel#\",\"data\":\"#?errCode#\"}";
+            jsomPost = jsomPost.Replace("#?rqeustID#", request_process);
+            jsomPost = jsomPost.Replace("#?key#", _keyPost);
+            jsomPost = jsomPost.Replace("#?language#", language);
+            jsomPost = jsomPost.Replace("#?errCode#", errCode);
+            jsomPost = jsomPost.Replace("#?channel#", channel);
+
+            string strResponse = Common.SendPost(url, jsomPost);
+            //ResCommnon response = JsonConvert.DeserializeObject<ResCommnon>(strResponse);
+            //return response.responseMessage;
+            return "";
+        }
+
+
+        public static String SendPost(string url, string str)
+        {
+
+
+            var data = new StringContent(str, Encoding.UTF8, "application/json");
+            //StringBuilder sb = new StringBuilder();
+            //sb.Append("Request: " + data);
+
+
+            using (var client = new HttpClient())
+            {
+                var response = client.PostAsync(url, data).Result;
+
+                if (response.IsSuccessStatusCode)
+                {
+                    var responseContent = response.Content;
+                    //sb.Append("\r\nResponse: " + responseContent);
+                    //log.Debug(sb.ToString());
+
+                    // by calling .Result you are synchronously reading the result
+                    string responseString = responseContent.ReadAsStringAsync().Result;
+
+                    return responseString;
+                }
+                //sb.Append("\r\nResponse: " + response);
+                //log.Debug(sb.ToString());
+                return response.StatusCode.ToString();
+            }
+        }
+
+
+
+
+       
+
+        public static bool CheckPortV2(string ip, string port)
+        {
+            bool result = false;
+            try
+            {
+                TcpClient c = new TcpClient(ip, Convert.ToInt32(port));
+                result = true;
+                c.Close();
+            }
+            catch (System.Net.Sockets.SocketException ex)
+            {
+
+
+            }
+            return result;
+        }
+
+
+        public static bool CheckPort(string ip, string port)
+        {
+            bool result = false;
+            string hostname = ip;
+            int portno = Convert.ToInt32(port);
+            IPAddress ipa = (IPAddress)Dns.GetHostAddresses(hostname)[0];
+            try
+            {
+                System.Net.Sockets.Socket sock =
+                        new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork,
+                                                      System.Net.Sockets.SocketType.Stream,
+                                                      System.Net.Sockets.ProtocolType.Tcp);
+                sock.Connect(ipa, portno);
+                if (sock.Connected == true) // Port is in use and connection is successful
+                    result = true;
+                sock.Close();
+            }
+            catch (System.Net.Sockets.SocketException ex)
+            {
+
+
+            }
+            return result;
+        }
+
+
+
+
+
+       
+
+
+
+
+    }
+}

+ 1091 - 0
ConvertLog/common/CommonObj.cs

@@ -0,0 +1,1091 @@
+using Newtonsoft.Json;
+using System.Text.Json.Serialization;
+
+namespace ConvertLog.common
+{
+    public class CommonObj
+    {
+
+        public CommonObj()
+        {
+           
+        }
+
+
+    }
+
+
+
+    public class LoginResponse
+    {
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("fullName")]
+
+        public string fullName { get; set; }
+
+        [JsonProperty("role")]
+
+        public string role { get; set; }
+
+        [JsonProperty("isActive")]
+
+        public string isActive { get; set; }
+
+
+
+    }
+
+
+    public class structPrizeObj
+    {
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("code")]
+
+        public string code { get; set; }
+
+        [JsonProperty("name")]
+
+        public string name { get; set; }
+
+        [JsonProperty("display")]
+
+        public string display { get; set; }
+
+        [JsonProperty("money")]
+
+        public string money { get; set; }
+
+        [JsonProperty("groupId")]
+
+        public string groupId { get; set; }
+
+        [JsonProperty("groupName")]
+
+        public string groupName { get; set; }
+
+    }
+
+
+
+    public class structPrizeDisPlayObj: structPrizeObj
+    {
+        [JsonProperty("totalDrawThisMonth")]
+
+        public string totalDrawThisMonth { get; set; }
+
+        [JsonProperty("totalMoneyThisMonth")]
+
+        public string totalMoneyThisMonth { get; set; }
+
+        [JsonProperty("totalDrawPreviousMonth")]
+
+        public string totalDrawPreviousMonth { get; set; }
+
+        [JsonProperty("totalMoneyPreviousMonth")]
+
+        public string totalMoneyPreviousMonth { get; set; }
+
+
+
+
+
+
+
+        [JsonProperty("totalDrawThisMonthMore")]
+
+        public string totalDrawThisMonthMore { get; set; }
+
+        [JsonProperty("totalMoneyThisMonthMore")]
+        public string totalMoneyThisMonthMore { get; set; }
+
+
+        [JsonProperty("unitOfPrize")]
+        public string unitOfPrize { get; set; }
+        [JsonProperty("length")]
+        public string length { get; set; }
+
+
+
+
+        [JsonProperty("unitOfPrizeThisMonth")]
+        public string unitOfPrizeThisMonth { get; set; }
+
+        [JsonProperty("unitOfPrizePreviousMonth")]
+        public string unitOfPrizePreviousMonth { get; set; }
+
+        [JsonProperty("unitOfPrizeThisMonthMore")]
+        public string unitOfPrizeThisMonthMore { get; set; }
+
+
+
+
+
+    }
+
+
+
+
+
+
+    public class prizeOfTermObj
+    {
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("termId")]
+
+        public string termId { get; set; }
+
+        [JsonProperty("prizeId")]
+
+        public string prizeId { get; set; }
+
+        [JsonProperty("prizeName")]
+
+        public string prizeName { get; set; }
+
+        [JsonProperty("prizeDisplay")]
+
+        public string prizeDisplay { get; set; }
+
+        [JsonProperty("prizeDisplayNew")]
+
+        public string prizeDisplayNew { get; set; }
+
+
+
+        [JsonProperty("groupId")]
+
+        public string groupId { get; set; }
+
+        [JsonProperty("groupName")]
+
+        public string groupName { get; set; }
+
+        [JsonProperty("prizeMoney")]
+
+        public string prizeMoney { get; set; }
+
+
+        [JsonProperty("prizeType")]
+
+        public string prizeType { get; set; }
+
+
+        [JsonProperty("prizeStatus")]
+
+        public string prizeStatus { get; set; }
+
+        [JsonProperty("drawStatus")]
+
+        public string drawStatus { get; set; }
+
+        [JsonProperty("totalDraw")]
+
+        public string totalDraw { get; set; }
+
+        [JsonProperty("totalDrawAll")]
+
+        public string totalDrawAll { get; set; }
+
+        [JsonProperty("totalDrawAccept")]
+        public string totalDrawAccept { get; set; }
+
+        [JsonProperty("totalDrawAcceptOrder")]
+        public string totalDrawAcceptOrder { get; set; }
+
+
+
+
+        [JsonProperty("totalDrawRemain")]
+
+        public string totalDrawRemain { get; set; }
+
+        [JsonProperty("totalDrawReject")]
+
+        public string totalDrawReject { get; set; }
+
+        [JsonProperty("totalDrawClear")]
+
+        public string totalDrawClear { get; set; }
+
+
+        [JsonProperty("totalDrawSold")]
+
+        public string totalDrawSold { get; set; }
+
+        [JsonProperty("totalDrawUnsold")]
+
+        public string totalDrawUnsold { get; set; }
+
+        [JsonProperty("totalDrawUnprint")]
+
+        public string totalDrawUnprint { get; set; }
+
+        [JsonProperty("prResult")]
+
+        public string prResult { get; set; }
+
+        
+        [JsonProperty("prResultStatus")]
+
+        public string prResultStatus { get; set; }
+
+        [JsonProperty("prResultStatusMsg")]
+        public string prResultStatusMsg { get; set; }
+
+
+
+        [JsonProperty("prTotalSold")]
+
+        public string prTotalSold { get; set; }
+
+        [JsonProperty("prTotalUnsold")]
+
+        public string prTotalUnsold { get; set; }
+
+        [JsonProperty("prStrReplace")]
+
+        public string prStrReplace { get; set; }
+
+        [JsonProperty("prStrLength")]
+
+        public string prStrLength { get; set; }
+
+        [JsonProperty("prIsMore")]
+        public string prIsMore { get; set; }
+
+        [JsonProperty("prWaiwaiStrResult")]
+        public string prWaiwaiStrResult { get; set; }
+
+
+
+
+        [JsonProperty("nowResult")]
+
+        public string nowResult { get; set; }
+
+        [JsonProperty("nowResultEn")]
+
+        public string nowResultEn { get; set; }
+
+
+
+        [JsonProperty("nowResultStatus")]
+
+        public string nowResultStatus { get; set; }
+
+        [JsonProperty("nowResultStatusMsg")]
+        public string nowResultStatusMsg { get; set; }
+
+
+
+        [JsonProperty("nowTotalSold")]
+
+        public string nowTotalSold { get; set; }
+
+        [JsonProperty("nowTotalUnsold")]
+
+        public string nowTotalUnsold { get; set; }
+
+        [JsonProperty("nowStrReplace")]
+
+        public string nowStrReplace { get; set; }
+
+        [JsonProperty("nowStrLength")]
+        public string nowStrLength { get; set; }
+
+
+        
+
+
+
+        
+
+        [JsonProperty("nowIsMore")]
+        public string nowIsMore { get; set; }
+
+        
+
+        [JsonProperty("nowWaiwaiStrResult")]
+        public string nowWaiwaiStrResult { get; set; }
+
+        [JsonProperty("termOnline")]
+        public string termOnline { get; set; }
+
+
+
+
+        [JsonProperty("totalMoreDraw")]
+        public string totalMoreDraw { get; set; }
+
+
+        [JsonProperty("prizeOrder")]
+        public string prizeOrder { get; set; }
+
+        [JsonProperty("prizeUnit")]
+        public string prizeUnit { get; set; }
+
+
+        [JsonProperty("timeUpdateResult")]
+        public string timeUpdateResult { get; set; }
+
+        [JsonProperty("secondWating")]
+        public string secondWating { get; set; }
+
+        [JsonProperty("status")]
+        public string status { get; set; }
+
+
+    }
+
+
+    public class prizeInReqeustObj
+    {
+        [JsonProperty("termId")]
+
+        public string termId { get; set; }
+
+        [JsonProperty("type")]
+
+        public string type { get; set; }
+
+        [JsonProperty("data")]
+
+        public List<prizeInObj> data { get; set; }
+
+    }
+    public class prizeInObj
+    {
+        //code
+        [JsonProperty("prizeId")]
+
+        public string prizeId { get; set; }
+
+        [JsonProperty("totalDraw")]
+        public string totalDraw { get; set; }
+
+
+
+
+
+        //Nhung truong sau day them moi
+        [JsonProperty("prizeTypeId")]
+        public string prizeTypeId { get; set; }
+
+        [JsonProperty("prizeTypeName")]
+        public string prizeTypeName { get; set; }
+
+
+
+        [JsonProperty("prizeMoney")]
+        public string prizeMoney { get; set; }
+
+        [JsonProperty("prizeCode")]
+        public string prizeCode { get; set; }
+
+
+        [JsonProperty("prizeNameEn")]
+        public string prizeNameEn { get; set; }
+
+
+        [JsonProperty("prizeNameMy")]
+        public string prizeNameMy { get; set; }
+
+        [JsonProperty("prizeNumBall")]
+        public string prizeNumBall { get; set; }
+
+        [JsonProperty("prizeNum")]
+        public string prizeNum { get; set; }
+
+        [JsonProperty("prizeTermIdIrd")]
+        public string prizeTermIdIrd { get; set; }
+
+        [JsonProperty("prizeOrder")]
+        public string prizeOrder { get; set; }
+
+
+
+
+
+    }
+
+
+
+
+
+    public class uploadObj
+    {
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("termId")]
+
+        public string termId { get; set; }
+
+        [JsonProperty("type")]
+
+        public string type { get; set; }
+
+        [JsonProperty("createDate")]
+
+        public string createDate { get; set; }
+
+        [JsonProperty("status")]
+
+        public string status { get; set; }
+
+        [JsonProperty("totalFile")]
+
+        public string totalFile { get; set; }
+
+        [JsonProperty("totalRecord")]
+
+        public string totalRecord { get; set; }
+
+        [JsonProperty("totalSuccess")]
+
+        public string totalSuccess { get; set; }
+
+        [JsonProperty("totalFalse")]
+
+        public string totalFalse { get; set; }
+
+
+        [JsonProperty("listFile")]
+
+        public List<uploadFileObj> listFile { get; set; }
+
+
+    }
+
+
+    public class uploadFileObj
+    {
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("fileId")]
+
+        public string fileId { get; set; }
+
+        [JsonProperty("fileName")]
+
+        public string fileName { get; set; }
+
+        [JsonProperty("status")]
+
+        public string status { get; set; }
+
+        [JsonProperty("totalRecord")]
+
+        public string totalRecord { get; set; }
+
+        [JsonProperty("totalRecordSucess")]
+
+        public string totalRecordSucess { get; set; }
+
+        [JsonProperty("totalRecordFalse")]
+
+        public string totalRecordFalse { get; set; }
+
+        [JsonProperty("createDate")]
+
+        public string createDate { get; set; }
+
+        [JsonProperty("startDate")]
+
+        public string startDate { get; set; }
+
+        [JsonProperty("endDate")]
+
+        public string endDate { get; set; }
+
+        [JsonProperty("termUploadId")]
+
+        public string termUploadId { get; set; }
+
+
+
+
+    }
+
+
+
+
+    public class uploadFileReqeustObj: ResponseCommon
+    {
+        [JsonProperty("termUploadId")]
+
+        public string termUploadId { get; set; }
+
+        
+
+        [JsonProperty("data")]
+
+        public List<fileInObj> data { get; set; }
+
+    }
+    public class fileInObj: ResponseCommon
+    {
+        [JsonProperty("fileId")]
+
+        public string fileId { get; set; }
+
+        [JsonProperty("fileName")]
+
+        public string fileName { get; set; }
+
+        
+
+
+    }
+
+
+
+    public class ResponseCommon
+    {
+        public ResponseCommon()
+        {
+            this.errorCode = "2910";
+            this.message = "System update";
+            this.httpStatusCode = "200";
+        }
+        public ResponseCommon(string _errCode, string _msg)
+        {
+            this.errorCode = _errCode;
+            this.message = _msg;
+        }
+        [JsonProperty("errorCode")]
+        public string errorCode { get; set; }
+
+        [JsonProperty("message")]
+        public string message { get; set; }
+
+        //[JsonProperty("httpStatusCode")]
+        [System.Text.Json.Serialization.JsonIgnore(Condition = JsonIgnoreCondition.Always)]
+        public string httpStatusCode { get; set; }
+    }
+
+    public class resultOfTermObj
+    {
+
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("code")]
+
+        public string code { get; set; }
+
+        [JsonProperty("name")]
+
+        public string name { get; set; }
+
+        [JsonProperty("display")]
+
+        public string display { get; set; }
+
+        [JsonProperty("money")]
+
+        public string money { get; set; }
+
+        [JsonProperty("groupId")]
+
+        public string groupId { get; set; }
+
+        [JsonProperty("groupName")]
+
+        public string groupName { get; set; }
+
+        [JsonProperty("result")]
+
+        public string result { get; set; }
+
+
+
+
+    }
+
+
+
+
+
+    public class resultOfTermObjV2
+    {
+
+        [JsonProperty("prizeId")]
+
+        public string prizeId { get; set; }
+
+        [JsonProperty("prizeName")]
+
+        public string prizeName { get; set; }
+
+        [JsonProperty("prizeDisplay")]
+
+        public string prizeDisplay { get; set; }
+
+        [JsonProperty("prizeMoney")]
+
+        public string prizeMoney { get; set; }
+
+        [JsonProperty("prizeOrder")]
+
+        public string prizeOrder { get; set; }
+
+        [JsonProperty("prizeResult")]
+        public string prizeResult { get; set; }
+
+
+        [JsonProperty("prizeResultArr")]
+        public List<resultObj> prizeResultArr { get; set; }
+
+
+
+        [JsonProperty("prizeResultThisTerm")]
+        public string prizeResultThisTerm { get; set; }
+
+
+        [JsonProperty("prizeResultThisTermArr")]
+        public List<resultObj> prizeResultThisTermArr { get; set; }
+
+
+        [JsonProperty("prizeResultThisMoreTerm")]
+        public string prizeResultThisMoreTerm { get; set; }
+
+
+        [JsonProperty("prizeResultThisMoreTermArr")]
+        public List<resultObj> prizeResultThisMoreTermArr { get; set; }
+
+
+
+
+
+        [JsonProperty("prizeResultPreTerm")]
+        public string prizeResultPreTerm { get; set; }
+
+
+        [JsonProperty("prizeResultPreTermArr")]
+        public List<resultObj> prizeResultPreTermArr { get; set; }
+
+
+
+
+        [JsonProperty("prizeResultMoreTerm")]
+        public string prizeResultMoreTerm { get; set; }
+
+
+
+        [JsonProperty("prizeResultMoreTermArr")]
+        public List<resultObj> prizeResultMoreTermArr { get; set; }
+
+
+
+        [JsonProperty("groupId")]
+
+        public string groupId { get; set; }
+
+        [JsonProperty("groupName")]
+
+        public string groupName { get; set; }
+
+
+        [JsonProperty("unit")]
+
+        public string unit { get; set; }
+
+
+        [JsonProperty("length")]
+
+        public string length { get; set; }
+
+
+
+
+        [JsonProperty("currentSold")]
+
+        public string currentSold { get; set; }
+
+        [JsonProperty("currentMoney")]
+
+        public string currentMoney { get; set; }
+
+        [JsonProperty("perviousSold")]
+
+        public string perviousSold { get; set; }
+
+        [JsonProperty("perviousMoney")]
+
+        public string perviousMoney { get; set; }
+
+        [JsonProperty("moreSold")]
+
+        public string moreSold { get; set; }
+
+        [JsonProperty("moreMoney")]
+
+        public string moreMoney { get; set; }
+
+
+        [JsonProperty("totalRevenue")]
+
+        public string totalRevenue { get; set; }
+
+
+        [JsonProperty("totalRevenuePri")]
+
+        public string totalRevenuePri { get; set; }
+
+
+
+
+
+        [JsonProperty("limitJackport")]
+        public string limitJackport { get; set; }
+
+        [JsonProperty("curentRevenue")]
+        public string curentRevenue { get; set; }
+
+        [JsonProperty("curentRenueWinner")]
+        public string curentRenueWinner { get; set; }
+
+
+        [JsonProperty("curentJackport")]
+        public string curentJackport { get; set; }
+
+
+        [JsonProperty("remainJackport")]
+        public string remainJackport { get; set; }
+
+        [JsonProperty("curentOther")]
+        public string curentOther { get; set; }
+
+
+        [JsonProperty("remainOther")]
+        public string remainOther { get; set; }
+
+
+        [JsonProperty("irdTerm")]
+        public string irdTerm { get; set; }
+
+
+
+
+
+
+
+    }
+
+
+
+
+    public class resultObj
+    {
+
+        [JsonProperty("id")]
+        public string id { get; set; }
+
+        [JsonProperty("ticket")]
+
+        public string ticket { get; set; }
+
+        [JsonProperty("type")]
+
+        public string type { get; set; }
+
+        [JsonProperty("action")]
+
+        public string action { get; set; }
+
+
+        [JsonProperty("totalSold")]
+        public string totalSold { get; set; }
+
+        [JsonProperty("money")]
+        public string money { get; set; }
+
+
+        [JsonProperty("totalMoney")]
+        public string totalMoney { get; set; }
+
+
+        [JsonProperty("isDelete")]
+        public string isDelete { get; set; }
+
+
+
+
+
+
+
+    }
+
+
+
+
+
+
+
+
+    public class importObj
+    {
+
+        [JsonProperty("uploadId")]
+
+        public string uploadId { get; set; }
+
+        [JsonProperty("uploadDetailId")]
+
+        public string uploadDetailId { get; set; }
+
+        [JsonProperty("type")]
+
+        public string type { get; set; }
+
+        [JsonProperty("ticket")]
+
+        public string ticket { get; set; }
+
+      
+
+    }
+
+
+
+    public class oneImportObj
+    {
+
+        [JsonProperty("uploadId")]
+
+        public string uploadId { get; set; }
+
+        [JsonProperty("uploadDetailId")]
+
+        public string uploadDetailId { get; set; }
+
+     
+        [JsonProperty("importObjList")]
+
+        public List<importObj> importObjList { get; set; }
+
+        public oneImportObj(string uploadId, string uploadDetailId, List<importObj> importObjList)
+        {
+            this.uploadId = uploadId;
+            this.uploadDetailId = uploadDetailId;
+            this.importObjList = importObjList;
+        }
+    }
+
+
+
+
+
+    public class totalFileImportObj
+    {
+
+        [JsonProperty("uploadId")]
+
+        public string uploadId { get; set; }
+
+        [JsonProperty("uploadDetailId")]
+
+        public string uploadDetailId { get; set; }
+
+        [JsonProperty("totalBlock")]
+
+        public string totalBlock { get; set; }
+
+        [JsonProperty("totalRow")]
+
+        public string totalRow { get; set; }
+
+        [JsonProperty("totalRowErr")]
+        public string totalRowErr { get; set; }
+
+
+        [JsonProperty("isFinsh")]
+        public string isFinsh { get; set; }
+
+        public totalFileImportObj(string uploadId, string uploadDetailId, string totalBlock, string totalRow, string totalRowErr, string isFinsh)
+        {
+            this.uploadId = uploadId;
+            this.uploadDetailId = uploadDetailId;
+            this.totalBlock = totalBlock;
+            this.totalRow = totalRow;
+            this.totalRowErr = totalRowErr;
+            this.isFinsh = isFinsh;
+        }
+    }
+
+
+
+
+
+
+    public class paramObj
+    {
+
+        [JsonProperty("id")]
+
+        public string id { get; set; }
+
+        [JsonProperty("code")]
+
+        public string code { get; set; }
+
+        [JsonProperty("display0")]
+
+        public string display0 { get; set; }
+
+        [JsonProperty("display1")]
+
+        public string display1 { get; set; }
+
+
+
+
+
+    }
+
+
+
+   
+
+
+    
+
+
+
+
+
+    public class drawResult
+    {
+        public string Id { get; set; }
+        public double Num { get; set; }
+    }
+
+
+    public class winnerObj
+    {
+        [JsonProperty("ticket")]
+        public string ticket { get; set; }
+
+        [JsonProperty("result")]
+        public string result { get; set; }
+
+        [JsonProperty("prizeName")]
+        public string prizeName { get; set; }
+
+        [JsonProperty("prizeDisplay")]
+        public string prizeDisplay { get; set; }
+
+
+        [JsonProperty("prizeGroupName")]
+        public string prizeGroupName { get; set; }
+
+
+    }
+
+
+
+
+
+
+
+
+
+
+    public class waiResult
+    {
+        [JsonProperty("id")]
+        public string id { get; set; }
+
+        [JsonProperty("result")]
+        public string result { get; set; }
+
+        [JsonProperty("resultLocal")]
+        public string resultLocal { get; set; }
+
+
+
+        [JsonProperty("termId")]
+        public string termId { get; set; }
+
+        [JsonProperty("prizeId")]
+        public string prizeId { get; set; }
+
+        [JsonProperty("prizeName")]
+        public string prizeName { get; set; }
+
+
+        [JsonProperty("prizeDisplay")]
+        public string prizeDisplay { get; set; }
+
+
+        [JsonProperty("groupId")]
+        public string groupId { get; set; }
+
+
+        [JsonProperty("groupName")]
+        public string groupName { get; set; }
+
+        [JsonProperty("prizeMoney")]
+        public string prizeMoney { get; set; }
+
+
+        [JsonProperty("prizeType")]
+        public string prizeType { get; set; }
+
+
+
+        [JsonProperty("lSold")]
+        public List<waiRange> lSold { get; set; }
+
+        [JsonProperty("lUnSold")]
+        public List<waiRange> lUnSold { get; set; }
+
+
+
+
+
+        public waiResult()
+        {
+            lSold = new List<waiRange>();
+            lUnSold = new List<waiRange>();
+
+        }
+
+    }
+
+
+
+    public class waiRange
+    {
+        [JsonProperty("from")]
+        public string from { get; set; }
+
+        [JsonProperty("to")]
+        public string to { get; set; }
+
+        [JsonProperty("total")]
+        public string total { get; set; }
+
+        [JsonProperty("seq")]
+        public string seq { get; set; }
+
+
+
+
+    }
+
+}

+ 152 - 0
ConvertLog/common/ConfigData.cs

@@ -0,0 +1,152 @@
+
+
+using log4net;
+using log4net.Config;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration.Json;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.IO;
+using System.Reflection;
+using System.Text;
+using System.Xml;
+using ConvertLog.thread;
+using log4net.Repository.Hierarchy;
+using System.Data;
+
+
+
+namespace ConvertLog.common
+{
+    
+    public class ConfigData
+    {
+     
+
+        public static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+
+        public static string AppId = "";
+        public static string pathFileImport = "";
+   
+        public static IDictionary<int, string> threadIsFree;
+        public static IDictionary<string, string> languageMyToEn;
+        public static IDictionary<string, string> languageEntoMy;
+
+        public static ProcessFile _threadFile;
+        public static ProcessImport _threadFileImport;
+        public static ProcessImortEnd _threadFileImportEnd;
+  
+        public static IDictionary<string, List<totalFileImportObj>> _arrtotal;
+        public static Queue _ImportQueue;
+
+        public static bool loadOK = false;
+        public static string result = "";
+
+        public static string GetValuesAppSetting(string key, string subkey)
+        {
+            IConfigurationBuilder builder = new ConfigurationBuilder();
+            builder.AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"));
+
+            var root = builder.Build();
+            var sampleConnectionString = root.GetSection(key)[subkey];
+            return sampleConnectionString;
+        }
+
+        public static void LoadConfigData()
+        {
+            try
+            {
+               
+
+                //log4net.Config.XmlConfigurator.Configure();
+                //var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
+                //XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));
+
+                XmlDocument log4netConfig = new XmlDocument();
+                log4netConfig.Load(File.OpenRead("log4net.config"));
+                var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
+                           typeof(log4net.Repository.Hierarchy.Hierarchy));
+                log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
+
+                log.Info("start loaf ConfigData");
+
+                loadOK = false;
+                AppId = GetValuesAppSetting("app", "AppId");
+                pathFileImport = GetValuesAppSetting("app", "pathFileImport");
+
+              
+
+                _ImportQueue = new Queue();
+                _arrtotal = new Dictionary<string, List<totalFileImportObj>>();
+                threadIsFree = new Dictionary<int, string>();
+                languageEntoMy = new Dictionary<string, string>();
+                languageMyToEn = new Dictionary<string, string>();
+
+
+                _threadFile = new ProcessFile();
+                string sName1 = "_threadFile Stard: " + Guid.NewGuid().ToString();
+                _threadFile.Start(sName1);
+                log.Info("start success thread " + sName1);
+
+
+
+                _threadFileImportEnd = new ProcessImortEnd();
+                string sName2 = "_threadFileImportEnd Stard: " + Guid.NewGuid().ToString();
+                _threadFileImportEnd.Start(sName2);
+                log.Info("start success thread " + sName2);
+
+                for (int i = 0; i < 10; i++)
+                {
+                    _threadFileImport = new ProcessImport();
+                    string sNamei = "_threadFileImport " + i.ToString() + " Stard: " + Guid.NewGuid().ToString();
+                    _threadFileImport.Start(i);
+                    log.Info("start success thread " + sNamei);
+
+                    threadIsFree.Add(i, "1");
+
+
+                }
+
+
+                result = "";
+
+             
+
+                log.Info("load vaiable success");
+                loadOK = true;
+
+            }
+            catch (Exception ex)
+            {
+                log.Info("Load ConfigData err: "+ ex.ToString());
+            }
+
+        }
+
+        public static void WriteLineAppendTextFile(string sFileName, string sLine)
+        {
+            try
+            {
+                StreamWriter sw = null;
+
+                if (File.Exists(sFileName))
+                    sw = File.AppendText(sFileName);
+
+                else
+                    sw = File.CreateText(sFileName);
+
+                sw.WriteLine(sLine);
+                sw.Close();
+            }
+            catch
+            {
+                //MessageBox.Show(ex1.Message);
+            }
+        }
+
+
+
+
+    }
+}

+ 219 - 0
ConvertLog/common/Queue.cs

@@ -0,0 +1,219 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Text;
+using System.Text.Json;
+
+namespace ConvertLog.common
+{
+    public class Queue
+    {
+        private int maxQueueSize = 0;
+        private ArrayList queueData = new ArrayList();
+        private object mutex;
+
+
+        public Queue()
+        {
+            maxQueueSize = 1000000;
+            mutex = this;
+        }
+
+
+        public Queue(int maxSize)
+        {
+            maxQueueSize = maxSize;
+            mutex = this;
+        }
+
+
+        public int Size()
+        {
+            lock (mutex)
+            {
+                return queueData.Count;
+            }
+        }
+
+
+
+        public bool IsEmpty()
+        {
+            lock (mutex)
+            {
+                return (queueData.Count == 0);
+            }
+        }
+
+
+
+        public object Dequeue()
+        {
+            lock (mutex)
+            {
+                object first = null;
+                if (queueData.Count > 0)
+                {
+                    first = queueData[0];
+                    queueData.RemoveAt(0);
+                }
+                return first;
+            }
+        }
+
+
+
+
+        public object Dequeue(object obj)
+        {
+            object found = null;
+            lock (mutex)
+            {
+                found = queueData.Contains(obj);
+                if (found != null)
+                {
+                    queueData.Remove(obj);
+                }
+            }
+            return obj;
+        }
+
+
+
+
+        public void Enqueue(Object obj)
+        {
+            lock (mutex)
+            {
+                if (queueData.Count >= maxQueueSize)
+                {
+                    throw new IndexOutOfRangeException("Queue is full. Element not added.");
+                }
+                queueData.Add(obj);
+            }
+        }
+
+        public void Clear()
+        {
+            lock (mutex)
+            {
+                if (queueData.Count >= 0)
+                {
+                    queueData.Clear();
+                }
+            }
+        }
+
+
+        public object Find(object obj)
+        {
+            lock (mutex)
+            {
+                object current;
+                IEnumerator iter = queueData.GetEnumerator();
+                while (iter.MoveNext())
+                {
+                    current = iter.Current;
+                    if (current.Equals(obj))
+                    {
+                        return current;
+                    }
+                }
+            }
+            return null;
+        }
+
+        public ArrayList ToArrayList()
+        {
+            return queueData;
+        }
+
+        public ArrayList ToArrayListAndClear()
+        {
+            lock (mutex)
+            {
+                ArrayList result = new ArrayList();
+                if (queueData.Count >= 0)
+                {
+                    result.AddRange(queueData);
+                    queueData.Clear();
+                }
+                return result;
+            }
+        }
+
+
+        public void SaveQueue(string file_name)
+        {
+            // Chỉ lưu những phần tử đúng kiểu oneImportObj (đang được sử dụng trong project)
+            var typedList = new List<oneImportObj>();
+            foreach (var item in queueData)
+            {
+                if (item is oneImportObj obj)
+                {
+                    typedList.Add(obj);
+                }
+            }
+
+            var options = new JsonSerializerOptions
+            {
+                WriteIndented = false
+            };
+
+            string json = JsonSerializer.Serialize(typedList, options);
+            File.WriteAllText(file_name, json);
+        }
+
+        public int LoadQueue(string file_name)
+        {
+            if (File.Exists(file_name))
+            {
+                string json = File.ReadAllText(file_name);
+                if (!string.IsNullOrWhiteSpace(json))
+                {
+                    var list = JsonSerializer.Deserialize<List<oneImportObj>>(json) ?? new List<oneImportObj>();
+
+                    lock (mutex)
+                    {
+                        queueData.Clear();
+                        foreach (var item in list)
+                        {
+                            queueData.Add(item);
+                        }
+                    }
+                }
+            }
+            return queueData.Count;
+        }
+
+        //public void SaveQueue(string file_name)
+        //{
+        //    if (File.Exists(file_name))
+        //    {
+        //        File.Delete(file_name);
+        //    }
+        //    Stream st = File.Create(file_name);
+        //    BinaryFormatter bf = new BinaryFormatter();
+        //    bf.Serialize(st, queueData);
+        //    st.Close();
+        //}
+
+        //public int LoadQueue(string file_name)
+        //{
+        //    if (File.Exists(file_name))
+        //    {
+        //        Stream st = File.OpenRead(file_name);
+        //        if (st.Length > 0)
+        //        {
+        //            BinaryFormatter bf = new BinaryFormatter();
+        //            queueData = (ArrayList)bf.Deserialize(st);
+        //        }
+        //        st.Close();
+        //        //File.Delete(file_name);
+        //    }
+        //    return queueData.Count;
+        //}
+    }
+}

BIN
ConvertLog/convert.tar


+ 20 - 0
ConvertLog/log4net.config

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<log4net>
+	<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
+		<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
+		<file value="C:\Temp\" />
+		<datePattern value="yyyy-MM-dd.'txt'"/>
+		<staticLogFileName value="false"/>
+		<appendToFile value="true"/>
+		<rollingStyle value="Date"/>
+		<maxSizeRollBackups value="100"/>
+		<maximumFileSize value="20MB"/>
+		<layout type="log4net.Layout.PatternLayout">
+			<conversionPattern value="%date [%thread] %-5level App  %newline %message %newline %newline"/>
+		</layout>
+	</appender>
+	<root>
+		<level value="ALL"/>
+		<appender-ref ref="RollingLogFileAppender"/>
+	</root>
+</log4net>

BIN
ConvertLog/publish/CommonObj.dll


BIN
ConvertLog/publish/CommonObj.pdb


BIN
ConvertLog/publish/ConvertLog


+ 3528 - 0
ConvertLog/publish/ConvertLog.deps.json

@@ -0,0 +1,3528 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v6.0/linux-x64",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v6.0": {},
+    ".NETCoreApp,Version=v6.0/linux-x64": {
+      "ConvertLog/1.0.0": {
+        "dependencies": {
+          "CommonObj": "1.0.0",
+          "Microsoft.Extensions.Configuration": "9.0.1",
+          "Microsoft.Extensions.Configuration.Json": "9.0.0",
+          "Newtonsoft.Json": "13.0.3",
+          "Oracle.ManagedDataAccess.Core": "3.21.100",
+          "log4net": "2.0.11",
+          "runtimepack.Microsoft.NETCore.App.Runtime.linux-x64": "6.0.32"
+        },
+        "runtime": {
+          "ConvertLog.dll": {}
+        }
+      },
+      "runtimepack.Microsoft.NETCore.App.Runtime.linux-x64/6.0.32": {
+        "runtime": {
+          "Microsoft.CSharp.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "Microsoft.VisualBasic.Core.dll": {
+            "assemblyVersion": "11.0.0.0",
+            "fileVersion": "11.100.3224.31407"
+          },
+          "Microsoft.VisualBasic.dll": {
+            "assemblyVersion": "10.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "Microsoft.Win32.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "Microsoft.Win32.Registry.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.AppContext.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Buffers.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Collections.Concurrent.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Collections.Immutable.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Collections.NonGeneric.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Collections.Specialized.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Collections.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.Annotations.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.DataAnnotations.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.EventBasedAsync.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.TypeConverter.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ComponentModel.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Configuration.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Console.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Core.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Data.Common.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Data.DataSetExtensions.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Data.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.Contracts.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.Debug.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.DiagnosticSource.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.FileVersionInfo.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.Process.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.StackTrace.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.TextWriterTraceListener.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.Tools.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.TraceSource.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Diagnostics.Tracing.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Drawing.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Drawing.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Dynamic.Runtime.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Formats.Asn1.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Globalization.Calendars.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Globalization.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Globalization.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Compression.Brotli.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Compression.FileSystem.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Compression.ZipFile.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Compression.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.FileSystem.AccessControl.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.FileSystem.DriveInfo.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.FileSystem.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.FileSystem.Watcher.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.FileSystem.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.IsolatedStorage.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.MemoryMappedFiles.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Pipes.AccessControl.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.Pipes.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.UnmanagedMemoryStream.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.IO.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Linq.Expressions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Linq.Parallel.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Linq.Queryable.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Linq.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Memory.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Http.Json.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Http.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.HttpListener.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Mail.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.NameResolution.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.NetworkInformation.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Ping.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Quic.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Requests.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Security.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.ServicePoint.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.Sockets.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.WebClient.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.WebHeaderCollection.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.WebProxy.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.WebSockets.Client.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.WebSockets.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Net.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Numerics.Vectors.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Numerics.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ObjectModel.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Private.CoreLib.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Private.DataContractSerialization.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Private.Uri.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Private.Xml.Linq.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Private.Xml.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.DispatchProxy.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Emit.ILGeneration.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Emit.Lightweight.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Emit.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Metadata.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.TypeExtensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Reflection.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Resources.Reader.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Resources.ResourceManager.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Resources.Writer.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.CompilerServices.Unsafe.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "0.0.0.0"
+          },
+          "System.Runtime.CompilerServices.VisualC.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Handles.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.InteropServices.RuntimeInformation.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.InteropServices.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Intrinsics.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Loader.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Numerics.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Serialization.Formatters.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Serialization.Json.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Serialization.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Serialization.Xml.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.Serialization.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Runtime.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.AccessControl.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Claims.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.Algorithms.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.Cng.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.Csp.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.Encoding.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.OpenSsl.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.Primitives.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Cryptography.X509Certificates.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Principal.Windows.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.Principal.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.SecureString.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Security.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ServiceModel.Web.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ServiceProcess.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Text.Encoding.CodePages.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Text.Encoding.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Text.Encoding.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Text.RegularExpressions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Channels.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Overlapped.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Tasks.Dataflow.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Tasks.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Tasks.Parallel.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Tasks.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Thread.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.ThreadPool.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.Timer.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Threading.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Transactions.Local.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Transactions.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.ValueTuple.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Web.HttpUtility.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Web.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Windows.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.Linq.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.ReaderWriter.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.Serialization.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.XDocument.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.XPath.XDocument.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.XPath.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.XmlDocument.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.XmlSerializer.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.Xml.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "System.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "WindowsBase.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "mscorlib.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.3224.31407"
+          },
+          "netstandard.dll": {
+            "assemblyVersion": "2.1.0.0",
+            "fileVersion": "6.0.3224.31407"
+          }
+        },
+        "native": {
+          "createdump": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libSystem.Globalization.Native.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libSystem.IO.Compression.Native.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libSystem.Native.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libSystem.Net.Security.Native.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libSystem.Security.Cryptography.Native.OpenSsl.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libclrjit.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libcoreclr.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libcoreclrtraceptprovider.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libdbgshim.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libhostfxr.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libhostpolicy.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libmscordaccore.so": {
+            "fileVersion": "0.0.0.0"
+          },
+          "libmscordbi.so": {
+            "fileVersion": "0.0.0.0"
+          }
+        }
+      },
+      "log4net/2.0.11": {
+        "dependencies": {
+          "System.Configuration.ConfigurationManager": "6.0.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/log4net.dll": {
+            "assemblyVersion": "2.0.11.0",
+            "fileVersion": "2.0.11.0"
+          }
+        }
+      },
+      "Microsoft.Bcl.AsyncInterfaces/9.0.0": {
+        "runtime": {
+          "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.Configuration/9.0.1": {
+        "dependencies": {
+          "Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
+          "Microsoft.Extensions.Primitives": "9.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.124.61010"
+          }
+        }
+      },
+      "Microsoft.Extensions.Configuration.Abstractions/9.0.1": {
+        "dependencies": {
+          "Microsoft.Extensions.Primitives": "9.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.124.61010"
+          }
+        }
+      },
+      "Microsoft.Extensions.Configuration.FileExtensions/9.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.Configuration": "9.0.1",
+          "Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
+          "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0",
+          "Microsoft.Extensions.FileProviders.Physical": "9.0.0",
+          "Microsoft.Extensions.Primitives": "9.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.Configuration.Json/9.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.Configuration": "9.0.1",
+          "Microsoft.Extensions.Configuration.Abstractions": "9.0.1",
+          "Microsoft.Extensions.Configuration.FileExtensions": "9.0.0",
+          "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0",
+          "System.Text.Json": "9.0.0"
+        },
+        "runtime": {
+          "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.FileProviders.Abstractions/9.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.Primitives": "9.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.FileProviders.Physical/9.0.0": {
+        "dependencies": {
+          "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0",
+          "Microsoft.Extensions.FileSystemGlobbing": "9.0.0",
+          "Microsoft.Extensions.Primitives": "9.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.FileSystemGlobbing/9.0.0": {
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "Microsoft.Extensions.Primitives/9.0.1": {
+        "dependencies": {
+          "System.Memory": "4.5.5",
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.124.61010"
+          }
+        }
+      },
+      "Microsoft.Win32.SystemEvents/6.0.0": {
+        "runtime": {
+          "lib/net6.0/Microsoft.Win32.SystemEvents.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "Newtonsoft.Json/13.0.3": {
+        "runtime": {
+          "lib/net6.0/Newtonsoft.Json.dll": {
+            "assemblyVersion": "13.0.0.0",
+            "fileVersion": "13.0.3.27908"
+          }
+        }
+      },
+      "Oracle.ManagedDataAccess.Core/3.21.100": {
+        "dependencies": {
+          "System.Diagnostics.PerformanceCounter": "6.0.1",
+          "System.DirectoryServices": "6.0.1",
+          "System.DirectoryServices.Protocols": "6.0.1"
+        },
+        "runtime": {
+          "lib/netstandard2.1/Oracle.ManagedDataAccess.dll": {
+            "assemblyVersion": "3.1.21.1",
+            "fileVersion": "3.1.21.1"
+          }
+        }
+      },
+      "Pipelines.Sockets.Unofficial/2.2.0": {
+        "dependencies": {
+          "System.IO.Pipelines": "9.0.0"
+        },
+        "runtime": {
+          "lib/net5.0/Pipelines.Sockets.Unofficial.dll": {
+            "assemblyVersion": "1.0.0.0",
+            "fileVersion": "2.2.0.45337"
+          }
+        }
+      },
+      "StackExchange.Redis/2.2.88": {
+        "dependencies": {
+          "Pipelines.Sockets.Unofficial": "2.2.0",
+          "System.Diagnostics.PerformanceCounter": "6.0.1"
+        },
+        "runtime": {
+          "lib/net5.0/StackExchange.Redis.dll": {
+            "assemblyVersion": "2.0.0.0",
+            "fileVersion": "2.2.88.56325"
+          }
+        }
+      },
+      "System.Buffers/4.5.1": {},
+      "System.Configuration.ConfigurationManager/6.0.0": {
+        "dependencies": {
+          "System.Security.Cryptography.ProtectedData": "6.0.0",
+          "System.Security.Permissions": "6.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/System.Configuration.ConfigurationManager.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "System.Diagnostics.PerformanceCounter/6.0.1": {
+        "dependencies": {
+          "System.Configuration.ConfigurationManager": "6.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/System.Diagnostics.PerformanceCounter.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.422.16404"
+          }
+        }
+      },
+      "System.DirectoryServices/6.0.1": {
+        "dependencies": {
+          "System.Security.AccessControl": "6.0.0",
+          "System.Security.Permissions": "6.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/System.DirectoryServices.dll": {
+            "assemblyVersion": "4.0.0.0",
+            "fileVersion": "6.0.1423.7309"
+          }
+        }
+      },
+      "System.DirectoryServices.Protocols/6.0.1": {
+        "runtime": {
+          "runtimes/linux/lib/net6.0/System.DirectoryServices.Protocols.dll": {
+            "assemblyVersion": "6.0.0.1",
+            "fileVersion": "6.0.222.6406"
+          }
+        }
+      },
+      "System.Drawing.Common/6.0.0": {
+        "dependencies": {
+          "Microsoft.Win32.SystemEvents": "6.0.0"
+        },
+        "runtime": {
+          "runtimes/unix/lib/net6.0/System.Drawing.Common.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "System.IO.Pipelines/9.0.0": {
+        "dependencies": {
+          "System.Buffers": "4.5.1",
+          "System.Memory": "4.5.5",
+          "System.Threading.Tasks.Extensions": "4.5.4"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.IO.Pipelines.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "System.Memory/4.5.5": {},
+      "System.Runtime.CompilerServices.Unsafe/6.0.0": {},
+      "System.Security.AccessControl/6.0.0": {},
+      "System.Security.Cryptography.ProtectedData/6.0.0": {
+        "runtime": {
+          "lib/net6.0/System.Security.Cryptography.ProtectedData.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "System.Security.Permissions/6.0.0": {
+        "dependencies": {
+          "System.Security.AccessControl": "6.0.0",
+          "System.Windows.Extensions": "6.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/System.Security.Permissions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "System.Text.Encodings.Web/9.0.0": {
+        "dependencies": {
+          "System.Buffers": "4.5.1",
+          "System.Memory": "4.5.5",
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Text.Encodings.Web.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "System.Text.Json/9.0.0": {
+        "dependencies": {
+          "Microsoft.Bcl.AsyncInterfaces": "9.0.0",
+          "System.Buffers": "4.5.1",
+          "System.IO.Pipelines": "9.0.0",
+          "System.Memory": "4.5.5",
+          "System.Runtime.CompilerServices.Unsafe": "6.0.0",
+          "System.Text.Encodings.Web": "9.0.0",
+          "System.Threading.Tasks.Extensions": "4.5.4"
+        },
+        "runtime": {
+          "lib/netstandard2.0/System.Text.Json.dll": {
+            "assemblyVersion": "9.0.0.0",
+            "fileVersion": "9.0.24.52809"
+          }
+        }
+      },
+      "System.Threading.Tasks.Extensions/4.5.4": {},
+      "System.Windows.Extensions/6.0.0": {
+        "dependencies": {
+          "System.Drawing.Common": "6.0.0"
+        },
+        "runtime": {
+          "lib/net6.0/System.Windows.Extensions.dll": {
+            "assemblyVersion": "6.0.0.0",
+            "fileVersion": "6.0.21.52210"
+          }
+        }
+      },
+      "CommonObj/1.0.0": {
+        "dependencies": {
+          "StackExchange.Redis": "2.2.88",
+          "log4net": "2.0.11"
+        },
+        "runtime": {
+          "CommonObj.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "ConvertLog/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "runtimepack.Microsoft.NETCore.App.Runtime.linux-x64/6.0.32": {
+      "type": "runtimepack",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "log4net/2.0.11": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-4MEfp6dSN/Cl4XHRqBo8eOkhlH9AOt/ydmPRaj/FHuKHTNoPuKjbaT97aACmePpkW5QHQ+YudhYYvVStabOZmQ==",
+      "path": "log4net/2.0.11",
+      "hashPath": "log4net.2.0.11.nupkg.sha512"
+    },
+    "Microsoft.Bcl.AsyncInterfaces/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-owmu2Cr3IQ8yQiBleBHlGk8dSQ12oaF2e7TpzwJKEl4m84kkZJjEY1n33L67Y3zM5jPOjmmbdHjbfiL0RqcMRQ==",
+      "path": "microsoft.bcl.asyncinterfaces/9.0.0",
+      "hashPath": "microsoft.bcl.asyncinterfaces.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Configuration/9.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-VuthqFS+ju6vT8W4wevdhEFiRi1trvQtkzWLonApfF5USVzzDcTBoY3F24WvN/tffLSrycArVfX1bThm/9xY2A==",
+      "path": "microsoft.extensions.configuration/9.0.1",
+      "hashPath": "microsoft.extensions.configuration.9.0.1.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Configuration.Abstractions/9.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-+4hfFIY1UjBCXFTTOd+ojlDPq6mep3h5Vq5SYE3Pjucr7dNXmq4S/6P/LoVnZFz2e/5gWp/om4svUFgznfULcA==",
+      "path": "microsoft.extensions.configuration.abstractions/9.0.1",
+      "hashPath": "microsoft.extensions.configuration.abstractions.9.0.1.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Configuration.FileExtensions/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-4EK93Jcd2lQG4GY6PAw8jGss0ZzFP0vPc1J85mES5fKNuDTqgFXHba9onBw2s18fs3I4vdo2AWyfD1mPAxWSQQ==",
+      "path": "microsoft.extensions.configuration.fileextensions/9.0.0",
+      "hashPath": "microsoft.extensions.configuration.fileextensions.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Configuration.Json/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-WiTK0LrnsqmedrbzwL7f4ZUo+/wByqy2eKab39I380i2rd8ImfCRMrtkqJVGDmfqlkP/YzhckVOwPc5MPrSNpg==",
+      "path": "microsoft.extensions.configuration.json/9.0.0",
+      "hashPath": "microsoft.extensions.configuration.json.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.FileProviders.Abstractions/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==",
+      "path": "microsoft.extensions.fileproviders.abstractions/9.0.0",
+      "hashPath": "microsoft.extensions.fileproviders.abstractions.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.FileProviders.Physical/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-3+ZUSpOSmie+o8NnLIRqCxSh65XL/ExU7JYnFOg58awDRlY3lVpZ9A369jkoZL1rpsq7LDhEfkn2ghhGaY1y5Q==",
+      "path": "microsoft.extensions.fileproviders.physical/9.0.0",
+      "hashPath": "microsoft.extensions.fileproviders.physical.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.FileSystemGlobbing/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-jGFKZiXs2HNseK3NK/rfwHNNovER71jSj4BD1a/649ml9+h6oEtYd0GSALZDNW8jZ2Rh+oAeadOa6sagYW1F2A==",
+      "path": "microsoft.extensions.filesystemglobbing/9.0.0",
+      "hashPath": "microsoft.extensions.filesystemglobbing.9.0.0.nupkg.sha512"
+    },
+    "Microsoft.Extensions.Primitives/9.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-bHtTesA4lrSGD1ZUaMIx6frU3wyy0vYtTa/hM6gGQu5QNrydObv8T5COiGUWsisflAfmsaFOe9Xvw5NSO99z0g==",
+      "path": "microsoft.extensions.primitives/9.0.1",
+      "hashPath": "microsoft.extensions.primitives.9.0.1.nupkg.sha512"
+    },
+    "Microsoft.Win32.SystemEvents/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-hqTM5628jSsQiv+HGpiq3WKBl2c8v1KZfby2J6Pr7pEPlK9waPdgEO6b8A/+/xn/yZ9ulv8HuqK71ONy2tg67A==",
+      "path": "microsoft.win32.systemevents/6.0.0",
+      "hashPath": "microsoft.win32.systemevents.6.0.0.nupkg.sha512"
+    },
+    "Newtonsoft.Json/13.0.3": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
+      "path": "newtonsoft.json/13.0.3",
+      "hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
+    },
+    "Oracle.ManagedDataAccess.Core/3.21.100": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-nsqyUE+v246WB0SOnR1u9lfZxYoNcdj1fRjTt7TOhCN0JurEc6+qu+mMe+dl1sySB2UpyWdfqHG1iSQJYaXEfA==",
+      "path": "oracle.manageddataaccess.core/3.21.100",
+      "hashPath": "oracle.manageddataaccess.core.3.21.100.nupkg.sha512"
+    },
+    "Pipelines.Sockets.Unofficial/2.2.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-7hzHplEIVOGBl5zOQZGX/DiJDHjq+RVRVrYgDiqXb6RriqWAdacXxp+XO9WSrATCEXyNOUOQg9aqQArsjase/A==",
+      "path": "pipelines.sockets.unofficial/2.2.0",
+      "hashPath": "pipelines.sockets.unofficial.2.2.0.nupkg.sha512"
+    },
+    "StackExchange.Redis/2.2.88": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-JJi1jcO3/ZiamBhlsC/TR8aZmYf+nqpGzMi0HRRCy5wJkUPmMnRp0kBA6V84uhU8b531FHSdTDaFCAyCUJomjA==",
+      "path": "stackexchange.redis/2.2.88",
+      "hashPath": "stackexchange.redis.2.2.88.nupkg.sha512"
+    },
+    "System.Buffers/4.5.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==",
+      "path": "system.buffers/4.5.1",
+      "hashPath": "system.buffers.4.5.1.nupkg.sha512"
+    },
+    "System.Configuration.ConfigurationManager/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-7T+m0kDSlIPTHIkPMIu6m6tV6qsMqJpvQWW2jIc2qi7sn40qxFo0q+7mEQAhMPXZHMKnWrnv47ntGlM/ejvw3g==",
+      "path": "system.configuration.configurationmanager/6.0.0",
+      "hashPath": "system.configuration.configurationmanager.6.0.0.nupkg.sha512"
+    },
+    "System.Diagnostics.PerformanceCounter/6.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-dDl7Gx3bmSrM2k2ZIm+ucEJnLloZRyvfQF1DvfvATcGF3jtaUBiPvChma+6ZcZzxWMirN3kCywkW7PILphXyMQ==",
+      "path": "system.diagnostics.performancecounter/6.0.1",
+      "hashPath": "system.diagnostics.performancecounter.6.0.1.nupkg.sha512"
+    },
+    "System.DirectoryServices/6.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-935IbO7h5FDGYxeO3cbx/CuvBBuk/VI8sENlfmXlh1pupNOB3LAGzdYdPY8CawGJFP7KNrHK5eUlsFoz3F6cuA==",
+      "path": "system.directoryservices/6.0.1",
+      "hashPath": "system.directoryservices.6.0.1.nupkg.sha512"
+    },
+    "System.DirectoryServices.Protocols/6.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-ndUZlEkAMc1XzM0xGN++SsJrNhRkIHaKI8+te325vrUgoLT1ufWNI6KB8FFrL7NpRMHPrdxP99aF3fHbAPxW0A==",
+      "path": "system.directoryservices.protocols/6.0.1",
+      "hashPath": "system.directoryservices.protocols.6.0.1.nupkg.sha512"
+    },
+    "System.Drawing.Common/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-NfuoKUiP2nUWwKZN6twGqXioIe1zVD0RIj2t976A+czLHr2nY454RwwXs6JU9Htc6mwqL6Dn/nEL3dpVf2jOhg==",
+      "path": "system.drawing.common/6.0.0",
+      "hashPath": "system.drawing.common.6.0.0.nupkg.sha512"
+    },
+    "System.IO.Pipelines/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-eA3cinogwaNB4jdjQHOP3Z3EuyiDII7MT35jgtnsA4vkn0LUrrSHsU0nzHTzFzmaFYeKV7MYyMxOocFzsBHpTw==",
+      "path": "system.io.pipelines/9.0.0",
+      "hashPath": "system.io.pipelines.9.0.0.nupkg.sha512"
+    },
+    "System.Memory/4.5.5": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==",
+      "path": "system.memory/4.5.5",
+      "hashPath": "system.memory.4.5.5.nupkg.sha512"
+    },
+    "System.Runtime.CompilerServices.Unsafe/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
+      "path": "system.runtime.compilerservices.unsafe/6.0.0",
+      "hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
+    },
+    "System.Security.AccessControl/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-AUADIc0LIEQe7MzC+I0cl0rAT8RrTAKFHl53yHjEUzNVIaUlhFY11vc2ebiVJzVBuOzun6F7FBA+8KAbGTTedQ==",
+      "path": "system.security.accesscontrol/6.0.0",
+      "hashPath": "system.security.accesscontrol.6.0.0.nupkg.sha512"
+    },
+    "System.Security.Cryptography.ProtectedData/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-rp1gMNEZpvx9vP0JW0oHLxlf8oSiQgtno77Y4PLUBjSiDYoD77Y8uXHr1Ea5XG4/pIKhqAdxZ8v8OTUtqo9PeQ==",
+      "path": "system.security.cryptography.protecteddata/6.0.0",
+      "hashPath": "system.security.cryptography.protecteddata.6.0.0.nupkg.sha512"
+    },
+    "System.Security.Permissions/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-T/uuc7AklkDoxmcJ7LGkyX1CcSviZuLCa4jg3PekfJ7SU0niF0IVTXwUiNVP9DSpzou2PpxJ+eNY2IfDM90ZCg==",
+      "path": "system.security.permissions/6.0.0",
+      "hashPath": "system.security.permissions.6.0.0.nupkg.sha512"
+    },
+    "System.Text.Encodings.Web/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-e2hMgAErLbKyUUwt18qSBf9T5Y+SFAL3ZedM8fLupkVj8Rj2PZ9oxQ37XX2LF8fTO1wNIxvKpihD7Of7D/NxZw==",
+      "path": "system.text.encodings.web/9.0.0",
+      "hashPath": "system.text.encodings.web.9.0.0.nupkg.sha512"
+    },
+    "System.Text.Json/9.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==",
+      "path": "system.text.json/9.0.0",
+      "hashPath": "system.text.json.9.0.0.nupkg.sha512"
+    },
+    "System.Threading.Tasks.Extensions/4.5.4": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==",
+      "path": "system.threading.tasks.extensions/4.5.4",
+      "hashPath": "system.threading.tasks.extensions.4.5.4.nupkg.sha512"
+    },
+    "System.Windows.Extensions/6.0.0": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-IXoJOXIqc39AIe+CIR7koBtRGMiCt/LPM3lI+PELtDIy9XdyeSrwXFdWV9dzJ2Awl0paLWUaknLxFQ5HpHZUog==",
+      "path": "system.windows.extensions/6.0.0",
+      "hashPath": "system.windows.extensions.6.0.0.nupkg.sha512"
+    },
+    "CommonObj/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    }
+  },
+  "runtimes": {
+    "alpine-x64": [
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.10-x64": [
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.11-x64": [
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.12-x64": [
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.13-x64": [
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.14-x64": [
+      "alpine.3.14",
+      "alpine.3.13-x64",
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.15-x64": [
+      "alpine.3.15",
+      "alpine.3.14-x64",
+      "alpine.3.14",
+      "alpine.3.13-x64",
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.16-x64": [
+      "alpine.3.16",
+      "alpine.3.15-x64",
+      "alpine.3.15",
+      "alpine.3.14-x64",
+      "alpine.3.14",
+      "alpine.3.13-x64",
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.17-x64": [
+      "alpine.3.17",
+      "alpine.3.16-x64",
+      "alpine.3.16",
+      "alpine.3.15-x64",
+      "alpine.3.15",
+      "alpine.3.14-x64",
+      "alpine.3.14",
+      "alpine.3.13-x64",
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.18-x64": [
+      "alpine.3.18",
+      "alpine.3.17-x64",
+      "alpine.3.17",
+      "alpine.3.16-x64",
+      "alpine.3.16",
+      "alpine.3.15-x64",
+      "alpine.3.15",
+      "alpine.3.14-x64",
+      "alpine.3.14",
+      "alpine.3.13-x64",
+      "alpine.3.13",
+      "alpine.3.12-x64",
+      "alpine.3.12",
+      "alpine.3.11-x64",
+      "alpine.3.11",
+      "alpine.3.10-x64",
+      "alpine.3.10",
+      "alpine.3.9-x64",
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.6-x64": [
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.7-x64": [
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.8-x64": [
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "alpine.3.9-x64": [
+      "alpine.3.9",
+      "alpine.3.8-x64",
+      "alpine.3.8",
+      "alpine.3.7-x64",
+      "alpine.3.7",
+      "alpine.3.6-x64",
+      "alpine.3.6",
+      "alpine-x64",
+      "alpine",
+      "linux-musl-x64",
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android-x64": [
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.21-x64": [
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.22-x64": [
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.23-x64": [
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.24-x64": [
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.25-x64": [
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.26-x64": [
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.27-x64": [
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.28-x64": [
+      "android.28",
+      "android.27-x64",
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.29-x64": [
+      "android.29",
+      "android.28-x64",
+      "android.28",
+      "android.27-x64",
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.30-x64": [
+      "android.30",
+      "android.29-x64",
+      "android.29",
+      "android.28-x64",
+      "android.28",
+      "android.27-x64",
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.31-x64": [
+      "android.31",
+      "android.30-x64",
+      "android.30",
+      "android.29-x64",
+      "android.29",
+      "android.28-x64",
+      "android.28",
+      "android.27-x64",
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "android.32-x64": [
+      "android.32",
+      "android.31-x64",
+      "android.31",
+      "android.30-x64",
+      "android.30",
+      "android.29-x64",
+      "android.29",
+      "android.28-x64",
+      "android.28",
+      "android.27-x64",
+      "android.27",
+      "android.26-x64",
+      "android.26",
+      "android.25-x64",
+      "android.25",
+      "android.24-x64",
+      "android.24",
+      "android.23-x64",
+      "android.23",
+      "android.22-x64",
+      "android.22",
+      "android.21-x64",
+      "android.21",
+      "android-x64",
+      "android",
+      "linux-bionic-x64",
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "arch-x64": [
+      "arch",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "centos-x64": [
+      "centos",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "centos.7-x64": [
+      "centos.7",
+      "centos-x64",
+      "rhel.7-x64",
+      "centos",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "centos.8-x64": [
+      "centos.8",
+      "centos-x64",
+      "rhel.8-x64",
+      "centos",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "centos.9-x64": [
+      "centos.9",
+      "centos-x64",
+      "rhel.9-x64",
+      "centos",
+      "rhel.9",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian-x64": [
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian.10-x64": [
+      "debian.10",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian.11-x64": [
+      "debian.11",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian.12-x64": [
+      "debian.12",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian.8-x64": [
+      "debian.8",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "debian.9-x64": [
+      "debian.9",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "exherbo-x64": [
+      "exherbo",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora-x64": [
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.23-x64": [
+      "fedora.23",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.24-x64": [
+      "fedora.24",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.25-x64": [
+      "fedora.25",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.26-x64": [
+      "fedora.26",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.27-x64": [
+      "fedora.27",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.28-x64": [
+      "fedora.28",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.29-x64": [
+      "fedora.29",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.30-x64": [
+      "fedora.30",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.31-x64": [
+      "fedora.31",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.32-x64": [
+      "fedora.32",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.33-x64": [
+      "fedora.33",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.34-x64": [
+      "fedora.34",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.35-x64": [
+      "fedora.35",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.36-x64": [
+      "fedora.36",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.37-x64": [
+      "fedora.37",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.38-x64": [
+      "fedora.38",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "fedora.39-x64": [
+      "fedora.39",
+      "fedora-x64",
+      "fedora",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "gentoo-x64": [
+      "gentoo",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linux-bionic-x64": [
+      "linux-bionic",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linux-musl-x64": [
+      "linux-musl",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linux-x64": [
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.17-x64": [
+      "linuxmint.17",
+      "ubuntu.14.04-x64",
+      "ubuntu.14.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.17.1-x64": [
+      "linuxmint.17.1",
+      "linuxmint.17-x64",
+      "linuxmint.17",
+      "ubuntu.14.04-x64",
+      "ubuntu.14.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.17.2-x64": [
+      "linuxmint.17.2",
+      "linuxmint.17.1-x64",
+      "linuxmint.17.1",
+      "linuxmint.17-x64",
+      "linuxmint.17",
+      "ubuntu.14.04-x64",
+      "ubuntu.14.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.17.3-x64": [
+      "linuxmint.17.3",
+      "linuxmint.17.2-x64",
+      "linuxmint.17.2",
+      "linuxmint.17.1-x64",
+      "linuxmint.17.1",
+      "linuxmint.17-x64",
+      "linuxmint.17",
+      "ubuntu.14.04-x64",
+      "ubuntu.14.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.18-x64": [
+      "linuxmint.18",
+      "ubuntu.16.04-x64",
+      "ubuntu.16.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.18.1-x64": [
+      "linuxmint.18.1",
+      "linuxmint.18-x64",
+      "linuxmint.18",
+      "ubuntu.16.04-x64",
+      "ubuntu.16.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.18.2-x64": [
+      "linuxmint.18.2",
+      "linuxmint.18.1-x64",
+      "linuxmint.18.1",
+      "linuxmint.18-x64",
+      "linuxmint.18",
+      "ubuntu.16.04-x64",
+      "ubuntu.16.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.18.3-x64": [
+      "linuxmint.18.3",
+      "linuxmint.18.2-x64",
+      "linuxmint.18.2",
+      "linuxmint.18.1-x64",
+      "linuxmint.18.1",
+      "linuxmint.18-x64",
+      "linuxmint.18",
+      "ubuntu.16.04-x64",
+      "ubuntu.16.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.19-x64": [
+      "linuxmint.19",
+      "ubuntu.18.04-x64",
+      "ubuntu.18.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.19.1-x64": [
+      "linuxmint.19.1",
+      "linuxmint.19-x64",
+      "linuxmint.19",
+      "ubuntu.18.04-x64",
+      "ubuntu.18.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "linuxmint.19.2-x64": [
+      "linuxmint.19.2",
+      "linuxmint.19.1-x64",
+      "linuxmint.19.1",
+      "linuxmint.19-x64",
+      "linuxmint.19",
+      "ubuntu.18.04-x64",
+      "ubuntu.18.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "manjaro-x64": [
+      "manjaro",
+      "arch-x64",
+      "arch",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "miraclelinux-x64": [
+      "miraclelinux",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "miraclelinux.8-x64": [
+      "miraclelinux.8",
+      "miraclelinux-x64",
+      "rhel.8-x64",
+      "miraclelinux",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "miraclelinux.9-x64": [
+      "miraclelinux.9",
+      "miraclelinux-x64",
+      "rhel.9-x64",
+      "miraclelinux",
+      "rhel.9",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol-x64": [
+      "ol",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7-x64": [
+      "ol.7",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.0-x64": [
+      "ol.7.0",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.1-x64": [
+      "ol.7.1",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.2-x64": [
+      "ol.7.2",
+      "ol.7.1-x64",
+      "rhel.7.2-x64",
+      "ol.7.1",
+      "rhel.7.2",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.3-x64": [
+      "ol.7.3",
+      "ol.7.2-x64",
+      "rhel.7.3-x64",
+      "ol.7.2",
+      "rhel.7.3",
+      "ol.7.1-x64",
+      "rhel.7.2-x64",
+      "ol.7.1",
+      "rhel.7.2",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.4-x64": [
+      "ol.7.4",
+      "ol.7.3-x64",
+      "rhel.7.4-x64",
+      "ol.7.3",
+      "rhel.7.4",
+      "ol.7.2-x64",
+      "rhel.7.3-x64",
+      "ol.7.2",
+      "rhel.7.3",
+      "ol.7.1-x64",
+      "rhel.7.2-x64",
+      "ol.7.1",
+      "rhel.7.2",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.5-x64": [
+      "ol.7.5",
+      "ol.7.4-x64",
+      "rhel.7.5-x64",
+      "ol.7.4",
+      "rhel.7.5",
+      "ol.7.3-x64",
+      "rhel.7.4-x64",
+      "ol.7.3",
+      "rhel.7.4",
+      "ol.7.2-x64",
+      "rhel.7.3-x64",
+      "ol.7.2",
+      "rhel.7.3",
+      "ol.7.1-x64",
+      "rhel.7.2-x64",
+      "ol.7.1",
+      "rhel.7.2",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.7.6-x64": [
+      "ol.7.6",
+      "ol.7.5-x64",
+      "rhel.7.6-x64",
+      "ol.7.5",
+      "rhel.7.6",
+      "ol.7.4-x64",
+      "rhel.7.5-x64",
+      "ol.7.4",
+      "rhel.7.5",
+      "ol.7.3-x64",
+      "rhel.7.4-x64",
+      "ol.7.3",
+      "rhel.7.4",
+      "ol.7.2-x64",
+      "rhel.7.3-x64",
+      "ol.7.2",
+      "rhel.7.3",
+      "ol.7.1-x64",
+      "rhel.7.2-x64",
+      "ol.7.1",
+      "rhel.7.2",
+      "ol.7.0-x64",
+      "rhel.7.1-x64",
+      "ol.7.0",
+      "rhel.7.1",
+      "ol.7-x64",
+      "rhel.7.0-x64",
+      "ol.7",
+      "rhel.7.0",
+      "ol-x64",
+      "rhel.7-x64",
+      "ol",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.8-x64": [
+      "ol.8",
+      "ol-x64",
+      "rhel.8-x64",
+      "ol",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ol.8.0-x64": [
+      "ol.8.0",
+      "ol.8-x64",
+      "rhel.8.0-x64",
+      "ol.8",
+      "rhel.8.0",
+      "ol-x64",
+      "rhel.8-x64",
+      "ol",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse-x64": [
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.13.2-x64": [
+      "opensuse.13.2",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.15.0-x64": [
+      "opensuse.15.0",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.15.1-x64": [
+      "opensuse.15.1",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.42.1-x64": [
+      "opensuse.42.1",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.42.2-x64": [
+      "opensuse.42.2",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "opensuse.42.3-x64": [
+      "opensuse.42.3",
+      "opensuse-x64",
+      "opensuse",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel-x64": [
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.6-x64": [
+      "rhel.6",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7-x64": [
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.0-x64": [
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.1-x64": [
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.2-x64": [
+      "rhel.7.2",
+      "rhel.7.1-x64",
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.3-x64": [
+      "rhel.7.3",
+      "rhel.7.2-x64",
+      "rhel.7.2",
+      "rhel.7.1-x64",
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.4-x64": [
+      "rhel.7.4",
+      "rhel.7.3-x64",
+      "rhel.7.3",
+      "rhel.7.2-x64",
+      "rhel.7.2",
+      "rhel.7.1-x64",
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.5-x64": [
+      "rhel.7.5",
+      "rhel.7.4-x64",
+      "rhel.7.4",
+      "rhel.7.3-x64",
+      "rhel.7.3",
+      "rhel.7.2-x64",
+      "rhel.7.2",
+      "rhel.7.1-x64",
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.7.6-x64": [
+      "rhel.7.6",
+      "rhel.7.5-x64",
+      "rhel.7.5",
+      "rhel.7.4-x64",
+      "rhel.7.4",
+      "rhel.7.3-x64",
+      "rhel.7.3",
+      "rhel.7.2-x64",
+      "rhel.7.2",
+      "rhel.7.1-x64",
+      "rhel.7.1",
+      "rhel.7.0-x64",
+      "rhel.7.0",
+      "rhel.7-x64",
+      "rhel.7",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.8-x64": [
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.8.0-x64": [
+      "rhel.8.0",
+      "rhel.8-x64",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.8.1-x64": [
+      "rhel.8.1",
+      "rhel.8.0-x64",
+      "rhel.8.0",
+      "rhel.8-x64",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rhel.9-x64": [
+      "rhel.9",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rocky-x64": [
+      "rocky",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rocky.8-x64": [
+      "rocky.8",
+      "rocky-x64",
+      "rhel.8-x64",
+      "rocky",
+      "rhel.8",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "rocky.9-x64": [
+      "rocky.9",
+      "rocky-x64",
+      "rhel.9-x64",
+      "rocky",
+      "rhel.9",
+      "rhel-x64",
+      "rhel",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles-x64": [
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.12-x64": [
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.12.1-x64": [
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.12.2-x64": [
+      "sles.12.2",
+      "sles.12.1-x64",
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.12.3-x64": [
+      "sles.12.3",
+      "sles.12.2-x64",
+      "sles.12.2",
+      "sles.12.1-x64",
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.12.4-x64": [
+      "sles.12.4",
+      "sles.12.3-x64",
+      "sles.12.3",
+      "sles.12.2-x64",
+      "sles.12.2",
+      "sles.12.1-x64",
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.15-x64": [
+      "sles.15",
+      "sles.12.4-x64",
+      "sles.12.4",
+      "sles.12.3-x64",
+      "sles.12.3",
+      "sles.12.2-x64",
+      "sles.12.2",
+      "sles.12.1-x64",
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "sles.15.1-x64": [
+      "sles.15.1",
+      "sles.15-x64",
+      "sles.15",
+      "sles.12.4-x64",
+      "sles.12.4",
+      "sles.12.3-x64",
+      "sles.12.3",
+      "sles.12.2-x64",
+      "sles.12.2",
+      "sles.12.1-x64",
+      "sles.12.1",
+      "sles.12-x64",
+      "sles.12",
+      "sles-x64",
+      "sles",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu-x64": [
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.14.04-x64": [
+      "ubuntu.14.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.14.10-x64": [
+      "ubuntu.14.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.15.04-x64": [
+      "ubuntu.15.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.15.10-x64": [
+      "ubuntu.15.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.16.04-x64": [
+      "ubuntu.16.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.16.10-x64": [
+      "ubuntu.16.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.17.04-x64": [
+      "ubuntu.17.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.17.10-x64": [
+      "ubuntu.17.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.18.04-x64": [
+      "ubuntu.18.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.18.10-x64": [
+      "ubuntu.18.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.19.04-x64": [
+      "ubuntu.19.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.19.10-x64": [
+      "ubuntu.19.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.20.04-x64": [
+      "ubuntu.20.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.20.10-x64": [
+      "ubuntu.20.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.21.04-x64": [
+      "ubuntu.21.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.21.10-x64": [
+      "ubuntu.21.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.22.04-x64": [
+      "ubuntu.22.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.22.10-x64": [
+      "ubuntu.22.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.23.04-x64": [
+      "ubuntu.23.04",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ],
+    "ubuntu.23.10-x64": [
+      "ubuntu.23.10",
+      "ubuntu-x64",
+      "ubuntu",
+      "debian-x64",
+      "debian",
+      "linux-x64",
+      "linux",
+      "unix-x64",
+      "unix",
+      "any",
+      "base"
+    ]
+  }
+}

BIN
ConvertLog/publish/ConvertLog.dll


BIN
ConvertLog/publish/ConvertLog.pdb


+ 14 - 0
ConvertLog/publish/ConvertLog.runtimeconfig.json

@@ -0,0 +1,14 @@
+{
+  "runtimeOptions": {
+    "tfm": "net6.0",
+    "includedFrameworks": [
+      {
+        "name": "Microsoft.NETCore.App",
+        "version": "6.0.32"
+      }
+    ],
+    "configProperties": {
+      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false
+    }
+  }
+}

BIN
ConvertLog/publish/Microsoft.Bcl.AsyncInterfaces.dll


BIN
ConvertLog/publish/Microsoft.CSharp.dll


BIN
ConvertLog/publish/Microsoft.Extensions.Configuration.Abstractions.dll


BIN
ConvertLog/publish/Microsoft.Extensions.Configuration.FileExtensions.dll


BIN
ConvertLog/publish/Microsoft.Extensions.Configuration.Json.dll


BIN
ConvertLog/publish/Microsoft.Extensions.Configuration.dll


BIN
ConvertLog/publish/Microsoft.Extensions.FileProviders.Abstractions.dll


BIN
ConvertLog/publish/Microsoft.Extensions.FileProviders.Physical.dll


BIN
ConvertLog/publish/Microsoft.Extensions.FileSystemGlobbing.dll


BIN
ConvertLog/publish/Microsoft.Extensions.Primitives.dll


BIN
ConvertLog/publish/Microsoft.VisualBasic.Core.dll


BIN
ConvertLog/publish/Microsoft.VisualBasic.dll


BIN
ConvertLog/publish/Microsoft.Win32.Primitives.dll


BIN
ConvertLog/publish/Microsoft.Win32.Registry.dll


BIN
ConvertLog/publish/Microsoft.Win32.SystemEvents.dll


BIN
ConvertLog/publish/Newtonsoft.Json.dll


BIN
ConvertLog/publish/Oracle.ManagedDataAccess.dll


BIN
ConvertLog/publish/Pipelines.Sockets.Unofficial.dll


BIN
ConvertLog/publish/StackExchange.Redis.dll


BIN
ConvertLog/publish/System.AppContext.dll


BIN
ConvertLog/publish/System.Buffers.dll


BIN
ConvertLog/publish/System.Collections.Concurrent.dll


BIN
ConvertLog/publish/System.Collections.Immutable.dll


BIN
ConvertLog/publish/System.Collections.NonGeneric.dll


BIN
ConvertLog/publish/System.Collections.Specialized.dll


BIN
ConvertLog/publish/System.Collections.dll


BIN
ConvertLog/publish/System.ComponentModel.Annotations.dll


BIN
ConvertLog/publish/System.ComponentModel.DataAnnotations.dll


BIN
ConvertLog/publish/System.ComponentModel.EventBasedAsync.dll


BIN
ConvertLog/publish/System.ComponentModel.Primitives.dll


BIN
ConvertLog/publish/System.ComponentModel.TypeConverter.dll


BIN
ConvertLog/publish/System.ComponentModel.dll


BIN
ConvertLog/publish/System.Configuration.ConfigurationManager.dll


BIN
ConvertLog/publish/System.Configuration.dll


BIN
ConvertLog/publish/System.Console.dll


BIN
ConvertLog/publish/System.Core.dll


BIN
ConvertLog/publish/System.Data.Common.dll


BIN
ConvertLog/publish/System.Data.DataSetExtensions.dll


BIN
ConvertLog/publish/System.Data.dll


BIN
ConvertLog/publish/System.Diagnostics.Contracts.dll


BIN
ConvertLog/publish/System.Diagnostics.Debug.dll


BIN
ConvertLog/publish/System.Diagnostics.DiagnosticSource.dll


BIN
ConvertLog/publish/System.Diagnostics.FileVersionInfo.dll


BIN
ConvertLog/publish/System.Diagnostics.PerformanceCounter.dll


BIN
ConvertLog/publish/System.Diagnostics.Process.dll


BIN
ConvertLog/publish/System.Diagnostics.StackTrace.dll


BIN
ConvertLog/publish/System.Diagnostics.TextWriterTraceListener.dll


BIN
ConvertLog/publish/System.Diagnostics.Tools.dll


BIN
ConvertLog/publish/System.Diagnostics.TraceSource.dll


BIN
ConvertLog/publish/System.Diagnostics.Tracing.dll


BIN
ConvertLog/publish/System.DirectoryServices.Protocols.dll


BIN
ConvertLog/publish/System.DirectoryServices.dll


BIN
ConvertLog/publish/System.Drawing.Common.dll


BIN
ConvertLog/publish/System.Drawing.Primitives.dll


BIN
ConvertLog/publish/System.Drawing.dll


BIN
ConvertLog/publish/System.Dynamic.Runtime.dll


BIN
ConvertLog/publish/System.Formats.Asn1.dll


BIN
ConvertLog/publish/System.Globalization.Calendars.dll


BIN
ConvertLog/publish/System.Globalization.Extensions.dll


BIN
ConvertLog/publish/System.Globalization.dll


BIN
ConvertLog/publish/System.IO.Compression.Brotli.dll


BIN
ConvertLog/publish/System.IO.Compression.FileSystem.dll


BIN
ConvertLog/publish/System.IO.Compression.ZipFile.dll


BIN
ConvertLog/publish/System.IO.Compression.dll


BIN
ConvertLog/publish/System.IO.FileSystem.AccessControl.dll


BIN
ConvertLog/publish/System.IO.FileSystem.DriveInfo.dll


BIN
ConvertLog/publish/System.IO.FileSystem.Primitives.dll


BIN
ConvertLog/publish/System.IO.FileSystem.Watcher.dll


BIN
ConvertLog/publish/System.IO.FileSystem.dll


BIN
ConvertLog/publish/System.IO.IsolatedStorage.dll


BIN
ConvertLog/publish/System.IO.MemoryMappedFiles.dll


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است