public void Update(object sender, EventArgs eventArgs)
 {
     lock (_lockingObject)
     {
         _appointments = (List <Appointment>)sender;
         AppointmentsChangedEventHandler?.Invoke(_appointments, EventArgs.Empty);
     }
 }
        public void RemoveAppointment(int appointmentId)
        {
            lock (_lockingObject)
            {
                _persistable.RemoveAppointment(appointmentId);
                Appointment appointment = _appointments.Find(appointment1 => appointment1.Id == appointmentId);

                _updateAppointmentNotification.AppointmentDeletedNotification(appointment);
                _appointments.Remove(appointment);
            }

            AppointmentsChangedEventHandler?.Invoke(appointmentId, EventArgs.Empty);
        }
        public void CreateAndAddAppointment(DateTime dateAndTime, Room room, List <User> users,
                                            AppointmentType appointmentType, string note, TimeSpan notificationTime, bool emailNotification,
                                            bool smsNotification)
        {
            lock (_lockingObject)
            {
                Appointment tempAppointment = CreateAppointment(dateAndTime, users, appointmentType, room, note,
                                                                notificationTime, emailNotification, smsNotification);
                AddAppointment(tempAppointment);

                _updateAppointmentNotification.AppointmentCreatedNotification(tempAppointment);

                _persistable.SaveAppointment(dateAndTime, room, users, appointmentType, note, notificationTime,
                                             emailNotification, smsNotification);

                AppointmentsChangedEventHandler?.Invoke(tempAppointment, EventArgs.Empty);
            }
        }
        public void EditAppointment(AppointmentView appointmentView)
        {
            lock (_lockingObject)
            {
                Appointment appointment     = new Appointment(appointmentView.Id, appointmentView.DateAndTime, appointmentView.Note, appointmentView.NotificationTime, appointmentView.EmailNotification, appointmentView.SMSNotification);
                Appointment tempAppointment = _appointments.Find(appointmentOne => appointmentOne.Id == appointmentView.Id);

                tempAppointment.DateAndTime       = appointmentView.DateAndTime;
                tempAppointment.Note              = appointmentView.Note;
                tempAppointment.EmailNotification = appointment.EmailNotification;
                tempAppointment.SmsNotification   = appointment.SmsNotification;
                tempAppointment.NotificationTime  = appointment.NotificationTime;

                _updateAppointmentNotification.AppointmentUpdatedNotification(tempAppointment);

                _persistable.EditAppointment(tempAppointment);
                AppointmentsChangedEventHandler?.Invoke(appointment, EventArgs.Empty);
            }
        }