Exemplo n.º 1
0
 public void SendMessage(Reminder reminder)
 {
     reminder._mobileNumber = FormatNumber(reminder._mobileNumber);
     var client = new TwilioRestClient(AccountSid, AuthToken);
     var smsMessage = client.SendSmsMessage(From, reminder._mobileNumber, reminder._message);
     LogTextResponse(smsMessage, reminder);
 }
Exemplo n.º 2
0
        public void CalculateNextReminderDate(Reminder reminder)
        {
            if (reminder._schedule != null)
            {
                if (reminder._schedule.ToLower().Equals("daily"))
                {
                    reminder._nextScheduledReminder = reminder._nextScheduledReminder.AddDays(1);
                }
                else if (reminder._schedule.ToLower().Equals("weekly"))
                {
                    reminder._nextScheduledReminder = reminder._nextScheduledReminder.AddDays(7);
                }
                else if (reminder._schedule.ToLower().Equals("custom"))
                {
                    reminder._nextScheduledReminder = reminder._nextScheduledReminder.AddDays(1);
                    while (reminder._schedule.IndexOf(reminder._nextScheduledReminder.DayOfWeek.ToString()) == -1)
                    {
                        reminder._nextScheduledReminder = reminder._nextScheduledReminder.AddDays(1);
                    }
                }
            }

            if (reminder._schedule == null || reminder._endReminderDate == null || reminder._nextScheduledReminder > reminder._endReminderDate)
            {
                DeleteReminder(reminder);
            }
            else
            {
                SaveReminder(reminder);
            }
        }
Exemplo n.º 3
0
 public void CanDeleteObjectFromDatabase()
 {
     Reminder testReminder = new Reminder("deleteTestNumber", "test message", DateTime.SpecifyKind(DateTime.Now.Date, DateTimeKind.Utc), "daily", null, DateTime.Now.AddDays(20), "appointment");
     _databaseAccess.InsertReminder(testReminder);
     var query = Query.EQ("_mobileNumber", "deleteTestNumber");
     _databaseAccess.DeleteReminder(testReminder);
     List<Reminder> reminders = _databaseAccess.GetRemindersForMobileNumber("deleteTestNumber");
     Assert.AreEqual(0, reminders.Count());
 }
Exemplo n.º 4
0
 public void CanDeleteObjectFromDatabase()
 {
     Reminder testReminder = new Reminder("deleteTestNumber", "test message", DateTime.SpecifyKind(DateTime.Now.Date, DateTimeKind.Utc), "daily", null, DateTime.Now.AddDays(20), "appointment");
     testReminder.InsertToDb();
     MongoCollection<Reminder> reminderCollection = MongoAccess.GetReminderCollection();
     var query = Query.EQ("_mobileNumber", "deleteTestNumber");
     testReminder.DeleteFromDb();
     MongoCursor<Reminder> reminderCursor = reminderCollection.Find(query);
     Assert.AreEqual(0, reminderCursor.Count());
 }
Exemplo n.º 5
0
 public void CanAddWeekToSchedule()
 {
     DateTime originalDateTime = DateTime.Now;
     Reminder testReminder = new Reminder(_testMobileNumber, "test message", originalDateTime, "weekly", null, originalDateTime, "appointment");
     testReminder.InsertToDb();
     MongoCollection<Reminder> reminderCollection = MongoAccess.GetReminderCollection();
     Reminders.CalculateNextReminderDate(testReminder);
     Assert.AreEqual(originalDateTime.AddDays(7), testReminder._nextScheduledReminder);
     MongoAccess.DeleteReminderCollection();
 }
Exemplo n.º 6
0
        public void message_longer_than_160_chars_fails()
        {
            var target = new TextService();

            var longMessage = @"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";

            var testerOneReminder = new Reminder(testNumberOne, longMessage, DateTime.Now, "daily", null,
                                        DateTime.Now.AddDays(1), "appointment");

            target.SendMessage(testerOneReminder);
        }
Exemplo n.º 7
0
        public void simple_message_sends_and_reminder_logged()
        {
            var target = new TextService();

            var reminder = new Reminder(testNumberOne, "Simple Message Test", DateTime.Now, "daily", null,
                                        DateTime.Now.AddDays(1), "appointment");

            var splits = Guid.NewGuid().ToString().Split('-');
            reminder._id = new ObjectId(string.Join("", splits).Substring(0, 24));

            target.SendMessage(reminder);
            var cursor = MongoAccess.GetReminderLogCollection().Find(Query.EQ("_originalId", reminder._id));
            Assert.AreEqual(1, cursor.Count());
        }
Exemplo n.º 8
0
        public void send_multiple_messages_successfully()
        {
            var textService = new TextService();

            var testerOneReminder = new Reminder(testNumberOne, "testerOne Multiple Message Test", DateTime.Now, "daily", null,
                                        DateTime.Now.AddDays(1), "appointment");

            var testerTwoReminder = new Reminder(testNumberTwo, "testerTwo Multiple Message Test", DateTime.Now, "daily", null,
                                        DateTime.Now.AddDays(1), "appointment");

            var patients = new[] {testerOneReminder, testerTwoReminder};

            foreach (var reminder in patients)
            {
                textService.SendMessage(reminder);
            }
        }
Exemplo n.º 9
0
        public JsonResult Appointment(Appointment appointment)
        {
            var response = new Response { Success = true };

            try
            {
                var reminderDate = ParseDate(appointment.reminderDate);

                if (appointment.oneDayNotification)
                {
                    var reminder = new Reminder
                                       {
                                           _message = appointment.message,
                                           _mobileNumber = appointment.mobile,
                                           _nextScheduledReminder = reminderDate.AddDays(-1)
                                       };
                    reminder.SaveToDb();
                }

                if (appointment.oneWeekNotification)
                {
                    var reminder = new Reminder
                                       {
                                           _mobileNumber = appointment.mobile,
                                           _message = appointment.message,
                                           _nextScheduledReminder = reminderDate.AddDays(-7)
                                       };
                    reminder.SaveToDb();
                }
            }
            catch (Exception e)
            {
                response.Success = false;
                response.ErrorMessage = appointment.reminderDate + " " + e.Message;
            }

            return Json(response);
        }
Exemplo n.º 10
0
 public void DeleteReminder(Reminder reminder)
 {
     MongoCollection<Reminder> reminderCollection = GetReminderCollection();
     var query = Query.EQ("_id", reminder._id);
     reminderCollection.Remove(query);
 }
Exemplo n.º 11
0
 public void SaveReminder(Reminder reminder)
 {
     MongoCollection<Reminder> reminderCollection = GetReminderCollection();
     reminderCollection.Save(reminder);
 }
Exemplo n.º 12
0
 public string InsertReminder(Reminder reminder)
 {
     MongoCollection<Reminder> reminderCollection = GetReminderCollection();
     reminderCollection.Insert(reminder);
     return reminder._id.ToString();
 }
Exemplo n.º 13
0
 private void LogTextResponse(SMSMessage message, Reminder reminder)
 {
     var reminderLog = new ReminderLog(reminder._id, reminder._mobileNumber, reminder._message, reminder._nextScheduledReminder, message.Status, reminder._kind);
     reminderLog.InsertToDb();
 }
Exemplo n.º 14
0
        public JsonResult Medication(Medication medication)
        {
            var response = new Response { Success = true };

            try
            {
                var reminderStartDate = ParseDate(medication.reminderStartDate);
                var reminderEndDate = ParseDate(medication.reminderEndDate);

                var reminder = new Reminder
                                   {
                                       _nextScheduledReminder = reminderStartDate,
                                       _endReminderDate = reminderEndDate,
                                       _message = medication.message,
                                       _schedule = medication.schedule,
                                       _mobileNumber = medication.mobileNumber
                                   };

                reminder.SaveToDb();

            }
            catch (Exception e)
            {
                response.Success = false;
                response.ErrorMessage = e.Message;
            }

            return Json(response);
        }
Exemplo n.º 15
0
        public JsonResult Prescription(Prescription prescription)
        {
            var response = new Response { Success = true };

            try
            {
                var reminderDate = ParseDate(prescription.reminderDate);

                var reminder = new Reminder
                                   {
                                       _message = prescription.message,
                                       _mobileNumber = prescription.mobileNumber,
                                       _nextScheduledReminder = reminderDate
                                   };

                reminder.SaveToDb();
            }
            catch (Exception e)
            {

                response.Success = false;
                response.ErrorMessage = e.Message;
            }

            return Json(response);
        }
Exemplo n.º 16
0
 private void LogTextResponse(SMSMessage message, Reminder reminder)
 {
     var reminderLog = new ReminderLog(reminder._id.ToString(), reminder._mobileNumber, reminder._message, reminder._nextScheduledReminder, message.Status, reminder._kind);
 }