DTO модуля projects

DTO модуля projects: ProjectDto, BoardDto, ProjectUserDto. Все создаются ассемблерами из AR-моделей/данных.

1. ProjectDto

Файл: modules/projects/application/dto/ProjectDto.php

Конструктор принимает массив $data. Публичные свойства:

СвойствоТипИсточник в data
idintid
namestringname
typestringtype
ownerIdintownerId
settingsarraysettings (default [])
createdAtstringcreatedAt
updatedAtstringupdatedAt

Пример JSON (внутри item):

{
  "item": {
    "id": 3,
    "name": "Проект клиента",
    "type": "agency",
    "ownerId": 12,
    "settings": {},
    "createdAt": "2026-03-17 17:42:00",
    "updatedAt": "2026-03-17 17:42:00"
  }
}

2. BoardDto

Файл: modules/projects/application/dto/BoardDto.php

СвойствоТипИсточник
idintid
projectIdintprojectId
namestringname
description?stringdescription (default null)
createdByintcreatedBy
settingsarraysettings (default [])
createdAtstringcreatedAt
updatedAtstringupdatedAt
{
  "item": {
    "id": 5,
    "projectId": 3,
    "name": "Разработка",
    "description": "Доска разработки",
    "createdBy": 12,
    "settings": {},
    "createdAt": "2026-03-17 17:50:00",
    "updatedAt": "2026-03-17 17:50:00"
  }
}

3. ProjectUserDto

Файл: modules/projects/application/dto/ProjectUserDto.php

СвойствоТипИсточник
projectIdintprojectId
userIdintuserId
rolestringrole (owner/admin/member)
invitedBy?intinvitedBy (default null)
invitedAt?stringinvitedAt (default null)
acceptedAt?stringacceptedAt (default null)
joinedAtstringjoinedAt
{
  "item": {
    "projectId": 3,
    "userId": 12,
    "role": "owner",
    "invitedBy": null,
    "invitedAt": null,
    "acceptedAt": null,
    "joinedAt": "2026-03-17 17:42:00"
  }
}

4. Ассемблеры

АссемблерСоздаёт
ProjectDtoAssemblerProjectDto из ProjectAR/данных
BoardDtoAssemblerBoardDto из BoardAR/данных
ProjectUserDtoAssemblerProjectUserDto из ProjectUserAR/данных

Ассемблеры регистрируются в DI (modules/projects/config/di.php) и вызываются хендлерами для формирования ответов.