コード例 #1
0
        public Person DuplicatePerson(Person person)
        {
            Person       personToDuplicate = person.Duplicate() as Person;
            List <Event> eventsToSchedule  = new List <Event>(personToDuplicate.ScheduledEvents);

            personToDuplicate.ScheduledEvents = new List <Event>();

            Person duplicatedPerson = DbManager.Instance.AddPerson(personToDuplicate);

            if (duplicatedPerson != null)
            {
                duplicatedPerson.ScheduledEvents = new List <Event>(eventsToSchedule);

                Person successfullyDuplicatedPerson = DbManager.Instance.ModifyPerson(duplicatedPerson);
                if (successfullyDuplicatedPerson != null)
                {
                    IPersonServicesCallback currentCallbackProxy = OperationContext.Current.GetCallbackChannel <IPersonServicesCallback>();
                    PersonServiceCallback.Instance.NotifyAllPersonDuplication(duplicatedPerson, currentCallbackProxy);

                    successfullyDuplicatedPerson.ScheduledEvents = new List <Event>();
                    return(successfullyDuplicatedPerson);
                }
            }
            return(null);
        }
コード例 #2
0
        public void Unsubscribe(IPersonServicesCallback currentCallbackProxy)
        {
            if (_subscribers.Contains(currentCallbackProxy))
            {
                _subscribers.Remove(currentCallbackProxy);
            }

            UpdateHelper.Instance.Limit = _subscribers.Count;
        }
コード例 #3
0
        public Person DeletePerson(Person person)
        {
            Person deletedPerson = DbManager.Instance.DeletePerson(person);

            if (deletedPerson != null)
            {
                IPersonServicesCallback currentCallbackProxy = OperationContext.Current.GetCallbackChannel <IPersonServicesCallback>();
                PersonServiceCallback.Instance.NotifyAllPersonRemoval(deletedPerson, currentCallbackProxy);

                deletedPerson.ScheduledEvents = new List <Event>();
                return(deletedPerson);
            }

            return(null);
        }
コード例 #4
0
        public Person ModifyPerson(Person person)
        {
            Person modifiedPerson = DbManager.Instance.ModifyPerson(person);

            if (modifiedPerson != null)
            {
                IPersonServicesCallback currentCallbackProxy = OperationContext.Current.GetCallbackChannel <IPersonServicesCallback>();
                PersonServiceCallback.Instance.NotifyAllPersonModification(modifiedPerson, currentCallbackProxy);

                modifiedPerson.ScheduledEvents = new List <Event>();
                return(modifiedPerson);
            }

            return(null);
        }
コード例 #5
0
        public void NotifyAllPersonDuplication(Person addedPerson, IPersonServicesCallback currentCallbackProxy)
        {
            addedPerson.ScheduledEvents.ForEach(e => e.Participants.ForEach(p => p.ScheduledEvents.ForEach(ev => ev.Participants = new List <Person>())));

            if (_subscribers.Count > 0)
            {
                foreach (IPersonServicesCallback sub in _subscribers)
                {
                    sub.NotifyPersonDuplicate(addedPerson);
                    //if (sub != currentCallbackProxy)
                    //{
                    //    sub.NotifyPersonDuplicate(addedPerson);
                    //}
                }
            }
        }
コード例 #6
0
        public void Unsubscribe()
        {
            IPersonServicesCallback currentCallbackProxy = OperationContext.Current.GetCallbackChannel <IPersonServicesCallback>();

            PersonServiceCallback.Instance.Unsubscribe(currentCallbackProxy);
        }