using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using ResfullApi.Models; using Newtonsoft.Json; using System.Data; using Microsoft.AspNetCore.Mvc; using CommonObj.common; using Newtonsoft.Json.Linq; using Microsoft.Extensions.Caching.Memory; namespace ApiProcess.Controllers { [ApiController] [Route("api/[controller]/[action]/data")] public class newsSms : ControllerBase { static readonly log4net.ILog logger = log4net.LogManager.GetLogger(typeof(newsSms)); private IMemoryCache memoryCache; public newsSms(IMemoryCache memoryCache) { this.memoryCache = memoryCache; } // {"title":"xxxx","serviceId":"30","content":"cong hoa xa hoi chu nghia","dateSend":"01/12/2020 01:01:10"} [HttpPost] public IActionResult Insert([FromBody] dynamic sendData) { ////log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); ////log4net.Config.XmlConfigurator.Configure(); newsObjResponse response = new newsObjResponse(); response.status = "-1"; response.message = "Err unknow"; try { newsSmsObjRequest data = JsonConvert.DeserializeObject(sendData.ToString()); logger.Info("New request income news_insert :" + data.ToString()); //Check token var userObj = JObject.Parse(sendData.ToString()); string token = Convert.ToString(userObj["token"]); string channel = Convert.ToString(userObj["channel"]); //var obj = JObject.Parse(sendData.ToString()); string language = Convert.ToString(userObj["language"]); if (string.IsNullOrEmpty(language)) language = "0"; 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.status = "-2"; response.message = "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 ------------------------------------- if (!CommonFunction.checkToken(clientIp,token, channel, _redis, logger)) { logger.Info("Authen token false"); response.status = "35"; response.message = "Check Authen false"; return Ok(response); } //Ket thuc check token DataSet ds_regist = newsSmsDataAccess.sms_news_insert(data.title, data.serviceid, data.content, data.dateSend); logger.Info("Call database news_insert success:"); if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0) { response.status = ds_regist.Tables[0].Rows[0]["status"].ToString(); response.message = ds_regist.Tables[0].Rows[0]["message"].ToString(); response.newsId = ds_regist.Tables[0].Rows[0]["newsId"].ToString(); } } catch (Exception ex) { logger.Info("Err:" + ex.ToString()); } logger.Info("Responase to web: " + response.ToString()); return Ok(response); } //{"id":"2","title":"content1","serviceId":"30","content":"haha","dateSend":"01/12/2020 01:01:10","type":"1"} //--0=delete,1=update [HttpPost] public IActionResult Update([FromBody] dynamic sendData) { //log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //log4net.Config.XmlConfigurator.Configure(); responseObjUtil response = new responseObjUtil(); response.status = "-1"; response.message = "Err unknow"; try { newsSmsObjUpdateRequest data = JsonConvert.DeserializeObject(sendData.ToString()); logger.Info("New request income Update :" + data.ToString()); //Check token var userObj = JObject.Parse(sendData.ToString()); string token = Convert.ToString(userObj["token"]); string channel = Convert.ToString(userObj["channel"]); //var obj = JObject.Parse(sendData.ToString()); string language = Convert.ToString(userObj["language"]); if (string.IsNullOrEmpty(language)) language = "0"; 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.status = "-2"; response.message = "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 ------------------------------------- if (!CommonFunction.checkToken(clientIp,token, channel, _redis, logger)) { logger.Info("Authen token false"); response.status = "35"; response.message = "Check Authen false"; return Ok(response); } //Ket thuc check token DataSet ds_regist = newsSmsDataAccess.sms_news_update(data.id, data.title, data.serviceid, data.content, data.dateSend,data.type); logger.Info("Call database Update success:"); if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0) { response.status = ds_regist.Tables[0].Rows[0]["status"].ToString(); response.message = ds_regist.Tables[0].Rows[0]["message"].ToString(); } } catch (Exception ex) { logger.Info("Err:" + ex.ToString()); } logger.Info("Responase to web: " + response.ToString()); return Ok(response); } [HttpPost] //{"id":"10","serviceId":"30","status":"-1","date":"13/02/2020" } public IActionResult GetList([FromBody] dynamic sendData) { //log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); //log4net.Config.XmlConfigurator.Configure(); newsSmsObjGetResponse response = new newsSmsObjGetResponse(); response.status = "-1"; response.message = "Err unknow"; try { newsObjGetRequest data = JsonConvert.DeserializeObject(sendData.ToString()); logger.Info("New request income Get :" + data.ToString()); //Check token var userObj = JObject.Parse(sendData.ToString()); string token = Convert.ToString(userObj["token"]); string channel = Convert.ToString(userObj["channel"]); //var obj = JObject.Parse(sendData.ToString()); string language = Convert.ToString(userObj["language"]); if (string.IsNullOrEmpty(language)) language = "0"; 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.status = "-2"; response.message = "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 ------------------------------------- if (!CommonFunction.checkToken(clientIp,token, channel, _redis, logger)) { logger.Info("Authen token false"); response.status = "35"; response.message = "Check Authen false"; return Ok(response); } //Ket thuc check token DataSet ds_regist = newsSmsDataAccess.sms_news_get( data.serviceid, data.status, data.date,data.id,data.top); logger.Info("Call database Get success:"); if (ds_regist != null & ds_regist.Tables[0].Rows.Count > 0) { response.status = "0"; response.message = "Success"; response.listNewsSms = new newsSmsObj[ds_regist.Tables[0].Rows.Count]; for (int j = 0; j < ds_regist.Tables[0].Rows.Count; j++) { newsSmsObj obj = new newsSmsObj(); obj.id = ds_regist.Tables[0].Rows[j]["id"].ToString(); obj.serviceid = ds_regist.Tables[0].Rows[j]["serviceid"].ToString(); obj.status = ds_regist.Tables[0].Rows[j]["newsStatus"].ToString(); obj.title = ds_regist.Tables[0].Rows[j]["title"].ToString(); obj.content = ds_regist.Tables[0].Rows[j]["content"].ToString(); obj.dateSend = ds_regist.Tables[0].Rows[j]["dateSend"].ToString(); obj.sysdate = ds_regist.Tables[0].Rows[j]["vsysdate"].ToString(); response.listNewsSms[j] = obj; } } else { response.status = "1"; response.message = "No data"; } } catch (Exception ex) { logger.Info("Err:" + ex.ToString()); } logger.Info("Responase to web: " + response.ToString()); return Ok(response); } } }