public void AppointmentsDb_AddAppointmentReminder_AddNewRecord()
        {
            var db = new AppointmentsDb();

            var appointmentReminder = new AppointmentReminder
                                          {
                                              EventId = "xyz",
                                              RemindersSent = true
                                          };
            AppointmentReminder newReminder = db.AppointmentReminders.Add(appointmentReminder);
            db.SaveChanges();

            AppointmentReminder retrievedReminder = db.AppointmentReminders.Find(newReminder.AppointmentReminderID);

            Assert.That(retrievedReminder, Is.Not.Null);
            Assert.That(retrievedReminder.EventId, Is.EqualTo(appointmentReminder.EventId));
            Assert.That(retrievedReminder.RemindersSent, Is.EqualTo(appointmentReminder.RemindersSent));
        }
        public void AddAttendeeReminder_AddsNewRecord()
        {
            using (var db = new AppointmentsDb())
            {

                string eventId = "woohoo123";

                var appointmentReminder = new AppointmentReminder
                                              {
                                                  EventId = eventId,
                                                  RemindersSent = true
                                              };

                var attendeeReminder = new AttendeeReminder
                                           {
                                               EventId = eventId,
                                               Attendee = "*****@*****.**",
                                               Mobile = "+44123456789",
                                               Status = "Confirmed",
                                               AppointmentReminder = appointmentReminder
                                           };

                AttendeeReminder newAttendeeReminder = db.AttendeeReminders.Add(attendeeReminder);
                db.SaveChanges();

                AttendeeReminder retrievedAttendee = db.AttendeeReminders.Find(newAttendeeReminder.AttendeeReminderID);

                Assert.That(retrievedAttendee, Is.Not.Null);
                Assert.That(retrievedAttendee.EventId, Is.EqualTo(attendeeReminder.EventId));
                Assert.That(retrievedAttendee.Attendee, Is.EqualTo(attendeeReminder.Attendee));
                Assert.That(retrievedAttendee.Mobile, Is.EqualTo(attendeeReminder.Mobile));
                Assert.That(retrievedAttendee.Status, Is.EqualTo(attendeeReminder.Status));
                Assert.That(retrievedAttendee.AppointmentReminder.EventId, Is.EqualTo(appointmentReminder.EventId));
                Assert.That(retrievedAttendee.AppointmentReminder.RemindersSent,
                            Is.EqualTo(appointmentReminder.RemindersSent));
            }
        }
        private int SendRemindersForAppointment(string eventId)
        {
            Appointment appointment = CalendarFacade.GetAppointment(eventId);

            string message = GenerateReminderMessage(appointment);

            appointment.Attendees = ContactsFacade.UpdateAttendeesWithMobileNumbers(appointment.Attendees);

            int messagesSentCount = 0;

            foreach (Attendee attendee in appointment.Attendees)
            {
                EsendexSmsFacade.SendSms(attendee.MobileNumber, message);
                messagesSentCount++;
            }

            var appointmentReminder = new AppointmentReminder
                                          {
                                              EventId = appointment.EventId,
                                              RemindersSent = true
                                          };

            ICollection<AttendeeReminder> attendeeReminders =
                appointment.Attendees.Select(attendee => new AttendeeReminder
                                                             {
                                                                 AppointmentReminder = appointmentReminder,
                                                                 EventId = appointment.EventId,
                                                                 Attendee = attendee.Email,
                                                                 Mobile = attendee.MobileNumber,
                                                                 Status = "NoResponse"
                                                             }).ToList();

            appointmentReminder.AttendeeReminders = attendeeReminders;

            AppointmentsDb.AddNewReminderDetails(appointmentReminder);

            return messagesSentCount;
        }
 public void AddNewReminderDetails(AppointmentReminder appointmentReminder)
 {
     AppointmentReminders.Add(appointmentReminder);
     SaveChanges();
 }