예제 #1
0
 public void CreateMeetingLimits_WhenGuestsLimitIsNegative_BreaksMeetingGuestsLimitCannotBeNegativeRule()
 {
     AssertBrokenRule <MeetingGuestsLimitCannotBeNegativeRule>(() =>
     {
         MeetingLimits.Create(20, -9);
     });
 }
        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));
        }
예제 #3
0
 public void CreateMeetingLimits_WhenAttendeesLimitIsNegative_BreaksMeetingAttendeesLimitCannotBeNegativeRule()
 {
     AssertBrokenRule <MeetingAttendeesLimitCannotBeNegativeRule>(() =>
     {
         MeetingLimits.Create(-2, 8);
     });
 }
예제 #4
0
        public void CreateMeetingLimits_WhenAttendeesLimitIsNotDefined_GuestsLimitCanBeAny()
        {
            var meetingLimits = MeetingLimits.Create(null, 5);

            Assert.That(meetingLimits.AttendeesLimit, Is.EqualTo(null));
            Assert.That(meetingLimits.GuestsLimit, Is.EqualTo(5));
        }
예제 #5
0
 public void CreateMeetingLimits_WhenAttendeesLimitIsLessThanGuestsLimit_BreaksMeetingAttendeesLimitMustBeGreaterThanGuestsLimitRule()
 {
     AssertBrokenRule <MeetingAttendeesLimitMustBeGreaterThanGuestsLimitRule>(() =>
     {
         MeetingLimits.Create(5, 8);
     });
 }
예제 #6
0
        public void CreateMeetingLimits_WhenAttendeesLimitIsGreaterThanGuestsLimit_IsSuccessful()
        {
            var meetingLimits = MeetingLimits.Create(15, 5);

            Assert.That(meetingLimits.AttendeesLimit, Is.EqualTo(15));
            Assert.That(meetingLimits.GuestsLimit, Is.EqualTo(5));
        }
예제 #7
0
 internal AttendeesLimitCannotBeChangedToSmallerThanActiveAttendeesRule(
     MeetingLimits meetingLimits,
     int allActiveAttendeesWithGuestsNumber)
 {
     this._attendeesLimit = meetingLimits.AttendeesLimit;
     this._allActiveAttendeesWithGuestsNumber = allActiveAttendeesWithGuestsNumber;
 }
        public async Task <Unit> Handle(ChangeMeetingMainAttributesCommand request, CancellationToken cancellationToken)
        {
            var meeting = await _meetingRepository.GetByIdAsync(new MeetingId(request.MeetingId));

            meeting.ChangeMainAttributes(request.Title,
                                         MeetingTerm.CreateNewBetweenDates(request.TermStartDate, request.TermStartDate),
                                         request.Description,
                                         MeetingLocation.CreateNew(request.MeetingLocationName, request.MeetingLocationAddress, request.MeetingLocationPostalCode, request.MeetingLocationCity),
                                         MeetingLimits.Create(request.AttendeesLimit, request.GuestsLimit),
                                         Term.CreateNewBetweenDates(request.RSVPTermStartDate, request.RSVPTermEndDate),
                                         request.EventFeeValue.HasValue ? MoneyValue.Of(request.EventFeeValue.Value, request.EventFeeCurrency) : MoneyValue.Undefined,
                                         _memberContext.MemberId);

            return(Unit.Value);
        }