public ActionResult Index(HttpPostedFileBase postedFile) { string filePath = string.Empty; if (postedFile != null) { string path = Server.MapPath("~/Uploads/"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } filePath = path + Path.GetFileName(postedFile.FileName); string extension = Path.GetExtension(postedFile.FileName); postedFile.SaveAs(filePath); //Create a DataTable. DataTable dt = new DataTable(); dt = ConvertCSVtoDataTable(filePath, true); DevinTwilioEntities db = new DevinTwilioEntities(); try { for (int i = 0; i < dt.Rows.Count; i++) { int?TriggerTypeID = null; int?TriggerEventID = null; int?TriggerID = null; int?MMDomainID = null; int?MMSubDomainID = null; string TriggerType = Convert.ToString(dt.Rows[i]["Trigger Type"]); if (!string.IsNullOrEmpty(TriggerType)) { var TriggerTypeDetail = db.TriggerTypes.Where(m => m.TriggerType_Type == TriggerType).FirstOrDefault(); if (TriggerTypeDetail != null) { TriggerTypeID = TriggerTypeDetail.TriggerType_ID; } } string TriggerEventDay = Convert.ToString(dt.Rows[i]["Trigger Event"]); if (!string.IsNullOrEmpty(TriggerEventDay) && TriggerTypeID != null && TriggerTypeID > 0) { var TriggerEventDetails = db.TriggerEvents.Where(c => c.TriggerEvent_Day == TriggerEventDay && c.TriggerTypeId == TriggerTypeID).FirstOrDefault(); if (TriggerEventDetails != null) { TriggerEventID = TriggerEventDetails.TriggerEvent_ID; } } //string Trigger = Convert.ToString(dt.Rows[i]["Trigger"]); //if (!string.IsNullOrEmpty(Trigger)) //{ // var TriggersDetails = db.Triggers.Where(c => c.Trigger_Trigger == Trigger).FirstOrDefault(); // if (TriggersDetails != null) // { // TriggerID = TriggersDetails.Trigger_ID; // } //} string MMDomain = Convert.ToString(dt.Rows[i]["MM Domain"]); if (!string.IsNullOrEmpty(MMDomain)) { MMDomainID = db.MMDomains.Where(c => c.MMDomain_Name == MMDomain).FirstOrDefault().MMDomain_ID; } string MMSubDomain = Convert.ToString(dt.Rows[i]["MM Sub-Domain"]); if (!string.IsNullOrEmpty(MMSubDomain)) { MMSubDomainID = db.MMSubDomains.Where(c => c.MMSubDomain_Name == MMSubDomain).FirstOrDefault().MMSubDomain_ID; } ScheduleMessage schMessage = new ScheduleMessage(); schMessage.ScheduleMessage_Message = Convert.ToString(dt.Rows[i]["Messages"]); string appointmentScheduleDay = Convert.ToString(dt.Rows[i]["Appointment Schedule Day"]); int appoinmentDay = 0; if (appointmentScheduleDay != "") { double num; if (double.TryParse(appointmentScheduleDay, out num)) { appoinmentDay = Convert.ToInt32(appointmentScheduleDay); schMessage.Appointment_Schedule = appoinmentDay; } } if (dt.Rows[i]["ID"] != null) { schMessage.Display_MessageId = Convert.ToInt32(dt.Rows[i]["ID"]); } schMessage.ScheduleMessage_TriggerTypeID = TriggerTypeID; schMessage.ScheduleMessage_TriggerEventID = TriggerEventID; // schMessage.ScheduleMessage_TriggerID = TriggerID; schMessage.ScheduleMessage_Time = Convert.ToString(dt.Rows[i]["Time"]); // schMessage.ScheduleMessage_FrequencyOfDelivery = Convert.ToString(dt.Rows[i]["Frequency of delivery"]); schMessage.ScheduleMessage_If1 = Convert.ToString(dt.Rows[i]["If 1"]); schMessage.ScheduleMessage_If2 = Convert.ToString(dt.Rows[i]["If 2"]); // schMessage.ScheduleMessage_OtherNotes = Convert.ToString(dt.Rows[i]["Other Notes"]); schMessage.ScheduleMessage_TimesSent = Convert.ToString(dt.Rows[i]["Times Sent"]); schMessage.ScheduleMessage_MMDomainID = MMDomainID; schMessage.ScheduleMessage_MMSubDomainID = MMSubDomainID; if (!string.IsNullOrEmpty(schMessage.ScheduleMessage_Message)) { db.ScheduleMessages.Add(schMessage); db.SaveChanges(); //var dbMessage = new ScheduleMessage(); //if (TriggerTypeID == (int)TriggerType_Enum.Enrollment) // dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == TriggerEventID && c.ScheduleMessage_TriggerTypeID == TriggerTypeID); //else if (TriggerTypeID == (int)TriggerType_Enum.Appointment) //{ // dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == TriggerEventID && c.ScheduleMessage_TriggerTypeID == TriggerTypeID && c.Appointment_Schedule == appoinmentDay); //} //else // dbMessage = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_Message == schMessage.ScheduleMessage_Message); //if (dbMessage == null || dbMessage.ScheduleMessage_ID == 0) //{ // db.ScheduleMessages.Add(schMessage); // db.SaveChanges(); //} } } TempData["successMessage"] = "Message has been added sucessfully."; } catch (Exception ex) { TempData["errorMessage"] = ex.Message; } } List <ScheduleViewModels> listScheduleMessages = GetAll(); return(View(listScheduleMessages)); }
public ActionResult MessageTree(UserViewModels model) { const string accountSid = "ACb61b5dc2ad53c6336667449e67302c48"; const string authToken = "b1dfd0ebd09b0bd2d840f07618b33a27"; TwilioClient.Init(accountSid, authToken); using (DevinTwilioEntities dc = new DevinTwilioEntities()) { var users = dc.Users.Where(c => c.EnrollmentDate != null).ToList(); var list = (from schMessage in dc.ScheduleMessages join trgEvent in dc.TriggerEvents on schMessage.ScheduleMessage_TriggerEventID equals trgEvent.TriggerEvent_ID select new ScheduleViewModels { Message = schMessage.ScheduleMessage_Message, TriggerEventName = trgEvent.TriggerEvent_Event, ScheduleMessageID = schMessage.ScheduleMessage_ID }).ToList(); try { foreach (var item in users) { var to = new PhoneNumber(item.MobileNumber.ToString()); var from = new PhoneNumber("+16467591379"); var EnrollmentDate = item.EnrollmentDate; if (EnrollmentDate != null) { DateTime?currentDate = DateTime.Now; TimeSpan t = (TimeSpan)(currentDate - EnrollmentDate); int totalDays = t.Days; if (totalDays >= 0 && totalDays <= 50) { string Sid = String.Empty; var messageDetails = list.FirstOrDefault(c => c.TriggerEventName.ToLower() == "day " + totalDays); if (messageDetails != null) { var message0 = MessageResource.Create(to: to, from: from, body: messageDetails.Message); Sid = Convert.ToString(message0.Sid); if (!string.IsNullOrEmpty(Sid)) { SmsReply _smsReply = new SmsReply(); _smsReply.From = Convert.ToString(from); _smsReply.To = Convert.ToString(to); _smsReply.Sid = Convert.ToString(Sid); _smsReply.ParentSid = null; _smsReply.MessageId = messageDetails.ScheduleMessageID; _smsReply.UserId = item.User_ID; dc.SmsReplies.Add(_smsReply); dc.SaveChanges(); } } else { } } } } } catch (Exception ex) { } } // var call = CallResource.Create(to,from,url: new Uri("http://devintwilio.kindlebit.com/home/SMSReply")); using (DevinTwilioEntities dc = new DevinTwilioEntities()) { var data = (from u in dc.SmsReplies select new SMSReplyViewModels { MessageId = (int)u.MessageId, Message = dc.ScheduleMessages.Where(x => x.ScheduleMessage_ID == u.MessageId).Select(x => x.ScheduleMessage_Message).FirstOrDefault(), From = u.From, To = u.To, UserName = dc.Users.Where(x => x.User_ID == u.UserId).Select(x => x.User_Name).FirstOrDefault(), MessageResponse = u.MessageResponse, SmsStatus = u.SmsStatus }).ToList(); return(View(data)); } }
public ActionResult SMSReply() { const string accountSid = "ACb61b5dc2ad53c6336667449e67302c48"; const string authToken = "b1dfd0ebd09b0bd2d840f07618b33a27"; TwilioClient.Init(accountSid, authToken); string messageToBeSentIf1 = ""; string messageToBeSentIf2 = ""; var filename = Server.MapPath("~/LogTextFile/logErrors.txt"); var sw = new System.IO.StreamWriter(filename, true); try { // get the body of the message // get the no where we are getting the reply, then forward the message againwith that no using (DevinTwilioEntities dc = new DevinTwilioEntities()) { sw.WriteLine("Inside SMS Reply function at " + DateTime.Now.ToString()); var _toNumber = Request["From"]; sw.WriteLine("From = " + _toNumber); var _body = Request["Body"]; sw.WriteLine("_body = " + _body); var _fromNumber = Request["To"]; sw.WriteLine("To = " + _fromNumber); var MessagesSid = Request["MessageSid"]; // var message = MessageResource.Fetch(MessagesSid); // message.sm var SmsSid = Request["SmsSid"]; var MessagingServiceSid = Request["MessagingServiceSid"]; sw.WriteLine("MessagesSid = " + MessagesSid); sw.WriteLine("SmsSid = " + SmsSid); sw.WriteLine("MessagingServiceSid = " + MessagingServiceSid); //sw.WriteLine("Sid = " + message.Sid); sw.WriteLine("Outside main code at _toNumber = " + _toNumber + "_body = " + _body + "_fromNumber = " + _fromNumber + "MessagesSid = " + MessagesSid); //var _toNumber = Request["From"]; //var _body = Request["Body"]; //var _fromNumber = Request["To"]; //var MessagesSid = Request["MessageSid"]; // Request["SmsStatus"] // _toNumber = "+917986501164"; // _fromNumber = "+16467591379"; // string toNumber = Request["From"]; // new PhoneNumber("+917986501164"); // string fromNumber = Request["To"]; // new PhoneNumber("+16467591379"); // Get the record specific to phone number (From and To) and messageSId SMS response and status //var dbResult = new SmsReply(); //if (!string.IsNullOrEmpty(SmsSid)) // dbResult = dc.SmsReplies.OrderByDescending(x => x.Id).Where(x => x.Sid == SmsSid && x.From == _fromNumber && x.To == _toNumber).FirstOrDefault(); //if(dbResult!=null && dbResult.Id==0) var dbResult = dc.SmsReplies.OrderByDescending(x => x.Id).Where(x => x.From == _fromNumber && x.To == _toNumber).FirstOrDefault(); if (dbResult != null) { int?msgId = dbResult.MessageId; sw.WriteLine("Inside dbResult at " + DateTime.Now.ToString()); var scheduledMessage = dc.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_ID == msgId); dbResult.SmsStatus = Request["SmsStatus"]; if ((_body == "1" || _body == "\"1\"")) { dbResult.MessageResponse = scheduledMessage.ScheduleMessage_If1; messageToBeSentIf1 = scheduledMessage.ScheduleMessage_If1; } else if ((_body == "2" || _body == "\"2\"")) { dbResult.MessageResponse = scheduledMessage.ScheduleMessage_If2; messageToBeSentIf2 = scheduledMessage.ScheduleMessage_If2; } dbResult.ResponseDate = DateTime.Now; dbResult.MessageResponse = _body; sw.WriteLine("dbResult MessageResponse " + dbResult.MessageResponse); dc.SaveChanges(); } //var data = (from i in dc.SmsReplies // join k in dc.ScheduleMessages on i.MessageId equals k.ScheduleMessage_ID // where i.From == _fromNumber && i.To == _toNumber // orderby i.Id descending // select new SMSViewModels // { // MessageID = (int)i.MessageId, // Message = k.ScheduleMessage_Message, // If1 = k.ScheduleMessage_If1, // If2 = k.ScheduleMessage_If2 // }).ToList().FirstOrDefault(); //if (data != null) //{ // if (!string.IsNullOrEmpty(data.If1)) // { // messageToBeSentIf1 = data.If1; // } // if (!string.IsNullOrEmpty(data.If2)) // { // messageToBeSentIf2 = data.If2; // } //} sw.WriteLine("messageToBeSentIf1 " + messageToBeSentIf1); sw.WriteLine("messageToBeSentIf2 " + messageToBeSentIf2); if (string.IsNullOrEmpty(messageToBeSentIf1)) { messageToBeSentIf1 = "Invalid request"; } if (string.IsNullOrEmpty(messageToBeSentIf2)) { messageToBeSentIf2 = "Invalid request"; } if (!string.IsNullOrEmpty(_body)) { if ((_body == "1" || _body == "\"1\"") && !string.IsNullOrEmpty(messageToBeSentIf1)) { sw.WriteLine("Inside Request Body 1 Block response (Before Creating Message) " + " at " + DateTime.Now.ToString()); //sw.WriteLine("to = " + _fromNumber + "From = " + _toNumber + "body = " + messageToBeSentIf1 + "at " + DateTime.Now.ToString()); sw.WriteLine("to = " + _toNumber + "From = " + _fromNumber + "body = " + messageToBeSentIf1 + "at " + DateTime.Now.ToString()); MessageResource.Create(to: _toNumber, from: _fromNumber, body: messageToBeSentIf1); // MessageResource.Create(to: _fromNumber, from: _toNumber, body: messageToBeSentIf1); sw.WriteLine("Inside Request Body 1 Block response (After Creating Message) " + " at " + DateTime.Now.ToString()); } else if ((_body == "2" || _body == "\"2\"") && !string.IsNullOrEmpty(messageToBeSentIf2)) { sw.WriteLine("Inside Request Body 2 Block response (Before Creating Message) " + " at " + DateTime.Now.ToString()); // sw.WriteLine("to = "+ _fromNumber +"From = "+ _toNumber + "body = "+ messageToBeSentIf2 + "at " + DateTime.Now.ToString()); sw.WriteLine("to = " + _toNumber + "From = " + _fromNumber + "body = " + messageToBeSentIf2 + "at " + DateTime.Now.ToString()); MessageResource.Create(to: _toNumber, from: _fromNumber, body: messageToBeSentIf2); // MessageResource.Create(to: _fromNumber, from: _toNumber, body: messageToBeSentIf2); sw.WriteLine("Inside Request Body 2 Block response (After Creating Message) " + " at " + DateTime.Now.ToString()); } } } } catch (Exception ex) { sw.WriteLine("Exception" + ex.Message + "at " + DateTime.Now.ToString()); WriteXmltoResponseString("Exception: " + ex.Message, new string[1] { GetRedirectUrl(Request.Url.ToString()) }); } finally { sw.Dispose(); sw.Close(); } return(View()); }
public ActionResult Create(ScheduleViewModels model) { if (model.TriggerTypeId == 4) { if (model.Day == null) { TempData["errorMessage"] = "Day field is required for Appointment type"; BindDropDowns(); ViewBag.eventId = model.TriggerTypeId; return(View()); } } if (ModelState.IsValid) { // Save the data in the Schedule Message try { DevinTwilioEntities db = new DevinTwilioEntities(); var dbResult = new ScheduleMessage(); //** This code is commented out to add multiple messages for same event type, event and for same day **// //if (model.TriggerTypeId == (int)TriggerType_Enum.Response) // dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_Message == model.Message); //else if (model.TriggerTypeId == (int)TriggerType_Enum.Appointment) //{ // dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == model.TriggerEventId && c.ScheduleMessage_TriggerTypeID == model.TriggerTypeId && c.Appointment_Schedule == model.Day); // } //else // dbResult = db.ScheduleMessages.FirstOrDefault(c => c.ScheduleMessage_TriggerEventID == model.TriggerEventId && c.ScheduleMessage_TriggerTypeID == model.TriggerTypeId); //if (dbResult != null) //{ // TempData["errorMessage"] = "Message already exist for selected trigger types and events."; // BindDropDowns(); // ViewBag.eventId = model.TriggerTypeId; // return View(); //} // TODO 1 - we have to remove this code and assign mmdomainid and mmsubdomainid directly from model var domainId = 0; var subDomainId = 0; if (model.MMDomainName != "") { var mmDomain = db.MMDomains.FirstOrDefault(c => c.MMDomain_Name == model.MMDomainName); if (mmDomain != null) { domainId = mmDomain.MMDomain_ID; } } if (model.MMSubDomainName != "") { var mmSubDomain = db.MMSubDomains.FirstOrDefault(c => c.MMSubDomain_Name == model.MMSubDomainName); if (mmSubDomain != null) { subDomainId = mmSubDomain.MMSubDomain_ID; } } ScheduleMessage objScheduleMessage = new ScheduleMessage(); objScheduleMessage.ScheduleMessage_Message = model.Message; objScheduleMessage.ScheduleMessage_TriggerTypeID = model.TriggerTypeId; objScheduleMessage.ScheduleMessage_TriggerEventID = model.TriggerEventId; objScheduleMessage.ScheduleMessage_TriggerID = model.TriggerId; objScheduleMessage.ScheduleMessage_Time = model.Time; objScheduleMessage.ScheduleMessage_If1 = model.If1; objScheduleMessage.ScheduleMessage_If2 = model.If2; objScheduleMessage.ScheduleMessage_OtherNotes = model.OtherNotes; objScheduleMessage.ScheduleMessage_MMDomainID = domainId; objScheduleMessage.ScheduleMessage_MMSubDomainID = subDomainId; objScheduleMessage.Appointment_Schedule = model.Day; db.ScheduleMessages.Add(objScheduleMessage); db.SaveChanges(); TempData["successMessage"] = "Message has been added sucessfully."; return(RedirectToAction("Index", "Home")); } catch (Exception ex) { TempData["errorMessage"] = ex.Message; } } BindDropDowns(); return(View()); }
public void SendAppointmentMessage() { try { // Library.WriteErrorLog("Inside Send Appointment Messages"); DevinTwilioEntities _context = new DevinTwilioEntities(); TwilioClient.Init(accountSid, authToken); var list = (from appoint in _context.Appointments join user in _context.Users on appoint.Appointment_PatientID equals user.User_ID join msg in _context.ScheduleMessages on appoint.Appointment_Trigger_EventId equals msg.ScheduleMessage_TriggerEventID join trgEventt in _context.TriggerEvents on appoint.Appointment_Trigger_EventId equals trgEventt.TriggerEvent_ID // join trigg in _context.Triggers on msg.ScheduleMessage_TriggerID equals trigg.Trigger_ID // join triggtype in _context.TriggerTypes on msg.ScheduleMessage_TriggerTypeID equals triggtype.TriggerType_ID select new MessageFrequencyModel { MessageId = msg.ScheduleMessage_ID, Message = msg.ScheduleMessage_Message, UserId = user.User_ID, UserName = user.User_Name, MobileNum = user.MobileNumber, // Trigger = trigg.Trigger_Trigger, // TriggerId = (int)msg.ScheduleMessage_TriggerID, TriggerEventId = trgEventt.TriggerEvent_ID, // TriggerType = triggtype.TriggerType_Type, AppointmentDate = appoint.Appointment_StartTime, MobileNumber = user.MobileNumber, // AppoinmentType = trgEventTypes.TriggerEvent_Event, TriggerEventDay = trgEventt.TriggerEvent_Day, Time = msg.ScheduleMessage_Time, AppointmentId = appoint.Appointment_ID, StatusId = user.StatusId, Day = msg.Appointment_Schedule, Appointment_Trigger_EventId = appoint.Appointment_Trigger_EventId ?? 0 }).Distinct().ToList(); var distnctMessageList = new List <MessageFrequencyModel>(); foreach (var item in list) { if (distnctMessageList.FirstOrDefault(c => c.AppointmentId == item.AppointmentId) == null) { distnctMessageList.Add(item); } } foreach (var item in distnctMessageList) { if (item.Day != null) { if (item.StatusId == 1 || item.StatusId == 3) // for active or pause { var to = new PhoneNumber(item.MobileNumber.ToString()); // Library.WriteErrorLog("Appointment to " + to); var from = new PhoneNumber("+16467591379"); // Library.WriteErrorLog("Appointment from " + from); if ((item.AppointmentDate != null) && (!string.IsNullOrEmpty(item.TriggerEventDay))) { DateTime currentAppointmentDate = Convert.ToDateTime(item.AppointmentDate); // Library.WriteErrorLog("currentAppointmentDate " + currentAppointmentDate); DateTime currentDate = DateTime.Now; // Library.WriteErrorLog("currentDate " + currentDate); // int dayDiff = Convert.ToInt32((currentAppointmentDate - currentDate).TotalDays); var finalAppoinmentDate = item.AppointmentDate.Value.AddDays(item.Day.Value); // var calculatedTime = currentDate.ToString("hh:mm:ss tt"); // 7:00 AM // 12 hour clock var calculatedTime = currentDate.ToString("htt"); var msgToBeSend = item.Message; var timeAfterRemovingSpace = ""; if (!string.IsNullOrEmpty(item.Time)) { timeAfterRemovingSpace = item.Time.Trim().Replace(" ", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":00", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":30", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.TrimStart('0'); } var setTime = item.Time == null ? "9am" : timeAfterRemovingSpace; // Library.WriteErrorLog("appoinment date after adding number:" + finalAppoinmentDate); // Library.WriteErrorLog("calculatedTime:" + calculatedTime); // Library.WriteErrorLog("setTime:" + setTime); try { if (currentDate.Date == finalAppoinmentDate.Date) { if (calculatedTime.ToLower() == setTime.ToLower()) { // Library.WriteErrorLog("Inside Condition"); // Appointcondition wll be for 1 day and 7 day before var eventMessages = new List <ScheduleMessage>(); eventMessages = _context.ScheduleMessages.Where(p => p.ScheduleMessage_TriggerEventID == item.Appointment_Trigger_EventId && p.Appointment_Schedule == item.Day.Value).ToList(); foreach (var em in eventMessages) { var userStatusDetails = _context.UserEnrollments.FirstOrDefault(c => c.UserId == item.UserId && c.TriggerEventId == em.ScheduleMessage_TriggerEventID); if (userStatusDetails == null) { string Sid = String.Empty; var message0 = MessageResource.Create(to: to, from: from, body: msgToBeSend); Sid = Convert.ToString(message0.Sid); // Library.WriteErrorLog("Message Sid " + Sid); if (!string.IsNullOrEmpty(Sid)) { SmsReply _smsReply = new SmsReply(); _smsReply.From = Convert.ToString(from); _smsReply.To = Convert.ToString(to); _smsReply.Sid = Convert.ToString(Sid); _smsReply.ParentSid = null; _smsReply.MessageId = item.MessageId; _smsReply.UserId = item.UserId; _smsReply.SentDate = DateTime.Now; _context.SmsReplies.Add(_smsReply); _context.SaveChanges(); // Library.WriteErrorLog("Appoinment Message saved in the SMSReply table"); } } // Library.WriteErrorLog("Successfully send message for appointment"); } } } } catch (Exception ex) { // Library.WriteErrorLog("Appointment : " + ex.Message); } } } } } } catch (Exception ex) { // Library.WriteErrorLog(ex.Message); } }
public void SendScheduledMessage() { try { // Library.WriteErrorLog("Inside Send Scheduled Messages"); TwilioClient.Init(accountSid, authToken); var message = MessageResource.Fetch("SM3fee5df463044d6e1f9edeaab0507327"); using (DevinTwilioEntities dc = new DevinTwilioEntities()) { // var statusList = dc.UserStatus.ToList(); var users = dc.Users.Where(c => c.EnrollmentDate != null).ToList(); // var userEnrollmentList = dc.UserEnrollments.ToList(); //if(users.id) //{ //} var list = (from schMessage in dc.ScheduleMessages join trgEvent in dc.TriggerEvents.Where(c => c.TriggerTypeId == 5) on schMessage.ScheduleMessage_TriggerEventID equals trgEvent.TriggerEvent_ID select new ScheduleViewModels { Message = schMessage.ScheduleMessage_Message, // TriggerEventName = trgEvent.TriggerEvent_Event, TriggerEventDay = trgEvent.TriggerEvent_Day, TriggerEventId = trgEvent.TriggerEvent_ID, ScheduleMessageID = schMessage.ScheduleMessage_ID, Time = schMessage.ScheduleMessage_Time }).ToList(); try { foreach (var item in users) { if (item.StatusId == 1) // 1- Active { // Library.WriteErrorLog("Inside Patient loop"); var to = new PhoneNumber(item.MobileNumber.ToString()); // Library.WriteErrorLog("To Number: " + to); var from = new PhoneNumber("+16467591379"); // Library.WriteErrorLog("From Number: " + from); var EnrollmentDate = item.EnrollmentDate; // Library.WriteErrorLog("EnrollmentDate: " + EnrollmentDate); if (EnrollmentDate != null) { DateTime currentDate = DateTime.Now; // Library.WriteErrorLog("Current Date: " + currentDate); DateTime currentEnrollmentDate = Convert.ToDateTime(item.EnrollmentDate); // Library.WriteErrorLog("Current EnrollmentDate: " + currentEnrollmentDate); int totalDays = Convert.ToInt32((currentDate - currentEnrollmentDate).TotalDays); // Library.WriteErrorLog(" scheduled days: " + totalDays); //if (totalDays >= 0 && totalDays <= 50) //{ // Library.WriteErrorLog("Inside total days comparison"); string Sid = String.Empty; // var messageDetails = list.FirstOrDefault(c => c.TriggerEventName.ToLower() == "day " + totalDays); //var messageDetails = list.FirstOrDefault(c => c.TriggerEventDay == totalDays.ToString()); var messageList = list.Where(c => c.TriggerEventDay == totalDays.ToString()); if (messageList.Count() > 0) { foreach (var msg in messageList) { var userStatusDetails = dc.UserEnrollments.FirstOrDefault(c => c.UserId == item.User_ID && c.TriggerEventId == msg.TriggerEventId); if (userStatusDetails == null) { var calculatedTime = DateTime.Now.ToString("htt"); var timeAfterRemovingSpace = ""; if (!string.IsNullOrEmpty(msg.Time)) { timeAfterRemovingSpace = msg.Time.Trim().Replace(" ", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":00", ""); timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":30", ""); //string no_start_zeros = s.TrimStart('0'); timeAfterRemovingSpace = timeAfterRemovingSpace.TrimStart('0'); } var setTime = msg.Time == null ? "9am" : timeAfterRemovingSpace; if (calculatedTime.ToLower() == setTime.ToLower()) { var message0 = MessageResource.Create(to: to, from: from, body: msg.Message); Sid = Convert.ToString(message0.Sid); // Library.WriteErrorLog("Schedule Message Sid " + Sid); if (!string.IsNullOrEmpty(Sid)) { SmsReply _smsReply = new SmsReply(); _smsReply.From = Convert.ToString(from); _smsReply.To = Convert.ToString(to); _smsReply.Sid = Convert.ToString(Sid); _smsReply.ParentSid = null; _smsReply.MessageId = msg.ScheduleMessageID; _smsReply.UserId = item.User_ID; _smsReply.SentDate = DateTime.Now; dc.SmsReplies.Add(_smsReply); dc.SaveChanges(); // Library.WriteErrorLog("Schedule Message saved in the SMSReply table"); } //Library.WriteErrorLog("Successfully send message for scheduled"); } } else { //Library.WriteErrorLog("Already user send, skip or pause for days: " + totalDays); } } } //if admin alredy skip, send adn pause message for this this user //var userStatusDetails = userEnrollmentList.FirstOrDefault(c => c.UserId == item.User_ID && c.TriggerEventId == messageDetails.TriggerEventId); //if (userStatusDetails == null) //{ // if (messageDetails != null) // { // // check the time // var calculatedTime = DateTime.Now.ToString("htt"); // var timeAfterRemovingSpace = ""; // if (!string.IsNullOrEmpty(messageDetails.Time)) // { // timeAfterRemovingSpace = messageDetails.Time.Trim().Replace(" ", ""); // timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":00", ""); // timeAfterRemovingSpace = timeAfterRemovingSpace.Replace(":30", ""); // //string no_start_zeros = s.TrimStart('0'); // timeAfterRemovingSpace = timeAfterRemovingSpace.TrimStart('0'); // } // var setTime = messageDetails.Time == null ? "9am" : timeAfterRemovingSpace; // if (calculatedTime.ToLower() == setTime.ToLower()) // { // var message0 = MessageResource.Create(to: to, from: from, body: messageDetails.Message); // Sid = Convert.ToString(message0.Sid); // Library.WriteErrorLog("Schedule Message Sid " + Sid); // if (!string.IsNullOrEmpty(Sid)) // { // SmsReply _smsReply = new SmsReply(); // _smsReply.From = Convert.ToString(from); // _smsReply.To = Convert.ToString(to); // _smsReply.Sid = Convert.ToString(Sid); // _smsReply.ParentSid = null; // _smsReply.MessageId = messageDetails.ScheduleMessageID; // _smsReply.UserId = item.User_ID; // _smsReply.SentDate = DateTime.Now; // dc.SmsReplies.Add(_smsReply); // dc.SaveChanges(); // Library.WriteErrorLog("Schedule Message saved in the SMSReply table"); // } // Library.WriteErrorLog("Successfully send message for scheduled"); // } // } // else // { // } //} //else //{ // Library.WriteErrorLog("Already user send, skip or pause for days: " + totalDays); //} } } } } catch (Exception ex) { // Library.WriteErrorLog("Scheduled : " + ex.Message); } } } catch (Exception ex) { // Library.WriteErrorLog(ex.Message); } }
public void AddUserEnrollment(int userId, int enrollmentId, string action) { UserEnrollment enrollment = new UserEnrollment(); enrollment.UserId = userId; enrollment.UserEnrollmentId = enrollmentId; enrollment.Status = action; _context.UserEnrollments.Add(enrollment); _context.SaveChanges(); }