public void ThreadSendRequest(object o) { try { MTQueueReportProvider providerMTR = new MTQueueReportProvider(); MTProvider providerMT = new MTProvider(); List <MTQueueReport> list = (List <MTQueueReport>)o; string listSMSID = ""; foreach (MTQueueReport item in list) { //logger.Info("ThreadSendRequest - " + item.ProcessingCode); listSMSID += item.SMSID + "|"; item.Status = ConfigType.MT_STATUS_NOTIFY_OK; MT mt = new MT() { Content = item.Content, DateCreate = item.DateCreate, Dest = item.Dest, Password = item.Password, Priority = item.Priority, ProcessingCode = item.ProcessingCode, Receiver = item.Receiver, Source = item.Source, Status = item.Status, TimeSend = item.TimeSend, TransID = item.TransID, TransTime = item.TransTime, User = item.User, Result = item.Result, SMSID = item.SMSID, RouteName = item.RouteName }; providerMT.Insert(mt); providerMTR.DeleteById(item.Id); } if (!string.IsNullOrEmpty(listSMSID)) { listSMSID = listSMSID.Substring(0, listSMSID.Length - 1); ConnectServiceVietinbank csv = new ConnectServiceVietinbank(); Thread callService = new Thread(csv.CallServiceBDSD); ModelCallService model = new ModelCallService() { NOSMS = list.Count, SMSLIST = listSMSID }; callService.Start(model); } _doneEvent.Set(); } catch (Exception ex) { logger.Error(ex); _doneEvent.Set(); } }
public void AutoCallVietinbankOTP() { try { ThreadPool.SetMaxThreads(100, int.MaxValue); while (true) { MTQueueReportProvider provider = new MTQueueReportProvider(); List <MTQueueReport> list = provider.GetAllByStatusAndProcessingCode(ConfigType.MT_STATUS_NOT_NOTIFY, ConfigType.QueueService_ProcessingCode_OTP); if (list.Count > 0) { List <ManualResetEvent> handles = new List <ManualResetEvent>(); while (list.Count > 0) { ManualResetEvent handle = new ManualResetEvent(false); SendRequestVietinbank srv = new SendRequestVietinbank(handle); handles.Add(handle); List <MTQueueReport> tmp = new List <MTQueueReport>(); if (list.Count > NUMBER_TAKE) { tmp.AddRange(list.Take(NUMBER_TAKE).ToList()); list.RemoveRange(0, NUMBER_TAKE); } else { tmp.AddRange(list); list.RemoveRange(0, list.Count); } ThreadPool.QueueUserWorkItem(srv.ThreadSendRequestOTP, tmp); } WaitHandle.WaitAll(handles.ToArray()); } Thread.Sleep(100); } } catch (Exception ex) { logger.Error(ex); Thread.Sleep(1000); AutoCallVietinbankOTP(); } }
public void SendSMSFormList(object obj) { try { List <QueueService> listSend = (List <QueueService>)obj; MTQueueReportProvider providerMTR = new MTQueueReportProvider(); MTProvider providerMT = new MTProvider(); QueueServiceProvider qsProvider = new QueueServiceProvider(); EncryptAndDecrypt ead = new EncryptAndDecrypt(); SubTelcoProvider stProvider = new SubTelcoProvider(); RouteTelcoProvider routeProvider = new RouteTelcoProvider(); while (listSend != null && listSend.Count > 0) { //string str_result = "0:NONE_ROUTE"; QueueService model = listSend[0]; //if(model.Receiver.Contains("904993309") || model.Receiver.Contains("988018028")) //{ // str_result = SendSMS(model, false, ead, stProvider, routeProvider); //} string str_result = SendSMS(model, false, ead, stProvider, routeProvider); var results = str_result.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries).ToList(); int result = Convert.ToInt32(results[0]); if (result == 501 || result == 502 || result == 503 || result == 555) { //FAIL MT mt = new MT() { Content = model.Content, DateCreate = model.DateCreate, Dest = model.Dest, Password = model.Password, Priority = model.Priority, ProcessingCode = model.ProcessingCode, Receiver = model.Receiver, Source = model.Source, Status = ConfigType.MT_STATUS_NOT_NOTIFY_ERROR, TimeSend = DateTime.Now, TransID = model.TransID, TransTime = model.TransTime, User = model.User, Result = result, SMSID = model.SMSID, RouteName = results[1] }; providerMT.Insert(mt); } else { //SUCCESS MTQueueReport mt = new MTQueueReport() { Content = model.Content, DateCreate = model.DateCreate, Dest = model.Dest, Password = model.Password, Priority = model.Priority, ProcessingCode = model.ProcessingCode, Receiver = model.Receiver, Source = model.Source, Status = ConfigType.MT_STATUS_NOT_NOTIFY, TimeSend = DateTime.Now, TransID = model.TransID, TransTime = model.TransTime, User = model.User, Result = result, SMSID = model.SMSID, RouteName = results[1] }; providerMTR.Insert(mt); } logger.Info("SendSMS [" + results[1] + "] : " + model.Receiver + " | " + model.Content + " | " + result); listSend.RemoveAt(0); qsProvider.DeleteById(model.Id); Thread.Sleep(10); } _doneEvent.Set(); } catch (Exception ex) { logger.Error(ex); _doneEvent.Set(); Thread.Sleep(1000); //SendSMSFormList(listSend); } }