Exemple #1
0
        /// <summary>
        /// Person registriert sich für Veranstaltung.
        /// Eine Person kann sich zu einer Veranstaltung nur einmal registrieren.
        /// </summary>
        /// <param name="person"></param>
        /// <param name="ev">Veranstaltung</param>
        /// <returns>War die Registrierung erfolgreich?</returns>
        public bool RegisterPersonForEvent(Person person, Event ev)
        {
            bool register = false;

            if (ev == null)
            {
                throw new ArgumentNullException("event");
            }

            if (person == null)
            {
                throw new ArgumentNullException("person");
            }

            if (ev.GetType().Equals(typeof(EventWithLimit)))
            {
                EventWithLimit tmp = ev as EventWithLimit;

                if (tmp.Participators.Count < tmp.MaxParticipators)
                {
                    if (GetEvent(ev.Title).Equals(ev))
                    {
                        if (ev.AddParticipatorToEvent(person) == true)
                        {
                            person.AddEventToPerson(ev);
                            register = true;
                        }
                        else
                        {
                            throw new InvalidOperationException("The person is already registered");
                        }
                    }
                }
                else
                {
                    throw new InvalidOperationException("The maximum number of registrations has been reached!");
                }
            }
            else
            {
                if (GetEvent(ev.Title).Equals(ev))
                {
                    if (ev.AddParticipatorToEvent(person) == true)
                    {
                        person.AddEventToPerson(ev);
                        register = true;
                    }
                    else
                    {
                        throw new InvalidOperationException("The person is already registered");
                    }
                }
            }

            return(register);
        }
Exemple #2
0
        /// <summary>
        /// Ein Event mit dem angegebenen Titel und dem Termin wird für den Einlader angelegt.
        /// Der Titel muss innerhalb der Veranstaltungen eindeutig sein und das Datum darf nicht
        /// in der Vergangenheit liegen.
        /// Mit dem optionalen Parameter maxParticipators kann eine Obergrenze für die Teilnehmer festgelegt
        /// werden.
        /// </summary>
        /// <param name="invitor"></param>
        /// <param name="title"></param>
        /// <param name="dateTime"></param>
        /// <param name="maxParticipators"></param>
        /// <returns>Wurde die Veranstaltung angelegt</returns>
        public bool CreateEvent(Person invitor, string title, DateTime dateTime, int maxParticipators = 0)
        {
            bool eventCreated = false;

            if (invitor == null)
            {
                throw new ArgumentNullException(nameof(invitor));
            }

            if (title == null || title.Length < 1) //string.isNullOrEmpty(string) für(null, "")   string.IsNullOrWhitespace(string) für(null, "", " ")
            {
                throw new ArgumentNullException(nameof(title));
            }

            if (dateTime < DateTime.Now)
            {
                throw new ArgumentException("The 'dateTime' parameter has to be in the future!");
            }

            if (!UniqueTitle(title))
            {
                throw new ArgumentException("The 'title' parameter has to be unique!");
            }

            Event myEvent;

            if (UniqueTitle(title))
            {
                if (maxParticipators == 0)
                {
                    myEvent = new Event(invitor, title, dateTime);
                }
                else
                {
                    myEvent = new EventWithLimit(invitor, title, dateTime, maxParticipators);
                }
                eventCreated = true;
                _events.Add(myEvent);
            }

            return(eventCreated);
        }