コード例 #1
0
        private MeetingComment(
            MeetingId meetingId,
            MemberId authorId,
            string comment,
            MeetingCommentId?inReplyToCommentId,
            MeetingCommentingConfiguration meetingCommentingConfiguration,
            MeetingGroup meetingGroup)
        {
            this.CheckRule(new CommentTextMustBeProvidedRule(comment));
            this.CheckRule(new CommentCanBeCreatedOnlyIfCommentingForMeetingEnabledRule(meetingCommentingConfiguration));
            this.CheckRule(new CommentCanBeAddedOnlyByMeetingGroupMemberRule(authorId, meetingGroup));

            this.Id    = new MeetingCommentId(Guid.NewGuid());
            _meetingId = meetingId;
            _authorId  = authorId;
            _comment   = comment;

            _inReplyToCommentId = inReplyToCommentId;

            _createDate = SystemClock.Now;
            _editDate   = null;

            _isRemoved       = false;
            _removedByReason = null;

            if (inReplyToCommentId == null)
            {
                this.AddDomainEvent(new MeetingCommentAddedDomainEvent(this.Id, _meetingId, comment));
            }
            else
            {
                this.AddDomainEvent(new ReplyToMeetingCommentAddedDomainEvent(this.Id, inReplyToCommentId, comment));
            }
        }
 internal MemberOnWaitlistMustBeAMemberOfGroupRule(MeetingGroup meetingGroup, MemberId memberId, List <MeetingAttendee> attendees)
     : base()
 {
     _meetingGroup = meetingGroup;
     _memberId     = memberId;
     _attendees    = attendees;
 }
コード例 #3
0
 public MeetingComment AddComment(MemberId authorId, string comment, MeetingGroup meetingGroup, MeetingCommentingConfiguration meetingCommentingConfiguration)
 => MeetingComment.Create(
     this.Id,
     authorId,
     comment,
     meetingGroup,
     meetingCommentingConfiguration);
コード例 #4
0
        public void AddAttendee(MeetingGroup meetingGroup, MemberId attendeeId, int guestsNumber)
        {
            this.CheckRule(new MeetingCannotBeChangedAfterStartRule(_term));

            this.CheckRule(new AttendeeCanBeAddedOnlyInRsvpTermRule(_rsvpTerm));

            this.CheckRule(new MeetingAttendeeMustBeAMemberOfGroupRule(attendeeId, meetingGroup));

            this.CheckRule(new MemberCannotBeAnAttendeeOfMeetingMoreThanOnceRule(attendeeId, _attendees));

            this.CheckRule(new MeetingGuestsNumberIsAboveLimitRule(_meetingLimits.GuestsLimit, guestsNumber));

            this.CheckRule(new MeetingAttendeesNumberIsAboveLimitRule(_meetingLimits.AttendeesLimit, this.GetAllActiveAttendeesWithGuestsNumber(), guestsNumber));

            var notAttendee = this.GetActiveNotAttendee(attendeeId);

            notAttendee?.ChangeDecision();

            _attendees.Add(MeetingAttendee.CreateNew(
                               this.Id, attendeeId,
                               SystemClock.Now,
                               MeetingAttendeeRole.Attendee,
                               guestsNumber,
                               _eventFee));
        }
コード例 #5
0
 public MeetingComment Reply(MemberId replierId, string reply, MeetingGroup meetingGroup, MeetingCommentingConfiguration meetingCommentingConfiguration)
 => new MeetingComment(
     _meetingId,
     replierId,
     reply,
     this.Id,
     meetingCommentingConfiguration,
     meetingGroup);
コード例 #6
0
        public void EnableCommenting(MemberId enablingMemberId, MeetingGroup meetingGroup)
        {
            CheckRule(new MeetingCommentingCanBeEnabledOnlyByGroupOrganizerRule(enablingMemberId, meetingGroup));

            if (!this._isCommentingEnabled)
            {
                this._isCommentingEnabled = true;
                AddDomainEvent(new MeetingCommentingEnabledDomainEvent(this._meetingId));
            }
        }
コード例 #7
0
        public void DisableCommenting(MemberId disablingMemberId, MeetingGroup meetingGroup)
        {
            CheckRule(new MeetingCommentingCanBeDisabledOnlyByGroupOrganizerRule(disablingMemberId, meetingGroup));

            if (this._isCommentingEnabled)
            {
                this._isCommentingEnabled = false;
                AddDomainEvent(new MeetingCommentingDisabledDomainEvent(this._meetingId));
            }
        }
コード例 #8
0
 protected void rptItemListOnItemDataBound(object sender, RepeaterItemEventArgs e)
 {
     if (e.Item.DataItem is MeetingGroup)
     {
         MeetingGroup g = (MeetingGroup)e.Item.DataItem;
         return;
         //rptItemList.DataSource = meetCon.GetByMeetingGroup(g.MeetingGroupID);
         //rptItemList.DataBind();
     }
 }
コード例 #9
0
        public void Remove(MemberId removingMemberId, MeetingGroup meetingGroup, string reason = null)
        {
            this.CheckRule(new MeetingCommentCanBeRemovedOnlyByAuthorOrGroupOrganizerRule(meetingGroup, this._authorId, removingMemberId));
            this.CheckRule(new RemovingReasonCanBeProvidedOnlyByGroupOrganizerRule(meetingGroup, removingMemberId, reason));

            _isRemoved       = true;
            _removedByReason = reason ?? string.Empty;

            this.AddDomainEvent(new MeetingCommentRemovedDomainEvent(this.Id));
        }
コード例 #10
0
        public async Task <Unit> Handle(EditMeetingGroupGeneralAttributesCommand request, CancellationToken cancellationToken)
        {
            MeetingGroup meetingGroup =
                await _meetingGroupRepository.GetByIdAsync(new MeetingGroupId(request.MeetingGroupId));

            meetingGroup.EditGeneralAttributes(request.Name, request.Description, new MeetingGroupLocation(request.LocationCity, request.LocationCountry));

            await _meetingGroupRepository.Commit();

            return(Unit.Value);
        }
コード例 #11
0
        public void SignUpMemberToWaitlist(MeetingGroup meetingGroup, MemberId memberId)
        {
            this.CheckRule(new MeetingCannotBeChangedAfterStartRule(_term));

            this.CheckRule(new AttendeeCanBeAddedOnlyInRsvpTermRule(_rsvpTerm));

            this.CheckRule(new MemberOnWaitlistMustBeAMemberOfGroupRule(meetingGroup, memberId, _attendees));

            this.CheckRule(new MemberCannotBeMoreThanOnceOnMeetingWaitlistRule(_waitlistMembers, memberId));

            _waitlistMembers.Add(MeetingWaitlistMember.CreateNew(this.Id, memberId));
        }
コード例 #12
0
        public void SetHostRole(MeetingGroup meetingGroup, MemberId settingMemberId, MemberId newOrganizerId)
        {
            this.CheckRule(new MeetingCannotBeChangedAfterStartRule(_term));

            this.CheckRule(new OnlyMeetingOrGroupOrganizerCanSetMeetingMemberRolesRule(settingMemberId, meetingGroup, _attendees));

            this.CheckRule(new OnlyMeetingAttendeeCanHaveChangedRoleRule(_attendees, newOrganizerId));

            var attendee = this.GetActiveAttendee(newOrganizerId);

            attendee.SetAsHost();
        }
コード例 #13
0
 internal static MeetingComment Create(
     MeetingId meetingId,
     MemberId authorId,
     string comment,
     MeetingGroup meetingGroup,
     MeetingCommentingConfiguration meetingCommentingConfiguration)
 => new MeetingComment(
     meetingId,
     authorId,
     comment,
     inReplyToCommentId: null,
     meetingCommentingConfiguration,
     meetingGroup);
コード例 #14
0
        public void SetAttendeeRole(MeetingGroup meetingGroup, MemberId settingMemberId, MemberId newOrganizerId)
        {
            this.CheckRule(new MeetingCannotBeChangedAfterStartRule(_term));

            this.CheckRule(new OnlyMeetingOrGroupOrganizerCanSetMeetingMemberRolesRule(settingMemberId, meetingGroup, _attendees));

            this.CheckRule(new OnlyMeetingAttendeeCanHaveChangedRoleRule(_attendees, newOrganizerId));

            var attendee = this.GetActiveAttendee(newOrganizerId);

            attendee.SetAsAttendee();

            var meetingHostNumber = _attendees.Count(x => x.IsActiveHost());

            this.CheckRule(new MeetingMustHaveAtLeastOneHostRule(meetingHostNumber));
        }
コード例 #15
0
 public MeetingTestData(MeetingGroup meetingGroup, Meeting meeting)
 {
     MeetingGroup = meetingGroup;
     Meeting      = meeting;
 }
 public MeetingCommentingCanBeEnabledOnlyByGroupOrganizerRule(MemberId enablingMemberId, MeetingGroup meetingGroup)
 {
     _meetingGroup     = meetingGroup;
     _enablingMemberId = enablingMemberId;
 }
 public RemovingReasonCanBeProvidedOnlyByGroupOrganizerRule(MeetingGroup meetingGroup, MemberId removingMemberId, string removingReason)
 {
     _meetingGroup     = meetingGroup;
     _removingMemberId = removingMemberId;
     _removingReason   = removingReason;
 }
 public MeetingCommentingCanBeDisabledOnlyByGroupOrganizerRule(MemberId disablingMemberId, MeetingGroup meetingGroup)
 {
     _meetingGroup      = meetingGroup;
     _disablingMemberId = disablingMemberId;
 }
コード例 #19
0
 public OnlyMeetingOrGroupOrganizerCanSetMeetingMemberRolesRule(MemberId settingMemberId, MeetingGroup meetingGroup, List <MeetingAttendee> attendees)
 {
     _settingMemberId = settingMemberId;
     _meetingGroup    = meetingGroup;
     _attendees       = attendees;
 }
コード例 #20
0
 internal MeetingAttendeeMustBeAMemberOfGroupRule(MemberId attendeeId, MeetingGroup meetingGroup)
 {
     _attendeeId   = attendeeId;
     _meetingGroup = meetingGroup;
 }
コード例 #21
0
 public CommentCanBeAddedOnlyByMeetingGroupMemberRule(MemberId authorId, MeetingGroup meetingGroup)
 {
     _authorId     = authorId;
     _meetingGroup = meetingGroup;
 }
 public MeetingCommentCanBeRemovedOnlyByAuthorOrGroupOrganizerRule(MeetingGroup meetingGroup, MemberId authorId, MemberId removingMemberId)
 {
     _meetingGroup     = meetingGroup;
     _authorId         = authorId;
     _removingMemberId = removingMemberId;
 }
 public async Task AddAsync(MeetingGroup meetingGroup)
 {
     await _meetingsContext.MeetingGroups.AddAsync(meetingGroup);
 }
コード例 #24
0
 public MeetingGroup CreateMeetingGroup()
 {
     return(MeetingGroup.CreateBasedOnProposal(this.Id, _name, _description, _location, _proposalUserId));
 }
コード例 #25
0
 public MeetingTestData(MeetingGroup meetingGroup, Meeting meeting, MeetingCommentingConfiguration meetingCommentingConfiguration)
 {
     MeetingGroup = meetingGroup;
     Meeting      = meeting;
     MeetingCommentingConfiguration = meetingCommentingConfiguration;
 }