Vivaster DDD test

Setup

Run composer install under project directory

PreConditions:

Требуется реализация приложения по учету заказчиков с применеием DDD. Интерфесом для взаимодействия с приложением должно быть RESTful API. Для общения с заказчиком (Customer) необходимо знать его имя. Заказчик может быть переименован (rename) по различным причинам. О факте переименования заказчика должно знать все приложение (CustomerRenamedEvent). Заказчик проживает по какому то адресу (Address), так же он может сменить/переехать (move) на другой адрес. О факте переезда, так же, должно узнать все приложение (CustomerMovedEvent). Адрес определяется названием страны (country) и улицы (street). Необходимо реализовать API для получения информации о заказчике, а так же его адресе места пребывания. GET /customers/{customerId} Response: { "name": "Имя заказчика", "street": "Улица заказчика", "country": "RU" } Организовать возможность смены имени заказчика и его адрес пребывания. PATCH /customers/{customerId} Request: { "name": "Новое имя заказчика", "street": "Новая улица заказчика" } Response: { "name": "Новое имя заказчика", "street": "Новая улица заказчика", "country": "RU" }