示例#1
0
        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));
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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());
        }
示例#4
0
        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());
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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();
        }