protected override async Task Handle(Commands.UpdateContact request, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(request.FirstName) && string.IsNullOrEmpty(request.LastName))
            {
                throw new Exceptions.ContactNameIsEmptyException(request.ContactId, request.FirstName, request.LastName);
            }

            if (!string.IsNullOrEmpty(request.Email))
            {
                if (!new EmailAddressAttribute().IsValid(request.Email))
                {
                    throw new Exceptions.ContactEmailIsNotValidException(request.ContactId, request.Email);
                }
            }

            var contact = new Core.Entities.Contact(
                id: request.ContactId,
                firstName: request.FirstName,
                lastName: request.LastName,
                email: request.Email,
                phone: request.Phone
                );


            dataStore.Contacts.UpdateContact(contact);
            await dataStore.CommitChanges();

            eventBus.Publish(new Events.ContactDeleted("TenantId", contact.Id));
        }
예제 #2
0
        public async Task <int> Update(Core.Entities.Contact entity)
        {
            var sql = "UPDATE Contacts SET Name = @Name, Nickname = @Nickname, Emoji = @Emoji WHERE Id = @Id;";

            using (var connection = new SqlConnection(_configuration.GetConnectionString("DefaultConnection")))
            {
                connection.Open();
                var affectedRows = await connection.ExecuteAsync(sql, entity);

                return(affectedRows);
            }
        }
예제 #3
0
        public async Task <int> Add(Core.Entities.Contact entity)
        {
            var sql = "INSERT INTO Contacts (Name, Nickname, Emoji) Values (@Name, @Nickname, @Emoji);";

            using (var connection = new SqlConnection(_configuration.GetConnectionString("DefaultConnection")))
            {
                connection.Open();
                var affectedRows = await connection.ExecuteAsync(sql, entity);

                return(affectedRows);
            }
        }
예제 #4
0
        public async Task <CreateContactResult> Handle(CreateContact request, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(request.FirstName) && string.IsNullOrEmpty(request.LastName))
            {
                throw new Exceptions.ContactNameIsEmptyException(request.ContactId, request.FirstName, request.LastName);
            }

            var contact = new Core.Entities.Contact(
                id: request.ContactId,
                firstName: request.FirstName,
                lastName: request.LastName,
                email: request.Email,
                phone: request.Phone
                );

            dataStore.Contacts.AddContact(contact);
            await dataStore.CommitChanges();

            eventBus.Publish(new Events.ContactCreated("TenantId", contact.Id));

            return(new CreateContactResult(contact.Id));
        }