public Meeting CreateMeeting(
            string title,
            MeetingTerm term,
            string description,
            MeetingLocation location,
            int?attendeesLimit,
            int guestsLimit,
            Term rsvpTerm,
            MoneyValue eventFee,
            List <MemberId> hostsMembersIds,
            MemberId creatorId)
        {
            this.CheckRule(new MeetingCanBeOrganizedOnlyByPayedGroupRule(_paymentDateTo));

            this.CheckRule(new MeetingHostMustBeAMeetingGroupMemberRule(creatorId, hostsMembersIds, _members));

            return(Meeting.CreateNew(this.Id,
                                     title,
                                     term,
                                     description,
                                     location,
                                     MeetingLimits.Create(attendeesLimit, guestsLimit),
                                     rsvpTerm,
                                     eventFee,
                                     hostsMembersIds,
                                     creatorId));
        }