示例#1
0
        public static AnnouncementSendingFrequency ConvertToEnum(this AnnouncementSendingFrequencyEnumeration announcementSendingFrequency)
        {
            switch (announcementSendingFrequency)
            {
            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryHour):
                return(AnnouncementSendingFrequency.EveryHour);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryTwoHours):
                return(AnnouncementSendingFrequency.EveryTwoHours);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryThreeHours):
                return(AnnouncementSendingFrequency.EveryThreeHours);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryFourHours):
                return(AnnouncementSendingFrequency.EveryFourHours);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryFiveHours):
                return(AnnouncementSendingFrequency.EveryFiveHours);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EverySixHours):
                return(AnnouncementSendingFrequency.EverySixHours);

            case { } announcementSendingFrequencyEnumeration when Equals(announcementSendingFrequencyEnumeration, AnnouncementSendingFrequencyEnumeration.EveryTwelveHours):
                return(AnnouncementSendingFrequency.EveryTwelveHours);

            default:
                throw new ArgumentException($"{nameof(announcementSendingFrequency.DisplayName)} is not supported by {nameof(AnnouncementSendingFrequency)}.");
            }
        }
示例#2
0
 public CreateUserCommand(Guid userId, string email, bool serviceActive, int announcementPreferenceLimit, AnnouncementSendingFrequencyEnumeration announcementSendingFrequency)
 {
     UserId        = userId;
     Email         = email;
     ServiceActive = serviceActive;
     AnnouncementPreferenceLimit  = announcementPreferenceLimit;
     AnnouncementSendingFrequency = announcementSendingFrequency;
 }
示例#3
0
 public UserCreatedDomainEvent(Guid aggregateId, Guid correlationId, string email, string picture,
                               bool serviceActive, int announcementPreferenceLimit, AnnouncementSendingFrequencyEnumeration announcementSendingFrequency)
     : base(aggregateId, correlationId)
 {
     Email         = email;
     Picture       = picture;
     ServiceActive = serviceActive;
     AnnouncementPreferenceLimit  = announcementPreferenceLimit;
     AnnouncementSendingFrequency = announcementSendingFrequency;
 }
示例#4
0
 public UpdateUserCommand(Guid userId, bool serviceActive, int announcementPreferenceLimit,
                          AnnouncementSendingFrequencyEnumeration announcementSendingFrequency, PictureDto picture)
 {
     UserId        = userId;
     ServiceActive = serviceActive;
     AnnouncementPreferenceLimit  = announcementPreferenceLimit;
     AnnouncementSendingFrequency = announcementSendingFrequency;
     Picture       = picture;
     CorrelationId = Guid.NewGuid();
 }
示例#5
0
 private User(UserBuilder builder) : base(builder.Id)
 {
     Email         = builder.Email;
     Picture       = builder.Picture;
     ServiceActive = builder.ServiceActive;
     AnnouncementPreferenceLimit         = builder.AnnouncementPreferenceLimit;
     AnnouncementSendingFrequency        = builder.AnnouncementSendingFrequency;
     _roomForRentAnnouncementPreferences = builder.RoomForRentAnnouncementPreferences;
     _flatForRentAnnouncementPreferences = builder.FlatForRentAnnouncementPreferences;
 }
示例#6
0
        private void UpdateAnnouncementSendingFrequency(User user, AnnouncementSendingFrequencyEnumeration announcementSendingFrequency, Guid correlationId)
        {
            if (!Equals(user.AnnouncementSendingFrequency, announcementSendingFrequency))
            {
                var announcementSendingFrequencyCanBeChangedVerificationResult = _userVerificationService.VerifyAnnouncementSendingFrequencyCanBeChanged();
                if (!announcementSendingFrequencyCanBeChangedVerificationResult.Success)
                {
                    throw new ValidationException(announcementSendingFrequencyCanBeChangedVerificationResult.Errors);
                }

                user.ChangeAnnouncementSendingFrequency(announcementSendingFrequency, correlationId);
            }
        }
示例#7
0
 public UserOutputQuery(Guid id, string email, string picture, bool serviceActive,
                        int announcementPreferenceLimit, AnnouncementSendingFrequencyEnumeration announcementSendingFrequency,
                        IEnumerable <RoomForRentAnnouncementPreferenceOutputQuery> roomForRentAnnouncementPreferences,
                        IEnumerable <FlatForRentAnnouncementPreferenceOutputQuery> flatForRentAnnouncementPreferences)
     : base(id)
 {
     Email         = email;
     Picture       = picture;
     ServiceActive = serviceActive;
     AnnouncementPreferenceLimit        = announcementPreferenceLimit;
     AnnouncementSendingFrequency       = announcementSendingFrequency;
     RoomForRentAnnouncementPreferences = roomForRentAnnouncementPreferences.ToList().AsReadOnly();
     FlatForRentAnnouncementPreferences = flatForRentAnnouncementPreferences.ToList().AsReadOnly();
 }
示例#8
0
 public UserAnnouncementSendingFrequency(AnnouncementSendingFrequencyEnumeration announcementSendingFrequency)
 {
     _announcementSendingFrequency = announcementSendingFrequency ?? throw new UserAnnouncementSendingFrequencyNullException();
 }
示例#9
0
 public UserAnnouncementSendingFrequencyChangedDomainEvent(Guid aggregateId, Guid correlationId,
                                                           AnnouncementSendingFrequencyEnumeration announcementSendingFrequency) : base(aggregateId, correlationId)
 {
     AnnouncementSendingFrequency = announcementSendingFrequency;
 }
示例#10
0
 public void ChangeAnnouncementSendingFrequency(AnnouncementSendingFrequencyEnumeration announcementSendingFrequency, Guid correlationId)
 {
     AnnouncementSendingFrequency = new UserAnnouncementSendingFrequency(announcementSendingFrequency);
     AddEvent(new UserAnnouncementSendingFrequencyChangedDomainEvent(Id, correlationId, AnnouncementSendingFrequency));
 }
示例#11
0
 public IUserBuilder SetAnnouncementSendingFrequency(AnnouncementSendingFrequencyEnumeration announcementSendingFrequency)
 {
     AnnouncementSendingFrequency = new UserAnnouncementSendingFrequency(announcementSendingFrequency);
     return(this);
 }
示例#12
0
        public override void ApplyEvents()
        {
            base.ApplyEvents();

            foreach (var domainEvent in Events)
            {
                switch (domainEvent)
                {
                case UserCreatedDomainEvent userCreatedDomainEvent:
                {
                    Email         = userCreatedDomainEvent.Email;
                    Picture       = userCreatedDomainEvent.Picture;
                    ServiceActive = userCreatedDomainEvent.ServiceActive;
                    AnnouncementPreferenceLimit  = userCreatedDomainEvent.AnnouncementPreferenceLimit;
                    AnnouncementSendingFrequency = userCreatedDomainEvent.AnnouncementSendingFrequency;
                    break;
                }

                case UserAnnouncementPreferenceLimitChangedDomainEvent userAnnouncementPreferenceLimitChangedDomainEvent:
                {
                    AnnouncementPreferenceLimit = userAnnouncementPreferenceLimitChangedDomainEvent.AnnouncementPreferenceLimit;
                    break;
                }

                case UserAnnouncementSendingFrequencyChangedDomainEvent userAnnouncementSendingFrequencyChangedDomainEvent:
                {
                    AnnouncementSendingFrequency = userAnnouncementSendingFrequencyChangedDomainEvent.AnnouncementSendingFrequency;
                    break;
                }

                case UserServiceActiveChangedDomainEvent userServiceActiveChangedDomainEvent:
                {
                    ServiceActive = userServiceActiveChangedDomainEvent.ServiceActive;
                    break;
                }

                case UserPictureChangedDomainEvent userPictureChangedDomainEvent:
                {
                    Picture = userPictureChangedDomainEvent.Picture;
                    break;
                }

                case UserFlatForRentAnnouncementPreferenceAddedDomainEvent userFlatForRentAnnouncementPreferenceAddedDomainEvent:
                {
                    _flatForRentAnnouncementPreferences.Add(userFlatForRentAnnouncementPreferenceAddedDomainEvent.FlatForRentAnnouncementPreference);
                    break;
                }

                case UserFlatForRentAnnouncementPreferenceChangedDomainEvent userFlatForRentAnnouncementPreferenceChangedDomainEvent:
                {
                    var flatForRentAnnouncementPreference = _flatForRentAnnouncementPreferences.Single(x =>
                                                                                                       x.Id == userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.Id);
                    flatForRentAnnouncementPreference.ChangeCityId(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.CityId);
                    flatForRentAnnouncementPreference.ChangePriceMin(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.PriceMin);
                    flatForRentAnnouncementPreference.ChangePriceMax(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.PriceMax);
                    flatForRentAnnouncementPreference.ChangeRoomNumbersMin(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.RoomNumbersMin);
                    flatForRentAnnouncementPreference.ChangeRoomNumbersMax(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.RoomNumbersMax);
                    flatForRentAnnouncementPreference.ChangeCityDistricts(userFlatForRentAnnouncementPreferenceChangedDomainEvent.FlatForRentAnnouncementPreference.CityDistricts);
                    break;
                }

                case UserFlatForRentAnnouncementPreferenceDeletedDomainEvent userFlatForRentAnnouncementPreferenceDeletedDomainEvent:
                {
                    _flatForRentAnnouncementPreferences.Remove(userFlatForRentAnnouncementPreferenceDeletedDomainEvent.FlatForRentAnnouncementPreference);
                    break;
                }

                case UserRoomForRentAnnouncementPreferenceAddedDomainEvent userRoomForRentAnnouncementPreferenceAddedDomainEvent:
                {
                    _roomForRentAnnouncementPreferences.Add(userRoomForRentAnnouncementPreferenceAddedDomainEvent.RoomForRentAnnouncementPreference);
                    break;
                }

                case UserRoomForRentAnnouncementPreferenceChangedDomainEvent userRoomForRentAnnouncementPreferenceChangedDomainEvent:
                {
                    var roomForRentAnnouncementPreference = _roomForRentAnnouncementPreferences.Single(x =>
                                                                                                       x.Id == userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.Id);
                    roomForRentAnnouncementPreference.ChangeCityId(userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.CityId);
                    roomForRentAnnouncementPreference.ChangePriceMin(userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.PriceMin);
                    roomForRentAnnouncementPreference.ChangePriceMax(userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.PriceMax);
                    roomForRentAnnouncementPreference.ChangeRoomType(userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.RoomType);
                    roomForRentAnnouncementPreference.ChangeCityDistricts(userRoomForRentAnnouncementPreferenceChangedDomainEvent.RoomForRentAnnouncementPreference.CityDistricts);
                    break;
                }

                case UserRoomForRentAnnouncementPreferenceDeletedDomainEvent userRoomForRentAnnouncementPreferenceDeletedDomainEvent:
                {
                    _roomForRentAnnouncementPreferences.Remove(userRoomForRentAnnouncementPreferenceDeletedDomainEvent.RoomForRentAnnouncementPreference);
                    break;
                }
                }
            }
        }