public List <SmsLog> GetSMSarray_AlertByRules(List <SmsLog> alerts) { List <SmsLog> result = new List <SmsLog>(); var user_id_list = alerts.Select(x => x.AspNetUser_Id).Distinct().ToArray(); //string[] user_id_list = new string[2] { "20595462-e9cd-40a7-81e9-08fc7fdbaa4c","cc5e12ee-54bd-47ef-88ce-7e8590432218" }; string useridpar = "\'" + string.Join("\',\'", user_id_list) + "\'"; using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { var phonesList = context.SMS_Get_PhonesListByUserID(useridpar).ToList(); if (phonesList.Count > 0) { foreach (var item in alerts) { var r = phonesList.Find(x => (x.AspNetUser_ID == item.AspNetUser_Id) && (x.Alert_Name == item.@event) && x.phone.Trim() == item.phonenumber.Trim() ); if (r != null) { item.phonenumber = r.phone; result.Add(item); } } } } return(result); }
//Update sms status by FeedBack request internal void UpdateSMSstatus() { string param = string.Empty; //1. Request FeedBack status using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { var smslist = context.SmsLogs.Where(z => z.status == "accepted" || z.status == "queued" || z.status == "prepared to sending").Select(x => new { clientId = x.id, smscId = x.smscId.Trim() }).ToList(); param = (smslist.Count > 0) ? JsonConvert.SerializeObject(smslist) : "0"; } if (param != "0") { string req_pass = "******"login\": \"" + Properties.Settings.Default.login + "\",\"password\": \"" + Properties.Settings.Default.password + "\", \"messages\": " + param + "}"; FeedBackResponse fbr = HttpPostRequestStatus(req_pass); FB_StatusHandler(fbr); } }
private void FB_StatusHandler(FeedBackResponse fbr) { //1. get messages list from FeedBack Responce List <messages> sms_fbr = new List <messages>(); sms_fbr.AddRange(fbr.messages); int[] clientIdarr = sms_fbr.Select(x => x.clientId).ToArray(); //2. Update records in database List <SmsLog> slxx = new List <SmsLog>(); try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { slxx = context.SmsLogs.Where(x => clientIdarr.Contains(x.id)).ToList(); //Update status and smscid from FeedBack Response; foreach (var item in slxx) { int client_Id = sms_fbr.Find(x => x.clientId == item.id).clientId; if (item.id == client_Id) { item.status = sms_fbr.Find(x => x.clientId == item.id).status; item.smscId = sms_fbr.Find(x => x.clientId == item.id).smscId; } } context.SaveChanges(); } } catch (Exception ex) { string x = ex.Message; } }
// Read Alerts log Table public List <SmsLog> GetZ_AlertLogs() { List <SMS_GetZ_AlertLogsByDate_Result> result = new List <SMS_GetZ_AlertLogsByDate_Result>(); List <SmsLog> sl = new List <SmsLog>(); DateTime?dt = GetTorontoLocalDateTime(); //DateTime? dt = DateTime.Parse("2020-08-5"); try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { result = context.SMS_GetZ_AlertLogsByDate(dt.Value).ToList(); } //remove record with Gaps > 5% if (result.Count > 0) { result = RemoveBigGapsData(result, Properties.Settings.Default.GapsLimit); } else { return(sl); } } catch (Exception ex) { throw; } //Write records to Smslog table database foreach (var item in result) { SmsLog slitem = new SmsLog(); slitem.@event = item.@event; slitem.message = item.message; slitem.phonenumber = item.Phone; slitem.status = "prepared to sending"; slitem.datemark = item.date_emailsent; slitem.smscId = "0"; slitem.AspNetUser_Id = item.AspNetUser_ID; sl.Add(slitem); slitem = null; } //check if records were saved today var rdonetoday = RemoveItemsSaved(sl); return(rdonetoday); }
// Write SMS log records public void WriteSmsLogs(List <SmsLog> smsLogs) { try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { context.SmsLogs.AddRange(smsLogs); context.SaveChanges(); } } catch (Exception ex) { throw; } }
private List <SmsLog> RemoveItemsSaved(List <SmsLog> sl) { List <SmsLog> sl_result = new List <SmsLog>(); DateTime?dt = GetTorontoLocalDateTime().Date; //DateTime.Parse("2020-04-02"); // //DateTime? dt = DateTime.Parse("2020-08-05"); // DateTime?dt1 = dt.Value.Date.AddHours(24); List <SmsLog> rowex = new List <SmsLog>(); try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { rowex = context.SmsLogs.Where(x => x.datemark >= dt.Value && x.datemark <= dt1.Value && x.status.Contains("delivered")).ToList(); } } catch (Exception ex) { var x = ex.Message; throw; } //filter sl - remove old records //sl.RemoveAll(x => rowex.Any(r => r.AspNetUser_Id.Contains(x.AspNetUser_Id) // && x.@event == r.@event // && x.message == r.message // && x.phonenumber.Trim() == r.phonenumber.Trim() // )); //Harrcroft Acres. Warning Temperature stays over 40.5C for 6 hours. Cow 724 Dec 29 2020 12:28AM foreach (var item in sl) { string msgCow = item.message.Substring(0, item.message.Length - 19); var xel = rowex.Find(x => x.AspNetUser_Id.Contains(item.AspNetUser_Id) && x.@event == item.@event && x.phonenumber.Trim() == item.phonenumber.Trim() && x.message.Contains(msgCow) && x.status.Contains("delivered") ); if (xel == null) { sl_result.Add(item); } } return(sl_result); }
//database managment----------------------------------------------------- private List <SMS_GetZ_AlertLogsByDate_Result> AlertsList() { List <SMS_GetZ_AlertLogsByDate_Result> results = new List <SMS_GetZ_AlertLogsByDate_Result>(); DateTime?dt = GetTorontoLocalDateTime(); try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { results = context.SMS_GetZ_AlertLogsByDate(dt.Value).ToList(); } } catch (Exception) { throw; } return(results); }
//FeedBack response after sending------------------------------------------ public void FB_ResponseHandler(FeedBackResponse fbr) { //1. get messages list from FeedBack Responce List <messages> sms_fbr = new List <messages>(); sms_fbr = fbr.messages; //sms_fbr.AddRange(fbr.messages); //2. Update records in database List <SmsLog> slxx = new List <SmsLog>(); try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { slxx = context.SmsLogs.Where(x => x.status == "prepared to sending" && x.smscId == "0").ToList(); //Update status and smscid from FeedBack Response; foreach (var item in slxx) { int client_Id = (sms_fbr.Count > 1) ? sms_fbr.Where(x => x.clientId == item.id).SingleOrDefault().clientId : sms_fbr[0].clientId; if (item.id == client_Id) { item.status = (sms_fbr.Count > 1) ? sms_fbr.Where(x => x.clientId == item.id).SingleOrDefault().status : sms_fbr[0].status; item.smscId = (sms_fbr.Count > 1) ? sms_fbr.Where(x => x.clientId == item.id).SingleOrDefault().smscId : sms_fbr[0].smscId; } } foreach (var item in slxx) { if (item.smscId.Trim() == "0") { item.status = slxx.Where(x => x.phonenumber == item.phonenumber && x.smscId.Trim() != "0").SingleOrDefault().status; item.smscId = slxx.Where(x => x.phonenumber == item.phonenumber && x.smscId.Trim() != "0").SingleOrDefault().smscId.ToString(); } } //context.SmsLogs.AddRange(sl); context.SaveChanges(); } } catch (Exception ex) { string x = ex.Message; } }
public bool WriteRecord(Log item) { bool result = false; try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { item.datestamp = GetTorontoLocalDateTime();// DateTime.Now; context.Logs.Add(item); // executes the commands to implement the changes to the database context.SaveChanges(); result = true; } } catch (Exception ex) { SendEmail("*****@*****.**", "*****@*****.**", ex.Message + ex.InnerException.Message, "LogWriter"); } return(result); }
private static List <SmsLog> SaveSMSinDatabase(List <SmsLog> alerts_ruled) { List <SmsLog> sl = new List <SmsLog>(); foreach (var item in alerts_ruled) { SmsLog slitem = new SmsLog(); slitem.@event = item.@event; slitem.message = item.message; slitem.phonenumber = item.phonenumber; slitem.status = "prepared to sending"; slitem.datemark = item.datemark; slitem.smscId = "0"; slitem.AspNetUser_Id = item.AspNetUser_Id; sl.Add(slitem); slitem = null; } //update database try { using (DB_A4A060_csEntities context = new DB_A4A060_csEntities()) { context.SmsLogs.AddRange(sl); context.SaveChanges(); int rowsnumber = sl.Count; sl.Clear(); sl = context.SmsLogs.OrderByDescending(x => x.id).Where(x => x.status == "prepared to sending" && x.smscId == "0").Take(rowsnumber).ToList(); } } catch (Exception ex) { var x = ex.Message; sl = null; } return(sl); }