Пример #1
0
        public void CreateMeetingGroupTest()
        {
            // Arrange

            Guid creatorId = Guid.NewGuid();


            Meetings.Domain.MeetingGroups.MeetingGroup meetingGroup = new Meetings.Domain.MeetingGroups.MeetingGroup("testName",
                                                                                                                     "description", "Warsaw", "PL", creatorId);

            var allDomainEvents = DomainEventsTestHelper.GetAllDomainEvents(meetingGroup);

            //Assert

            Assert.That(allDomainEvents, Is.Not.Null);
            Assert.That(allDomainEvents[0], Is.TypeOf <MeetingGroupCreatedDomainEvent>());

            var meetingGroupCreated = allDomainEvents[0] as MeetingGroupCreatedDomainEvent;

            Assert.That(meetingGroupCreated.MeetingGroupId, Is.EqualTo(meetingGroup.Id));

            Assert.That(allDomainEvents[1], Is.TypeOf <MeetingGroupMemberJoinedDomainEvent>());

            var meetingGroupMemberJoned = allDomainEvents[1] as MeetingGroupMemberJoinedDomainEvent;

            Assert.That(meetingGroupMemberJoned.MemberId, Is.EqualTo(creatorId));
            Assert.That(meetingGroupMemberJoned.Role, Is.EqualTo(MeetingGroupMemberRole.Organizer()));
        }
Пример #2
0
        public async Task Handle(MemberSubscriptionExpirationDateChangedNotification notification, CancellationToken cancellationToken)
        {
            var sql = "SELECT " +
                      $"[MeetingGroupMember].MeetingGroupId AS [{nameof(MeetingGroupMemberResponse.MeetingGroupId)}], " +
                      $"[MeetingGroupMember].RoleCode AS [{nameof(MeetingGroupMemberResponse.RoleCode)}] " +
                      "FROM [meetings].[v_MeetingGroupMembers] AS [MeetingGroupMember] " +
                      "WHERE [MeetingGroupMember].MemberId = @MemberId";

            var connection = _sqlConnectionFactory.GetOpenConnection();

            var meetingGroupMembers = await connection.QueryAsync <MeetingGroupMemberResponse>(
                sql,
                new
            {
                MemberId = notification.DomainEvent.MemberId.Value
            });

            var meetingGroupList = meetingGroupMembers.AsList();

            List <MeetingGroupMemberData> meetingGroups = meetingGroupList
                                                          .Select(x =>
                                                                  new MeetingGroupMemberData(
                                                                      new MeetingGroupId(x.MeetingGroupId),
                                                                      MeetingGroupMemberRole.Of(x.RoleCode)))
                                                          .ToList();

            var meetingGroupsCoveredByMemberSubscription =
                MeetingGroupExpirationDatePolicy.GetMeetingGroupsCoveredByMemberSubscription(meetingGroups);

            foreach (var meetingGroup in meetingGroupsCoveredByMemberSubscription)
            {
                await _commandsScheduler.EnqueueAsync(new SetMeetingGroupExpirationDateCommand(
                                                          Guid.NewGuid(),
                                                          meetingGroup.Value,
                                                          notification.DomainEvent.ExpirationDate));
            }
        }
 public NewMeetingGroupMemberJoinedDomainEvent(MeetingGroupId meetingGroupId, MemberId memberId, MeetingGroupMemberRole role)
 {
     this.MeetingGroupId = meetingGroupId;
     this.MemberId       = memberId;
     this.Role           = role;
 }
 public MeetingGroupMemberData(MeetingGroupId meetingGroupId, MeetingGroupMemberRole role)
 {
     MeetingGroupId = meetingGroupId;
     Role           = role;
 }