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; }
public MeetingComment AddComment(MemberId authorId, string comment, MeetingGroup meetingGroup, MeetingCommentingConfiguration meetingCommentingConfiguration) => MeetingComment.Create( this.Id, authorId, comment, meetingGroup, meetingCommentingConfiguration);
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)); }
public MeetingComment Reply(MemberId replierId, string reply, MeetingGroup meetingGroup, MeetingCommentingConfiguration meetingCommentingConfiguration) => new MeetingComment( _meetingId, replierId, reply, this.Id, meetingCommentingConfiguration, meetingGroup);
public void EnableCommenting(MemberId enablingMemberId, MeetingGroup meetingGroup) { CheckRule(new MeetingCommentingCanBeEnabledOnlyByGroupOrganizerRule(enablingMemberId, meetingGroup)); if (!this._isCommentingEnabled) { this._isCommentingEnabled = true; AddDomainEvent(new MeetingCommentingEnabledDomainEvent(this._meetingId)); } }
public void DisableCommenting(MemberId disablingMemberId, MeetingGroup meetingGroup) { CheckRule(new MeetingCommentingCanBeDisabledOnlyByGroupOrganizerRule(disablingMemberId, meetingGroup)); if (this._isCommentingEnabled) { this._isCommentingEnabled = false; AddDomainEvent(new MeetingCommentingDisabledDomainEvent(this._meetingId)); } }
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(); } }
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)); }
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); }
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)); }
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(); }
internal static MeetingComment Create( MeetingId meetingId, MemberId authorId, string comment, MeetingGroup meetingGroup, MeetingCommentingConfiguration meetingCommentingConfiguration) => new MeetingComment( meetingId, authorId, comment, inReplyToCommentId: null, meetingCommentingConfiguration, meetingGroup);
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)); }
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; }
public OnlyMeetingOrGroupOrganizerCanSetMeetingMemberRolesRule(MemberId settingMemberId, MeetingGroup meetingGroup, List <MeetingAttendee> attendees) { _settingMemberId = settingMemberId; _meetingGroup = meetingGroup; _attendees = attendees; }
internal MeetingAttendeeMustBeAMemberOfGroupRule(MemberId attendeeId, MeetingGroup meetingGroup) { _attendeeId = attendeeId; _meetingGroup = meetingGroup; }
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); }
public MeetingGroup CreateMeetingGroup() { return(MeetingGroup.CreateBasedOnProposal(this.Id, _name, _description, _location, _proposalUserId)); }
public MeetingTestData(MeetingGroup meetingGroup, Meeting meeting, MeetingCommentingConfiguration meetingCommentingConfiguration) { MeetingGroup = meetingGroup; Meeting = meeting; MeetingCommentingConfiguration = meetingCommentingConfiguration; }