public void StartRetweetProcess(DataSet CompaignsDataSet, String CampaignName) { try { DataRow[] drModelDetails = CompaignsDataSet.Tables[0].Select("CampaignName = '" + CampaignName + "'"); if (drModelDetails.Count() == 0) { } //Get 1st row from arrey DataRow DrCampaignDetails = drModelDetails[0]; string AcFilePath = DrCampaignDetails.ItemArray[2].ToString(); string _retweetKeyword = DrCampaignDetails.ItemArray[3].ToString(); bool _IsUsername = (Convert.ToInt32(DrCampaignDetails.ItemArray[5]) == 1) ? true : false; bool _IsUniqueMessage = (Convert.ToInt32(DrCampaignDetails.ItemArray[19]) == 1) ? true : false; bool _IsRetweetParDay = (Convert.ToInt32(DrCampaignDetails.ItemArray[8]) == 1) ? true : false; int _NoofRetweetParDay = Convert.ToInt32(DrCampaignDetails.ItemArray[9]); int _NoofRetweetParAc = Convert.ToInt32(DrCampaignDetails.ItemArray[10]); bool IsSchedulDaily = (Convert.ToInt32(DrCampaignDetails.ItemArray[12]) == 1) ? true : false; DateTime SchedulerStartTime = Convert.ToDateTime(DrCampaignDetails.ItemArray[13].ToString()); DateTime SchedulerEndTime = Convert.ToDateTime(DrCampaignDetails.ItemArray[14].ToString()); int DelayStar = Convert.ToInt32(DrCampaignDetails.ItemArray[15]); int DelayEnd = Convert.ToInt32(DrCampaignDetails.ItemArray[16]); int NoOfThreads = Convert.ToInt32(DrCampaignDetails.ItemArray[17]); List<string> _lstUserAccounts = new List<string>(); List<List<CampTwitterDataScrapper.StructTweetIDs>> list_lstTargetTweetMessages = new List<List<CampTwitterDataScrapper.StructTweetIDs>>(); classes.Cls_AccountsManager Obj_AccManger = new Cls_AccountsManager(); //Checking Account File is Exist or not if (!File.Exists(AcFilePath)) { ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Account File Doesn't Exist. Please Update Account File of Campaign " + CampaignName + " ]"); return; } // Get User ID and pass from File ... _lstUserAccounts = Globussoft.GlobusFileHelper.ReadLargeFile(AcFilePath); _lstUserAccounts = _lstUserAccounts.Distinct().ToList(); if (_lstUserAccounts.Count == 0) { MessageBox.Show("Account File is Empty."); return; } if (string.IsNullOrEmpty(_retweetKeyword)) { MessageBox.Show("Re-Tweet key word is not mention."); return; } CampaignTweetAccountContainer objCampaignReTweetAccountContainer = Obj_AccManger.AccountManager(_lstUserAccounts); ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ " + objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count + " Accounts Uploaded. ]"); //get All tweets from entered user name //Scrap Tweets using Username List<CampTwitterDataScrapper.StructTweetIDs> lst_Struct_TweetData = new List<CampTwitterDataScrapper.StructTweetIDs>(); CampTwitterDataScrapper CamptweetScrapper = new CampTwitterDataScrapper(); int noOfRecordsForUniqueMessage = (_NoofRetweetParAc * (objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count)); //List<string> _lstTweetMessageForUnique = new List<string>(); int splitNo = 0; //Get details according to enter keyword is user name or keyword ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Getting Tweets from " + _retweetKeyword + " KeyWord. ]"); CamptweetScrapper.noOfRecords = (_NoofRetweetParAc * (objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count)); if (_IsUsername) { lst_Struct_TweetData = CamptweetScrapper.TweetExtractor_ByUserName_New(_retweetKeyword); } else if (_IsUniqueMessage) { lst_Struct_TweetData = CamptweetScrapper.GetTweetData_New_ForCampaign(_retweetKeyword, noOfRecordsForUniqueMessage); splitNo = lst_Struct_TweetData.Count / _lstUserAccounts.Count; if (splitNo == 0) { splitNo = RandomNumberGenerator.GenerateRandom(0, lst_Struct_TweetData.Count - 1); } list_lstTargetTweetMessages = Split(lst_Struct_TweetData, splitNo); } else { lst_Struct_TweetData = CamptweetScrapper.GetTweetData_New_ForCampaign(_retweetKeyword, _NoofRetweetParAc); } ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ " + lst_Struct_TweetData.Count + " Tweet Founded. ]"); if (lst_Struct_TweetData.Count == 0) { ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ " + lst_Struct_TweetData.Count + " Tweet Founded. ]"); MessageBox.Show("No records Found from " + _retweetKeyword + " Keywored."); return; } MixedCampaignManager.CustomUserControls.retweetusercontrols Objretweetusercontrol = new CustomUserControls.retweetusercontrols(); Objretweetusercontrol.retweetusercontrolslogEvents.addToLogger += new EventHandler(logEvents_addToLogger); ThreadPool.SetMaxThreads(NoOfThreads, NoOfThreads); int LstCounter = 0; foreach (var Account in objCampaignReTweetAccountContainer.dictionary_CampaignAccounts) { ((CampaignAccountManager)Account.Value).logEvents.addToLogger += new EventHandler(logEvents_addToLogger); if (_IsUniqueMessage) { lst_Struct_TweetData = list_lstTargetTweetMessages[LstCounter]; } if (counterThreadsCampaignRetweet >= NoOfThreads) { lock (lockerThreadsCamapignRetweet) { Monitor.Wait(lockerThreadsCamapignRetweet); } } #region New Licensing Feature Added by Sonu try { if (Globals.IsBasicVersion || Globals.IsProVersion || Globals.IsFreeVersion) { string queryCheckDataBaseEmpty = "select * from tb_FBAccount"; DataSet DS1 = DataBaseHandler.SelectQuery(queryCheckDataBaseEmpty, "tb_FBAccount"); if (!(DS1.Tables[0].Rows.Count == 0)) { DataTable DT = DS1.Tables[0]; bool check = DT.Select().Any(x => x.ItemArray[0].ToString() == Account.Key); if (!check) { System.Windows.Forms.MessageBox.Show("Please Upload this Account in Account Manager"); return; } else { Thread threadGetStartProcessForRetweet = new Thread(startRetweeting); threadGetStartProcessForRetweet.Name = CampaignName + "_" + Account.Key; threadGetStartProcessForRetweet.IsBackground = true; threadGetStartProcessForRetweet.Start(new object[] { Account, lst_Struct_TweetData, _IsRetweetParDay, _NoofRetweetParDay, _NoofRetweetParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); } } else { System.Windows.Forms.MessageBox.Show("Please Upload this Account in Account Manager"); return; } } else { Thread threadGetStartProcessForRetweet = new Thread(startRetweeting); threadGetStartProcessForRetweet.Name = CampaignName + "_" + Account.Key; threadGetStartProcessForRetweet.IsBackground = true; threadGetStartProcessForRetweet.Start(new object[] { Account, lst_Struct_TweetData, _IsRetweetParDay, _NoofRetweetParDay, _NoofRetweetParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); } } catch { }; #endregion #region old Code //Thread threadGetStartProcessForRetweet = new Thread(startRetweeting); //threadGetStartProcessForRetweet.Name = CampaignName + "_" + Account.Key; //threadGetStartProcessForRetweet.IsBackground = true; //threadGetStartProcessForRetweet.Start(new object[] { Account, lst_Struct_TweetData, _IsRetweetParDay, _NoofRetweetParDay, _NoofRetweetParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); #endregion Thread.Sleep(1000); LstCounter++; } } catch (Exception Err) { ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ There is some error,Retweet Process cannot be started ]"); } }
public void StartProcess(DataSet CompaignsDataSet, string CampaignName) { DataRow[] drModelDetails = CompaignsDataSet.Tables[0].Select("CampaignName = '" + CampaignName + "'"); if (drModelDetails.Count() == 0) { } //Get 1st row from arrey DataRow DrCampaignDetails = drModelDetails[0]; //get details from row string AcFilePath = DrCampaignDetails.ItemArray[2].ToString(); string _ReplyMsgfilePath = DrCampaignDetails.ItemArray[3].ToString(); string _ReplyKeyword = DrCampaignDetails.ItemArray[4].ToString(); bool _IsUsername = (Convert.ToInt32(DrCampaignDetails.ItemArray[5]) == 1) ? true : false; bool _IsUniqueMessage = (Convert.ToInt32(DrCampaignDetails.ItemArray[19]) == 1) ? true : false; bool _IsReplyParDay = (Convert.ToInt32(DrCampaignDetails.ItemArray[8]) == 1) ? true : false; int _NoofReplyParDay = Convert.ToInt32(DrCampaignDetails.ItemArray[9]); int _NoofReplyParAc = Convert.ToInt32(DrCampaignDetails.ItemArray[10]); bool IsSchedulDaily = (Convert.ToInt32(DrCampaignDetails.ItemArray[12]) == 1) ? true : false; //bool IsSchedulDaily = (Convert.ToInt32(DrCampaignDetails.ItemArray[11]) == 1) ? true : false; DateTime SchedulerStartTime = Convert.ToDateTime(DrCampaignDetails.ItemArray[13].ToString()); DateTime SchedulerEndTime = Convert.ToDateTime(DrCampaignDetails.ItemArray[14].ToString()); //int DelayStar = Convert.ToInt32(DrCampaignDetails.ItemArray[14]); //int DelayEnd = Convert.ToInt32(DrCampaignDetails.ItemArray[15]); //int NoOfThreads = Convert.ToInt32(DrCampaignDetails.ItemArray[16]); int DelayStar = Convert.ToInt32(DrCampaignDetails.ItemArray[15]); int DelayEnd = Convert.ToInt32(DrCampaignDetails.ItemArray[16]); int NoOfThreads = Convert.ToInt32(DrCampaignDetails.ItemArray[17]); bool IsDuplicateMessage = (Convert.ToInt32(DrCampaignDetails.ItemArray[22]) == 1) ? true : false; List<string> _lstUserAccounts = new List<string>(); List<List<CampTwitterDataScrapper.StructTweetIDs>> list_lstTargetMessages = new List<List<CampTwitterDataScrapper.StructTweetIDs>>(); classes.Cls_AccountsManager Obj_AccManger = new Cls_AccountsManager(); //checking files if (!File.Exists(AcFilePath)) { Log("[ " + DateTime.Now + " ] => [ Account file doesn't exist. Please Update new file in campaign " + CampaignName + " ]"); return; } else if (!File.Exists(_ReplyMsgfilePath)) { Log("[ " + DateTime.Now + " ] => [ reply Message file doesn't exist. Please Update new file in campaign " + CampaignName + " ]"); return; } else if (!File.Exists(_ReplyKeyword)) { Log("[ " + DateTime.Now + " ] => [ reply Keyword file doesn't exist. Please Update new file in campaign " + CampaignName + " ]"); return; } // Get User ID and pass from File ... _lstUserAccounts = Globussoft.GlobusFileHelper.ReadLargeFile(AcFilePath); _lstUserAccounts = _lstUserAccounts.Distinct().ToList(); if (_lstUserAccounts.Count == 0) { MessageBox.Show("Account File is Empty."); return; } if (string.IsNullOrEmpty(_ReplyKeyword)) { MessageBox.Show("Reply keyword File is not mention."); return; } CampaignManager.CampaignTweetAccountContainer objCampaignReTweetAccountContainer = Obj_AccManger.AccountManager(_lstUserAccounts); Log("[ " + DateTime.Now + " ] => [ " + objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count + " Accounts Uploaded. ]"); //Get the Reply Messages from File path List<string> _lst_ReplyMessages = new List<string>(); List<string> _lst_ReplyKeywordFile = new List<string>(); _lst_ReplyMessages = Globussoft.GlobusFileHelper.ReadLargeFile(_ReplyMsgfilePath); //_lst_ReplyMessages = _lst_ReplyMessages.Distinct().ToList(); if (!IsDuplicateMessage) { _lst_ReplyMessages = _lst_ReplyMessages.Distinct().ToList(); } if (IsDuplicateMessage == true) { #region int countDifference = _lstUserAccounts.Count - _lst_ReplyMessages.Count; if (countDifference != 0) { List<string> TemList = new List<string>(); for (int i = 0; i < countDifference; i++) { try { TemList.Add(_lst_ReplyMessages[i]); } catch (Exception ex) { if (ex.Message.Contains("Index was out of range")) { i = 0; } } if (TemList.Count == countDifference) { Log("[ " + DateTime.Now + " ] => [ " + countDifference + " Duplicate Messages Uploaded. ]"); _lst_ReplyMessages.AddRange(TemList); break; } } } #endregion } else if ((!IsDuplicateMessage == true) && _lstUserAccounts.Count > _lst_ReplyMessages.Count) { if (_lst_ReplyMessages.Count > 0) { //Log("[ " + DateTime.Now + " ] => [ Message is less than accounts ]"); //DialogResult dialogResult = MessageBox.Show("Message is less than accounts. Do you want to repeat remaining Messages.", "Warning", MessageBoxButtons.YesNo); //if (dialogResult == DialogResult.Yes) { #region int countDifference = _lstUserAccounts.Count - _lst_ReplyMessages.Count; if (countDifference != 0) { List<string> TemList = new List<string>(); for (int i = 0; i < countDifference; i++) { try { TemList.Add(_lst_ReplyMessages[i]); } catch (Exception ex) { if (ex.Message.Contains("Index was out of range")) { // i = 0; } } if (TemList.Count == countDifference) { Log("[ " + DateTime.Now + " ] => [ " + countDifference + " Duplicate Messages Uploaded. ]"); _lst_ReplyMessages.AddRange(TemList); break; } } } #endregion } //else //{ //} } } _lst_ReplyKeywordFile = Globussoft.GlobusFileHelper.ReadLargeFile(_ReplyKeyword); _lst_ReplyKeywordFile = _lst_ReplyKeywordFile.Distinct().ToList(); if (_lst_ReplyKeywordFile.Count == 0) { MessageBox.Show("Reply Keyword File is Empty."); return; } if (_lst_ReplyMessages.Count == 0) { MessageBox.Show("Tweet Message File is Empty."); return; } //Add remaining messages if (_lstUserAccounts.Count > _lst_ReplyMessages.Count) { Log("[ " + DateTime.Now + " ] => [ Message is less than accounts ]"); DialogResult dialogResult = MessageBox.Show("Message is less than accounts. Do you want to repeat remaining Messages.", "Warning", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { #region int countDifference = _lstUserAccounts.Count - _lst_ReplyMessages.Count; if (countDifference != 0) { List<string> TemList = new List<string>(); for (int i = 0; i < countDifference; i++) { try { TemList.Add(_lst_ReplyMessages[i]); } catch (Exception ex) { if (ex.Message.Contains("Index was out of range")) { i = 0; } } if (TemList.Count == countDifference) { Log("[ " + DateTime.Now + " ] => [ " + countDifference + " Duplicate Messages Uploaded. ]"); _lst_ReplyMessages.AddRange(TemList); break; } } } #endregion } else { #region Puja //int count = _lst_ReplyMessages.Count; //Queue<string> queUserAccount = new Queue<string>(); //Queue<string> queReplyMessages = new Queue<string>(); //for (int i = 0; i < count; i++) //{ // try // { // queUserAccount.Enqueue(_lstUserAccounts[i].ToString()); // } // catch { } //} //foreach (string item in _lst_ReplyMessages) //{ // try // { // queReplyMessages.Enqueue(item); // } // catch // { } //} //_lstUserAccounts.Clear(); //// queUserAccount.Dequeue(_lstUserAccounts(_item)); //foreach (string _item in queUserAccount) //{ // try // { // _lstUserAccounts.Add(queUserAccount.Dequeue()); // } // catch // { } //} #endregion } } Log("[ " + DateTime.Now + " ] => [ " + _lst_ReplyMessages.Count + " Reply Messages uploaded. ]"); //get All tweets from entered user name //Scrap Tweets using Username List<CampTwitterDataScrapper.StructTweetIDs> lst_Struct_ReplyData = new List<CampTwitterDataScrapper.StructTweetIDs>(); List<CampTwitterDataScrapper.StructTweetIDs> lst_Struct_ReplyDataTemp = new List<CampTwitterDataScrapper.StructTweetIDs>(); CampTwitterDataScrapper CamptweetScrapper = new CampTwitterDataScrapper(); int noOfRecordsForUniqueMessage = (_NoofReplyParAc * (objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count)); //List<string> _lstTweetMessageForUnique = new List<string>(); int splitNo = 0; //Get details according to enter keyword is user name or keyword CamptweetScrapper.noOfRecords = (_NoofReplyParAc * (objCampaignReTweetAccountContainer.dictionary_CampaignAccounts.Count)); Log("[ " + DateTime.Now + " ] => [ Getting tweets. ]"); foreach (string _ReplyKeywordTemp in _lst_ReplyKeywordFile) { if (_IsUsername) { lst_Struct_ReplyDataTemp = CamptweetScrapper.TweetExtractor_ByUserName_New(_ReplyKeywordTemp); } else { lst_Struct_ReplyDataTemp = CamptweetScrapper.GetTweetData_New_ForCampaign(_ReplyKeywordTemp, _NoofReplyParAc); } lst_Struct_ReplyData.AddRange(lst_Struct_ReplyDataTemp); } if (_IsUniqueMessage) { // lst_Struct_ReplyDataTemp = CamptweetScrapper.GetTweetData_New_ForCampaign(_ReplyKeywordTemp, noOfRecordsForUniqueMessage); splitNo = lst_Struct_ReplyData.Count / _lstUserAccounts.Count; if (splitNo == 0) { splitNo = RandomNumberGenerator.GenerateRandom(0, lst_Struct_ReplyData.Count - 1); } list_lstTargetMessages = Split(lst_Struct_ReplyData, splitNo); } Log("[ " + DateTime.Now + " ] => [ Tweet found process completed. ]"); if (lst_Struct_ReplyData.Count == 0) { Log("[ " + DateTime.Now + " ] => [ " + lst_Struct_ReplyData.Count + " Tweet Founded. ]"); MessageBox.Show("No records Found from " + _ReplyKeyword + " Keywords."); return; } else Log("[ " + DateTime.Now + " ] => [ " + lst_Struct_ReplyData.Count + " Tweet Founded. ]"); int LstCounter = 0; foreach (var Account in objCampaignReTweetAccountContainer.dictionary_CampaignAccounts) { ((CampaignAccountManager)Account.Value).logEvents.addToLogger += new EventHandler(logEvents_addToLogger); //ThreadPool.QueueUserWorkItem(new WaitCallback(GetStartReply), new object[] { Account, lst_Struct_ReplyData, _lst_ReplyMessages, _IsReplyParDay, _NoofReplyParDay, _NoofReplyParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); //GetStartReply(new object[] { Account, lst_Struct_ReplyData, _lst_ReplyMessages, _IsReplyParDay, _NoofReplyParDay, _NoofReplyParAc, DelayStar, DelayEnd, CampaignName }); if (LstCounter == list_lstTargetMessages.Count && (_IsUniqueMessage)) { Log("[ " + DateTime.Now + " ] => [ Account is greater than List of tweets. ]"); break; } if (_IsUniqueMessage) { lst_Struct_ReplyData = list_lstTargetMessages[LstCounter]; } if (counterThreadsCampaignReply >= NoOfThreads) { lock (lockerThreadsCampaignReply) { Monitor.Wait(lockerThreadsCampaignReply); } } #region New Licensing Feature Added By Sonu try { if (Globals.IsBasicVersion || Globals.IsProVersion || Globals.IsFreeVersion) { string queryCheckDataBaseEmpty = "select * from tb_FBAccount"; DataSet DS1 = DataBaseHandler.SelectQuery(queryCheckDataBaseEmpty, "tb_FBAccount"); if (!(DS1.Tables[0].Rows.Count == 0)) { DataTable DT = DS1.Tables[0]; bool check = DT.Select().Any(x => x.ItemArray[0].ToString() == Account.Key); if (!check) { System.Windows.Forms.MessageBox.Show("Please Upload this Account in Account Manager"); return; } else { Thread threadGetStartProcessForReply = new Thread(GetStartReply); threadGetStartProcessForReply.Name = CampaignName + "_" + Account.Key; threadGetStartProcessForReply.IsBackground = true; threadGetStartProcessForReply.Start(new object[] { Account, lst_Struct_ReplyData, _lst_ReplyMessages, _IsReplyParDay, _NoofReplyParDay, _NoofReplyParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); } } else { System.Windows.Forms.MessageBox.Show("Please Upload this Account in Account Manager"); return; } } else { Thread threadGetStartProcessForReply = new Thread(GetStartReply); threadGetStartProcessForReply.Name = CampaignName + "_" + Account.Key; threadGetStartProcessForReply.IsBackground = true; threadGetStartProcessForReply.Start(new object[] { Account, lst_Struct_ReplyData, _lst_ReplyMessages, _IsReplyParDay, _NoofReplyParDay, _NoofReplyParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); } } catch { }; #endregion #region old Code //Thread threadGetStartProcessForReply = new Thread(GetStartReply); //threadGetStartProcessForReply.Name = CampaignName + "_" + Account.Key; //threadGetStartProcessForReply.IsBackground = true; //threadGetStartProcessForReply.Start(new object[] { Account, lst_Struct_ReplyData, _lst_ReplyMessages, _IsReplyParDay, _NoofReplyParDay, _NoofReplyParAc, DelayStar, DelayEnd, CampaignName, IsSchedulDaily, SchedulerEndTime }); #endregion Thread.Sleep(1000); LstCounter++; } }