/// <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; try { if (DoesTitleAlreadyExist(title)) { throw new ArgumentException("The 'title' parameter has to be unique!"); } Event newEvent; if (maxParticipators > 0) { newEvent = new EventLimited(title, dateTime, invitor, maxParticipators); } else { newEvent = new Event(title, dateTime, invitor); } _events.Add(newEvent); eventCreated = true; } catch (Exception ex) { throw ex; } return(eventCreated); }
/// <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 registerOk = true; if (ev != null && person != null) { foreach (Event myEvent in _events) { foreach (Person myPerson in myEvent.Persons) { if (myPerson.Equals(person) && ev.DateTimeEvent == myEvent.DateTimeEvent) { registerOk = false; } } } if (registerOk && !ev.Persons.Contains <Person>(person)) { if (ev.GetType().Equals(typeof(EventLimited))) { EventLimited tmp = ev as EventLimited; if (tmp.Persons.Count < tmp.MaxParticipators) { person.Events.Add(ev); ev.Persons.Add(person); } else { registerOk = false; } } else { person.Events.Add(ev); ev.Persons.Add(person); } } else { registerOk = false; } } else { registerOk = false; } return(registerOk); }