using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using CommonObj.common; using CommonObj.lotoModel; using CommonObj.model; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using ResfullApi.Models; using System.Data; using ResfullApi.Models.bet; using ApiProcessToken.Models.common; using System.Net.Http; using ApiProcessToken.Models.edu; namespace ApiProcessToken.Controllers { [ApiController] [Route("api/[controller]/[action]/data")] public class thailanloto : ControllerBase { static readonly log4net.ILog logger = log4net.LogManager.GetLogger(typeof(loto)); private IMemoryCache memoryCache; public thailanloto(IMemoryCache memoryCache) { this.memoryCache = memoryCache; } [HttpPost] public IActionResult buyTicket([FromBody] dynamic sendData) { buyTicketResponse response = new buyTicketResponse(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; try { buyTicketObj data = JsonConvert.DeserializeObject(sendData.ToString()); if (data.language != "0" || data.language != "1") data.language = "0"; logger.Info("New request income bet :" + data.ToString()); 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("buyTicket 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, data.token, data.channel, _redis, logger, out _tokenObj)) { logger.Info("Authen token false"); response.responseCode = "35"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } //Chu y: // Voi nhung ham quan trong thi neu out _tokenObj !=null thi ta len kiem tra msisdn trong body voi msisdn trong token if (_tokenObj != null) { if (_tokenObj.msisdn != data.msisdn) { logger.Info("Authen token false"); response.responseCode = "35"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } } //Ket thuc check token //Kiem tra xem co blaclist hay ko? Tham thoi dung voi muc dich whiteList blacklistObj _blackObj = CommonFunction.getBlackListFromRedis(_redis, "2", "-1", data.msisdn); if (_blackObj != null) { logger.Info("Blacklist roi" + data.msisdn); response.responseCode = "26"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } logger.Info("So nay ko blacklist" + data.msisdn); int is_promotion = 0, status_prompotion = 0; long totalMoney = 0, totalPromotionMoney = 0, id_promotion = -1, totalPaymentMoney = 0; //1. DUA VAO GAMEID DE KIEM TRA KY QUAY ID VA THOI GIAN QUAY THUONG termObj _termObj = CommonFunction.getTermObjObjFromRedis(_redis, data.gameId); //Kiem tra thoi gian hien tai > thoi gian dong cong + 10 phut thi exit DateTime _endDate = new DateTime(); try { _endDate = DateTime.ParseExact(_termObj.endDate, "dd/MM/yyyy HH:mm:ss", null); } catch { } logger.Info("_endDate chua add 5 phut: " + _endDate.ToString()); TimeSpan _addMore = new TimeSpan(0, 5, 0); _endDate = _endDate + _addMore; logger.Info("_endDate da add 10 phut: " + _endDate.ToString()); DateTime dNow = DateTime.Now; logger.Info("dNow : " + dNow.ToString()); if (dNow > _endDate ||_termObj.status!="1") { logger.Info("He thong bi loi, het thoi gian choi cua ky nay roi nhe"); response.responseCode = "-2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } logger.Info("Check thoi gian da OK, xin moi tiep tuc"); //2. KIEM TRA TICKET NAY CO HOP LE VE TIEN HAY KO? //Tinh tong tien cua ve, kiem tra tinh hop le cua ve //Voi channel USSD thi xo lock tam thoi cu di if (data.channel == "USSD") _redis.delByKey(_redis.DB_INDEX_DATA_USER, "TRANS_" + data.msisdn); if (!CommonFunction.checkTicket_THAILAN(data, out totalMoney)) { //Ticke sai formart logger.Info("Check ticket false"); response.responseCode = "3"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } //Lay ve mang da duoc mua tren cache va tren DB List _listBuy = FunctionThaiLan.getListTicketBuy(_redis, data, _termObj.id); if (_listBuy.Count > 0) { //truong hop co ve da bi mua roi logger.Info("Check ticket da co ve bi mua roi"); response.responseCode = "42"; //response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); response.responseMessage = string.Join(",", _listBuy); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } if (!string.IsNullOrEmpty(data.promotionCode)) { DataSet _ds = lotoDataAccess.getPromotionByCode(data.promotionCode, data.msisdn); if (_ds != null && _ds.Tables[0].Rows.Count > 0) { id_promotion = Convert.ToUInt32(_ds.Tables[0].Rows[0]["ID"].ToString()); totalPromotionMoney = Convert.ToUInt32(_ds.Tables[0].Rows[0]["MONEY"].ToString()); status_prompotion = Convert.ToUInt16(_ds.Tables[0].Rows[0]["STATUS"].ToString()); if (status_prompotion == 2) { //Ma code khuyen mai da su dung roi logger.Info("Promotion code have use"); response.responseCode = "38"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } else if (status_prompotion == 0) { //Ma code khuyen mai chua send logger.Info("Promotion is not active"); response.responseCode = "40"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } else if (status_prompotion == 1) { logger.Info("Promotion code OK"); is_promotion = 1; } } else { //Promotion code ko hop le logger.Info("Promotion code invalid"); response.responseCode = "39"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } } //Tinh lai tong tien va gian lai so tien cho moi ve. int moneyOnTicket = 0; int moneyBlockTicket = 0; if(data.ticket.Length==1) { moneyOnTicket = 199; moneyBlockTicket = 199; } else if(data.ticket.Length == 2) { moneyOnTicket = 199; moneyBlockTicket = 398; } else if (data.ticket.Length == 3) { moneyOnTicket = 199; moneyBlockTicket = 597; } else if (data.ticket.Length == 4) { moneyOnTicket = 199; moneyBlockTicket = 769; } else if (data.ticket.Length == 5) { moneyOnTicket = 191; moneyBlockTicket = 955; } else { logger.Info("Ticket ko qua 5 ve"); response.responseCode = "3"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } for(int i=0;i< data.ticket.Length;i++) { data.ticket[i].money = moneyOnTicket.ToString(); } totalMoney = moneyBlockTicket; if (totalPromotionMoney >= totalMoney) totalPaymentMoney = 0; else totalPaymentMoney = totalMoney - totalPromotionMoney; response.responseCode = "0"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, data.channel, response.responseCode, data.language); response.termObj = _termObj; response.requestId = data.requestId; if(data.channel=="USSD") //response.transId = data.msisdn+"_" +data.requestId; response.transId = "TRANS_" + data.msisdn; else response.transId = "TRANS_" + CommonFunction.getGuiId(); response.isPromotion = is_promotion.ToString(); response.totalMoney = totalMoney.ToString(); response.totalMoneyPromotion = totalPromotionMoney.ToString(); response.totalMoneyPayment = totalPaymentMoney.ToString(); response.promotionId = id_promotion.ToString(); data.buyTicketResponse = response; //Ghi request nay vao select 2 cua DB //ghi lai token vao DB(1) int _token_timeout = Convert.ToInt16(((paramObj)CommonFunction.getParamObjFromRedis(_redis, "TICKET_CONFIRM_TIMEOUT", "TICKET_CONFIRM_TIMEOUT", "SYSTEM")).values); TimeSpan _timeSpam = new TimeSpan(0, 0, _token_timeout); _redis.setByKey(_redis.DB_INDEX_DATA_USER, response.transId, data.ToString(), _timeSpam); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult confirmTicket([FromBody] dynamic sendData) { confirmTiketResponse response = new confirmTiketResponse(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; response.transId = CommonFunction.getGuiId(); logger.Info("Request from UI getCurentTerm: " + sendData.ToString()); string paymentTransCode = ""; string requestId = string.Empty, language = string.Empty, transIdByTicket = string.Empty, paymentCode = string.Empty, token = string.Empty, channel = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); transIdByTicket = Convert.ToString(obj["transIdByTicket"]); //voi ussd thi co dinh msisdn_tranId paymentCode = Convert.ToString(obj["paymentCode"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); paymentTransCode = paymentCode; response.requestId = requestId; if (channel == "USSD") transIdByTicket = "TRANS_" + transIdByTicket; /* if (string.IsNullOrEmpty(requestId)) requestId = ""; if (string.IsNullOrEmpty(transIdByTicket)) transIdByTicket = ""; if (string.IsNullOrEmpty(paymentCode)) paymentCode = ""; if (string.IsNullOrEmpty(token)) token = ""; */ 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); } //Ket thuc check token //Lay thong tin cua requetByTicket ve if (!_redis.existsByKey(Convert.ToInt16(_redis.DB_INDEX_DATA_USER), transIdByTicket)) { logger.Info("Request buy ticket not exits"); response.responseCode = "41"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } else { buyTicketObj data = JsonConvert.DeserializeObject(_redis.getByKey(_redis.DB_INDEX_DATA_USER, transIdByTicket)); _redis.delByKey(_redis.DB_INDEX_DATA_USER, transIdByTicket); //data.buyTicketResponse.promotionId //Truoc khi tien hanh charge thi can kiem tra lai //Tien hanh charge tien, gui ve ma loi va ma giao dich string _resultCharge = "-2"; if (channel == "USSD") { _resultCharge = "0"; } else { string mps_ip= Common.GetValuesAppSetting("webConfig", "MPS_IP"); string mps_port = Common.GetValuesAppSetting("webConfig", "MPS_PORT"); string isTest = Common.GetValuesAppSetting("webConfig", "isTest"); if (isTest == "1") _resultCharge = "0"; else _resultCharge = CommonFunction.chargeMPS_THAILAN(_redis, response.transId, data.msisdn, data.buyTicketResponse.totalMoneyPayment, mps_ip, mps_port, logger); } paymentTransCode = response.transId; if (_resultCharge != "0") { logger.Info("Charge false so exit"); response.responseCode = _resultCharge; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } //truong hop con lai thi da tru tien thanh cong va insert ve nay vao DB bool _resultInsert = false; try { //tao chuoi ticket co format: termId1#money#ticket1*termId2#money#tiket2*....... string _tiketformat = ""; for (int i = 0; i < data.ticket.Length; i++) { if (i == 0) _tiketformat = data.buyTicketResponse.termObj.id + "#" + data.ticket[i].money + "#" + data.ticket[i].code; else _tiketformat = _tiketformat + "*" + data.buyTicketResponse.termObj.id + "#" + data.ticket[i].money + "#" + data.ticket[i].code; } DataSet _ds = lotoDataAccess.lotoInsertBet(data.msisdn, data.buyTicketResponse.promotionId, _tiketformat, data.buyTicketResponse.totalMoneyPayment, data.requestId, data.buyTicketResponse.transId, response.requestId, response.transId, paymentTransCode, "Success", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") , DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), "0", data.gameId, data.channel, data.language); if (_ds != null && _ds.Tables[0].Rows.Count > 0) { //lay ve ma don hang, list betId response.orderId = _ds.Tables[0].Rows[0]["bill_code"].ToString(); response.listTiketId = _ds.Tables[0].Rows[0]["tran_code"].ToString(); response.responseCode = "0"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("confirmTicket response : " + response.ToString()); //Luu lai toan bo ve nay vao cache, phuc vu viec tim kiem nhanh nhat for (int i = 0; i < data.ticket.Length; i++) { string _code = data.ticket[i].code; TimeSpan _timeSpam = new TimeSpan(360, 0, 0); //Time out trong 15 ngay _redis.setByKey(_redis.DB_INDEX_DATA_TICKET_UNIQUE_BUY, _code + "_" + data.buyTicketResponse.termObj.id, _code, _timeSpam); _redis.delByKey(_redis.DB_INDEX_DATA_TICKET_UNIQUE_FREE, _code); } return Ok(response); } else { } } catch (Exception ex) { logger.Info("Insert bet into Database errr " + ex.Message, ex); _resultInsert = false; } if (!_resultInsert) { //Ghi lai log cua giao dich con hoan lai tien logger.Info("Insert bet into Database err so write log for revert"); //Ghi log response.responseCode = "-2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } } } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult getRandomListTicket([FromBody] dynamic sendData) { getListTicketResponse response = new getListTicketResponse(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI getRandomListTicket: " + sendData.ToString()); string paymentTransCode = ""; string requestId = string.Empty, language = string.Empty, total = string.Empty, token = string.Empty, channel = string.Empty, gameId=string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); language = Convert.ToString(obj["language"]); total = Convert.ToString(obj["total"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); gameId = Convert.ToString(obj["gameId"]); response.requestId = requestId; if (string.IsNullOrEmpty(requestId)) requestId = ""; if (string.IsNullOrEmpty(language)) language = "0"; if (string.IsNullOrEmpty(token)) token = ""; if (string.IsNullOrEmpty(total)) total = "10"; 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); } //1. DUA VAO GAMEID DE KIEM TRA KY QUAY ID VA THOI GIAN QUAY THUONG termObj _termObj = CommonFunction.getTermObjObjFromRedis(_redis, gameId); //Kiem tra thoi gian hien tai > thoi gian dong cong + 10 phut thi exit DateTime _endDate = new DateTime(); try { _endDate = DateTime.ParseExact(_termObj.endDate, "dd/MM/yyyy HH:mm:ss", null); } catch { } logger.Info("_endDate chua add 5 phut: " + _endDate.ToString()); TimeSpan _addMore = new TimeSpan(0, 5, 0); _endDate = _endDate + _addMore; logger.Info("_endDate da add 5 phut: " + _endDate.ToString()); DateTime dNow = DateTime.Now; logger.Info("dNow : " + dNow.ToString()); if (dNow > _endDate) { logger.Info("He thong bi loi, het thoi gian choi cua ky nay roi nhe"); response.responseCode = "2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } logger.Info("Check thoi gian da OK, xin moi tiep tuc"); if(_termObj.status!="1") { logger.Info("He thong bi loi, het thoi gian choi cua ky nay roi nhe"); response.responseCode = "2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } //Cuoi cung lay ra mang ticket roi tra lai ket qua List _listTicketFree=FunctionThaiLan.getListTicketFree(_redis,Convert.ToInt16(total), _termObj.id); response.requestId = requestId; response.termObj = _termObj; response.responseCode = "0"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); response.ticket = _listTicketFree.ToArray(); logger.Info("getListTicketFree response : " + response.ToString()); return Ok(response); //Ket thuc check token } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult startSeach([FromBody] dynamic sendData) { searchTicketResponse response = new searchTicketResponse(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI startSeach: " + sendData.ToString()); string requestId = string.Empty, language = string.Empty, total = string.Empty, token = string.Empty, channel = string.Empty, gameId = string.Empty, ticket = string.Empty, msisdn=string.Empty; string rowOnPage = "0"; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); language = Convert.ToString(obj["language"]); ticket = Convert.ToString(obj["ticket"]); msisdn = Convert.ToString(obj["msisdn"]); rowOnPage= Convert.ToString(obj["rowOnPage"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); gameId = Convert.ToString(obj["gameId"]); response.requestId = requestId; if (string.IsNullOrEmpty(requestId)) requestId = ""; if (string.IsNullOrEmpty(language)) language = "0"; if (string.IsNullOrEmpty(token)) token = ""; if (string.IsNullOrEmpty(msisdn)) msisdn = "-1"; if (string.IsNullOrEmpty(rowOnPage)) rowOnPage = "10"; 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("buyTicket 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("buyTicket response : " + response.ToString()); return Ok(response); } //Chu y: // Voi nhung ham quan trong thi neu out _tokenObj !=null thi ta len kiem tra msisdn trong body voi msisdn trong token if (_tokenObj != null) { if (_tokenObj.msisdn != msisdn) { logger.Info("Authen token false"); response.responseCode = "35"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } } //Ket thuc check token //Kiem tra xem co blaclist hay ko? Tham thoi dung voi muc dich whiteList blacklistObj _blackObj = CommonFunction.getBlackListFromRedis(_redis, "2", "-1", msisdn); if (_blackObj != null) { logger.Info("Blacklist roi" + msisdn); response.responseCode = "26"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } logger.Info("So nay ko blacklist" + msisdn); //Ket thuc check token //1. DUA VAO GAMEID DE KIEM TRA KY QUAY ID VA THOI GIAN QUAY THUONG termObj _termObj = CommonFunction.getTermObjObjFromRedis(_redis, gameId); //Kiem tra thoi gian hien tai > thoi gian dong cong + 10 phut thi exit DateTime _endDate = new DateTime(); try { _endDate = DateTime.ParseExact(_termObj.endDate, "dd/MM/yyyy HH:mm:ss", null); } catch { } logger.Info("_endDate chua add 5 phut: " + _endDate.ToString()); TimeSpan _addMore = new TimeSpan(0, 5, 0); _endDate = _endDate + _addMore; logger.Info("_endDate da add 10 phut: " + _endDate.ToString()); DateTime dNow = DateTime.Now; logger.Info("dNow : " + dNow.ToString()); if (dNow > _endDate) { logger.Info("He thong bi loi, het thoi gian choi cua ky nay roi nhe"); response.responseCode = "-2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } logger.Info("Check thoi gian da OK, xin moi tiep tuc"); //Bat dau tim kiem va ghi lai ket qua vao cache List _search = _redis.getAllkeyByPatternRegex(_redis.DB_INDEX_DATA_TICKET_UNIQUE_FREE, ticket ); long totalRow = _search.Count; long phandu = totalRow %Convert.ToInt32(rowOnPage); long totalPage = 0; if(phandu==0) totalPage= totalRow / Convert.ToInt32(rowOnPage); else totalPage = (totalRow / Convert.ToInt32(rowOnPage))+1; response.responseCode = "0"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); response.termObj = _termObj; response.requestId = requestId; response.rowOnPage = rowOnPage.ToString(); response.totalRow = totalRow.ToString(); response.totalPage = totalPage.ToString(); response.transId = CommonFunction.getGuiId(); // Ghi request nay vao select 6 cua DB //List _a = new List(); //string str = string.Join(",", _a); //List b = str.Split(',').ToList(); searchTicketResult _resultSearch = new searchTicketResult(); _resultSearch.listTicket = _search; _resultSearch.searchInfo = response; int _token_timeout = _redis.TOKEN_TIMEOUT_DEFAULT; TimeSpan _timeSpam = new TimeSpan(0, 0, _token_timeout); //_redis.setByKey(_redis.DB_INDEX_DATA_TICKET_SEARCH, response.transId, _resultSearch.ToString(), _timeSpam); _redis.setByKey(_redis.DB_INDEX_DATA_TICKET_SEARCH, msisdn, _resultSearch.ToString(), _timeSpam); //searchTicketResult _token = JsonConvert.DeserializeObject("String o day"); return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult search([FromBody] dynamic sendData) { searchTicketResult response = new searchTicketResult(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI getCurentTerm: " + sendData.ToString()); string requestId = string.Empty, language = string.Empty , seqPage = string.Empty, token = string.Empty, channel = string.Empty,msisdn=string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); seqPage = Convert.ToString(obj["seqPage"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); msisdn = Convert.ToString(obj["msisdn"]); /* if (string.IsNullOrEmpty(requestId)) requestId = ""; if (string.IsNullOrEmpty(transIdByTicket)) transIdByTicket = ""; if (string.IsNullOrEmpty(paymentCode)) paymentCode = ""; if (string.IsNullOrEmpty(token)) token = ""; */ 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); } //Chu y: // Voi nhung ham quan trong thi neu out _tokenObj !=null thi ta len kiem tra msisdn trong body voi msisdn trong token if (_tokenObj != null) { if (_tokenObj.msisdn != msisdn) { logger.Info("Authen token false"); response.responseCode = "35"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("buyTicket response : " + response.ToString()); return Ok(response); } } //Ket thuc check token //Lay thong tin cua ve ket qua serache if (!_redis.existsByKey(Convert.ToInt16(_redis.DB_INDEX_DATA_TICKET_SEARCH), msisdn)) { logger.Info("Request search"); response.responseCode = "41"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } else { //Lay va tang thoi gia cho ket qua string redisData = _redis.getByKey(_redis.DB_INDEX_DATA_TICKET_SEARCH, msisdn); int _token_timeout = _redis.TOKEN_TIMEOUT_DEFAULT; TimeSpan _timeSpam = new TimeSpan(0, 0, _token_timeout); //_redis.setByKey(_redis.DB_INDEX_DATA_TICKET_SEARCH, response.transId, _resultSearch.ToString(), _timeSpam); _redis.setByKey(_redis.DB_INDEX_DATA_TICKET_SEARCH, msisdn, redisData, _timeSpam); searchTicketResult data = JsonConvert.DeserializeObject(redisData); int rowOnPage =Convert.ToInt16(data.searchInfo.rowOnPage); int min = (Convert.ToInt16(seqPage) - 1) * rowOnPage; int max = Convert.ToInt16(seqPage) * rowOnPage-1; List _resultSearch = new List(); for (int j = min; j <= max; j++) { if(j<= data.listTicket.Count-1) _resultSearch.Add(data.listTicket[j]); } response.searchInfo = data.searchInfo; response.searchInfo.seqPage = seqPage; response.listTicket = _resultSearch; response.responseCode = "0"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("Search response : " + response.ToString()); return Ok(response); } } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult uploadEvoucher([FromBody] dynamic sendData) { Response response = new Response(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI uploadEvoucher: " + sendData.ToString()); string paymentTransCode = ""; string requestId = string.Empty, language = string.Empty, total = string.Empty, token = string.Empty, channel = string.Empty, gameId = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); language = Convert.ToString(obj["language"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); gameId = Convert.ToString(obj["gameId"]); if (string.IsNullOrEmpty(requestId)) requestId = ""; if (string.IsNullOrEmpty(language)) language = "0"; if (string.IsNullOrEmpty(token)) token = ""; 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); } uploadEvoucherObj _data = JsonConvert.DeserializeObject(sendData.ToString()); DataSet _ds = lotoDataAccess.THAILAN_EVOUCHER_IN(_data.name, _data.code, _data.users, _data.totalRow, _data.totalMoney); if (_ds != null && _ds.Tables[0].Rows.Count > 0) { string evoucherId = _ds.Tables[0].Rows[0]["id"].ToString(); List> DataColumms = new List>(); var LIST_VOUCHERID = new List(); var LIST_SERIAL = new List(); var LIST_EVOUCHER = new List(); var LIST_MONEY = new List(); var LIST_EXPIRE = new List(); var LIST_CREATE = new List(); foreach (evoucherObj _evoucher in _data.list) { LIST_VOUCHERID.Add(evoucherId); LIST_SERIAL.Add(_evoucher.serial); LIST_EVOUCHER.Add(_evoucher.evoucher); LIST_MONEY.Add(_evoucher.money); LIST_EXPIRE.Add(_evoucher.expireDate); LIST_CREATE.Add(_evoucher.createDate); } DataColumms.Add(LIST_VOUCHERID); DataColumms.Add(LIST_SERIAL); DataColumms.Add(LIST_EVOUCHER); DataColumms.Add(LIST_MONEY); DataColumms.Add(LIST_EXPIRE); DataColumms.Add(LIST_CREATE); lotoDataAccess.THAILAN_EVOUCHER_DETAIL_IN("LOTO_PKG.THAILAN_EVOUCHER_DETAIL_IN", DataColumms); logger.Info("Call database export_created success:"); response.responseCode = "0"; response.responseMessage = "Success"; return Ok(response); } else { response.responseCode = "-2"; response.responseMessage = CommonObj.common.CommonFunction.getErrCodeObjFromRedis(_redis, channel, response.responseCode, language); logger.Info("upload evoucher response : " + response.ToString()); return Ok(response); } logger.Info("getListTicketFree response : " + response.ToString()); return Ok(response); //Ket thuc check token } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult getRandomNotDraw([FromBody] dynamic sendData) { listTermNotDraw response = new listTermNotDraw(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI getCurentTerm: " + sendData.ToString()); string requestId = string.Empty, language = string.Empty,type = string.Empty , seqPage = string.Empty, token = string.Empty, channel = string.Empty, msisdn = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); msisdn = Convert.ToString(obj["msisdn"]); type = Convert.ToString(obj["type"]); if (string.IsNullOrEmpty(type)) type = "-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 = lotoDataAccess.THAILAN_GET_RANDOM_NOT_DRAW (type); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_GET_RANDOM_NOT_DRAW success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new termNotDraw[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { termNotDraw _obj = new termNotDraw(); _obj.id = _ds.Tables[0].Rows[j]["id"].ToString(); _obj.status = _ds.Tables[0].Rows[j]["ID"].ToString(); _obj.createDate = _ds.Tables[0].Rows[j]["VSYSDATE"].ToString(); _obj.startDate = _ds.Tables[0].Rows[j]["DATE_START"].ToString(); _obj.endDate = _ds.Tables[0].Rows[j]["DATE_END"].ToString(); _obj.randomDate = _ds.Tables[0].Rows[j]["DATE_RANDOM"].ToString(); _obj.g1 = _ds.Tables[0].Rows[j]["G1"].ToString(); _obj.g2 = _ds.Tables[0].Rows[j]["G2"].ToString(); _obj.g3 = _ds.Tables[0].Rows[j]["G3"].ToString(); _obj.g4 = _ds.Tables[0].Rows[j]["G4"].ToString(); _obj.g5 = _ds.Tables[0].Rows[j]["G5"].ToString(); _obj.g6 = _ds.Tables[0].Rows[j]["G6"].ToString(); _obj.g7 = _ds.Tables[0].Rows[j]["G7"].ToString(); _obj.g1Draw = _ds.Tables[0].Rows[j]["G1_IS_DRAW"].ToString(); _obj.g2Draw = _ds.Tables[0].Rows[j]["G2_IS_DRAW"].ToString(); _obj.g3Draw = _ds.Tables[0].Rows[j]["G3_IS_DRAW"].ToString(); _obj.g4Draw = _ds.Tables[0].Rows[j]["G4_IS_DRAW"].ToString(); _obj.g5Draw = _ds.Tables[0].Rows[j]["G5_IS_DRAW"].ToString(); _obj.g6Draw = _ds.Tables[0].Rows[j]["G6_IS_DRAW"].ToString(); _obj.g7Draw = _ds.Tables[0].Rows[j]["G7_IS_DRAW"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult upRandomNotDraw([FromBody] dynamic sendData) { Response response = new Response(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI getCurentTerm: " + sendData.ToString()); string requestId = string.Empty, language = string.Empty, randomId = string.Empty, seq = string.Empty , seqPage = string.Empty, token = string.Empty, channel = string.Empty, msisdn = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); msisdn = Convert.ToString(obj["msisdn"]); randomId = Convert.ToString(obj["randomId"]); seq = Convert.ToString(obj["seq"]); if (string.IsNullOrEmpty(randomId)) randomId = "-1"; if (string.IsNullOrEmpty(seq)) seq = "-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 = lotoDataAccess.THAILAN_UP_RANDOM_NOT_DRAW(randomId, seq); response.responseCode = "0"; response.responseMessage = "Success"; return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult upPrize([FromBody] dynamic sendData) { Response response = new Response(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI upPrize: " + sendData.ToString()); string requestId = string.Empty, language = string.Empty, randomId = string.Empty, type = string.Empty , seqPage = string.Empty, token = string.Empty, channel = string.Empty, msisdn = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); requestId = Convert.ToString(obj["requestId"]); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); msisdn = Convert.ToString(obj["msisdn"]); randomId = Convert.ToString(obj["randomId"]); type = Convert.ToString(obj["type"]); if (string.IsNullOrEmpty(randomId)) randomId = "-1"; if (string.IsNullOrEmpty(type)) type = "-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("upPrize 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("upPrize response : " + response.ToString()); return Ok(response); } DataSet _ds = lotoDataAccess.THAILAN_UP_PRIZE(randomId, type); response.responseCode = "0"; response.responseMessage = _ds.Tables[0].Rows[0]["msg"].ToString(); logger.Info(" Response upPrize : " + response.ToString()); return Ok(response); } catch (Exception ex) { logger.Info("upPrize exception: " + ex.ToString()); } logger.Info("upPrize response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsTotalRevenue([FromBody] dynamic sendData) { totalRevenueList response = new totalRevenueList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsTotalRevenue: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty , denngay = string.Empty, pack = string.Empty, token = string.Empty, channel = string.Empty, channelBuy = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); channelBuy = Convert.ToString(obj["channelBuy"]); pack = Convert.ToString(obj["pack"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(channelBuy)) channelBuy = "-1"; if (string.IsNullOrEmpty(pack)) pack = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_TOTAL_REVENUE(tungay,denngay,channelBuy,pack); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_TOTAL_REVENUE success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new totalRevenueObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { totalRevenueObj _obj = new totalRevenueObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.date = _ds.Tables[0].Rows[j]["ngay"].ToString(); _obj.totalUser = _ds.Tables[0].Rows[j]["total_users"].ToString(); _obj.totalTrans = _ds.Tables[0].Rows[j]["total_tran"].ToString(); _obj.totalTicket = _ds.Tables[0].Rows[j]["total_ticket"].ToString(); _obj.totalMoney = _ds.Tables[0].Rows[j]["total_money"].ToString(); _obj.totalWin = _ds.Tables[0].Rows[j]["total_win"].ToString(); _obj.moneyWin = _ds.Tables[0].Rows[j]["money_win"].ToString(); _obj.profit = _ds.Tables[0].Rows[j]["profit"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsDetailPrize([FromBody] dynamic sendData) { detailPrizeList response = new detailPrizeList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsDetailPrize: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty, prize = string.Empty , denngay = string.Empty, msisdn = string.Empty, token = string.Empty, channel = string.Empty, channelBuy = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); channelBuy = Convert.ToString(obj["channelBuy"]); msisdn = Convert.ToString(obj["msisdn"]); prize = Convert.ToString(obj["prizeMoney"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(channelBuy)) channelBuy = "-1"; if (string.IsNullOrEmpty(msisdn)) msisdn = "-1"; if (string.IsNullOrEmpty(prize)) prize = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_DETAIL_PRIZE(tungay, denngay,msisdn, channelBuy, prize); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_DETAIL_PRIZE success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new detailPrizeObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { detailPrizeObj _obj = new detailPrizeObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.msisdn = _ds.Tables[0].Rows[j]["msisdn"].ToString(); _obj.ticket = _ds.Tables[0].Rows[j]["ticket"].ToString(); _obj.pack = _ds.Tables[0].Rows[j]["pack"].ToString(); _obj.packId = _ds.Tables[0].Rows[j]["pack_id"].ToString(); _obj.dateBuy = _ds.Tables[0].Rows[j]["time_buy"].ToString(); _obj.channel = _ds.Tables[0].Rows[j]["channel"].ToString(); _obj.termId = _ds.Tables[0].Rows[j]["term_id"].ToString(); _obj.termDateStart = _ds.Tables[0].Rows[j]["time_term_start"].ToString(); _obj.termDateEnd = _ds.Tables[0].Rows[j]["time_term_end"].ToString(); _obj.termDateRandom = _ds.Tables[0].Rows[j]["time_term_random"].ToString(); _obj.prizeCode = _ds.Tables[0].Rows[j]["winner_code"].ToString(); _obj.prizeName = _ds.Tables[0].Rows[j]["winner_detail"].ToString(); _obj.prizeMoney = _ds.Tables[0].Rows[j]["winner_money"].ToString(); _obj.reuslt = _ds.Tables[0].Rows[j]["result"].ToString(); _obj.dateSendEvoucher = _ds.Tables[0].Rows[j]["time_send_evoucher"].ToString(); _obj.status = _ds.Tables[0].Rows[j]["status"].ToString(); _obj.evoucher = _ds.Tables[0].Rows[j]["evoucher"].ToString(); _obj.expireDate = _ds.Tables[0].Rows[j]["e_expire_date"].ToString(); _obj.mt = _ds.Tables[0].Rows[j]["mt_winner"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsTotalPrize([FromBody] dynamic sendData) { totalPrizeList response = new totalPrizeList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsTotalPrize: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty , denngay = string.Empty, msisdn = string.Empty, token = string.Empty, channel = string.Empty, channelBuy = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); channelBuy = Convert.ToString(obj["channelBuy"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(channelBuy)) channelBuy = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_TOTAL_PRIZE(tungay, denngay, channelBuy); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_TOTAL_PRIZE success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new totalPrizeObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { totalPrizeObj _obj = new totalPrizeObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.prizeName = _ds.Tables[0].Rows[j]["winner_detail"].ToString(); _obj.totalTicket = _ds.Tables[0].Rows[j]["total_ticket"].ToString(); _obj.totalPlayer = _ds.Tables[0].Rows[j]["total_player"].ToString(); _obj.totalMoney = _ds.Tables[0].Rows[j]["total_money"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsDetailTicket([FromBody] dynamic sendData) { detailTicketList response = new detailTicketList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsDetailTicket: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty , denngay = string.Empty, msisdn = string.Empty, token = string.Empty, channel = string.Empty, channelBuy = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); channelBuy = Convert.ToString(obj["channelBuy"]); msisdn = Convert.ToString(obj["msisdn"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(channelBuy)) channelBuy = "-1"; if (string.IsNullOrEmpty(msisdn)) msisdn = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_DETAIL_TICKET(tungay, denngay,msisdn,channelBuy); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_DETAIL_TICKET success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new detailTicketObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { detailTicketObj _obj = new detailTicketObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.msisdn = _ds.Tables[0].Rows[j]["users"].ToString(); _obj.dateBuy = _ds.Tables[0].Rows[j]["time_buy"].ToString(); _obj.ticket = _ds.Tables[0].Rows[j]["ticket"].ToString(); _obj.pack = _ds.Tables[0].Rows[j]["pack"].ToString(); _obj.packId = _ds.Tables[0].Rows[j]["pack_id"].ToString(); _obj.packMoney = _ds.Tables[0].Rows[j]["pack_money"].ToString(); _obj.termId = _ds.Tables[0].Rows[j]["random_id"].ToString(); _obj.termDateStart = _ds.Tables[0].Rows[j]["time_term_start"].ToString(); _obj.termDateEnd = _ds.Tables[0].Rows[j]["time_term_end"].ToString(); _obj.termDateRandom = _ds.Tables[0].Rows[j]["time_term_random"].ToString(); _obj.mt = _ds.Tables[0].Rows[j]["mt_ticket"].ToString(); _obj.channel = _ds.Tables[0].Rows[j]["channel"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsDetailEvoucher([FromBody] dynamic sendData) { detailEvoucherList response = new detailEvoucherList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsDetailEvoucher: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty , denngay = string.Empty, msisdn = string.Empty, token = string.Empty , channel = string.Empty, channelBuy = string.Empty, evoucher = string.Empty, status = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); msisdn = Convert.ToString(obj["msisdn"]); evoucher = Convert.ToString(obj["evoucher"]); status = Convert.ToString(obj["status"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(channelBuy)) channelBuy = "-1"; if (string.IsNullOrEmpty(msisdn)) msisdn = "-1"; if (string.IsNullOrEmpty(evoucher)) evoucher = "-1"; if (string.IsNullOrEmpty(status)) status = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_DETAIL_EVOUCHER(tungay, denngay, msisdn, evoucher,status); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_DETAIL_EVOUCHER success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new detailEvoucherObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { detailEvoucherObj _obj = new detailEvoucherObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.msisdn = _ds.Tables[0].Rows[j]["msisdn"].ToString(); _obj.evoucher = _ds.Tables[0].Rows[j]["evoucher"].ToString(); _obj.money = _ds.Tables[0].Rows[j]["money"].ToString(); _obj.status = _ds.Tables[0].Rows[j]["status"].ToString(); _obj.expireDate = _ds.Tables[0].Rows[j]["e_expire_date"].ToString(); _obj.createDate = _ds.Tables[0].Rows[j]["create_date"].ToString(); _obj.sendDate = _ds.Tables[0].Rows[j]["update_date"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } [HttpPost] public IActionResult cmsTotalEvoucher([FromBody] dynamic sendData) { totalEvoucherList response = new totalEvoucherList(); response.responseCode = "-1"; response.responseMessage = "Err unknow"; logger.Info("Request from UI cmsTotalEvoucher: " + sendData.ToString()); string language = string.Empty, tungay = string.Empty , denngay = string.Empty, msisdn = string.Empty, token = string.Empty , channel = string.Empty, channelBuy = string.Empty, evoucher = string.Empty, status = string.Empty; try { var obj = JObject.Parse(sendData.ToString()); token = Convert.ToString(obj["token"]); channel = Convert.ToString(obj["channel"]); tungay = Convert.ToString(obj["fromDate"]); denngay = Convert.ToString(obj["toDate"]); status = Convert.ToString(obj["status"]); if (string.IsNullOrEmpty(channel)) channel = "-1"; if (string.IsNullOrEmpty(tungay)) tungay = "-1"; if (string.IsNullOrEmpty(denngay)) denngay = "-1"; if (string.IsNullOrEmpty(status)) status = "-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); } } DataSet _ds = lotoDataAccess.THAILAN_CMS_TOTAL_EVOUCHER(tungay, denngay, status); response.responseCode = "0"; response.responseMessage = "Success"; logger.Info("Call database THAILAN_CMS_TOTAL_EVOUCHER success:"); if (_ds != null & _ds.Tables[0].Rows.Count > 0) { response.list = new totalEvoucherObj[_ds.Tables[0].Rows.Count]; for (int j = 0; j < _ds.Tables[0].Rows.Count; j++) { totalEvoucherObj _obj = new totalEvoucherObj(); _obj.stt = _ds.Tables[0].Rows[j]["stt"].ToString(); _obj.money = _ds.Tables[0].Rows[j]["money"].ToString(); _obj.total = _ds.Tables[0].Rows[j]["sl"].ToString(); response.list[j] = _obj; } } return Ok(response); } catch (Exception ex) { logger.Info("getCurentTerm exception: " + ex.ToString()); } logger.Info("confirmTicket response : " + response.ToString()); return Ok(response); } } }