42 lines
1.3 KiB
PHP
42 lines
1.3 KiB
PHP
<?php
|
|
|
|
|
|
namespace frontend\modules\api\models\company\mappers;
|
|
|
|
use frontend\modules\api\models\company\dto\CompanyPersonnelDto;
|
|
use frontend\modules\api\models\project\ProjectUser;
|
|
use frontend\modules\api\services\TaskService;
|
|
|
|
class CompanyPersonnelMapper
|
|
{
|
|
/**
|
|
* @param ProjectUser $projectUser
|
|
* @return CompanyPersonnelDto
|
|
*/
|
|
public static function map(ProjectUser $projectUser): CompanyPersonnelDto
|
|
{
|
|
$dto = new CompanyPersonnelDto();
|
|
|
|
$dto->userId = $projectUser->user_id;
|
|
$dto->fio = $projectUser->card->fio ?? null;
|
|
$dto->position = $projectUser->card->position->name ?? null;
|
|
$dto->level = $projectUser->card->level ?? null;
|
|
$dto->projectName = $projectUser->project->name;
|
|
$dto->openTaskCount = TaskService::getOpenTaskCount($projectUser->user_id, $projectUser->project_id);
|
|
$dto->hoursWorkedForCurrentMonth = TaskService::getHoursWorkedForCurrentMonth($projectUser->user_id, $projectUser->project_id);
|
|
|
|
return $dto;
|
|
}
|
|
|
|
/**
|
|
* @param array $projectUsers
|
|
* @return array
|
|
*/
|
|
public static function mapAll(array $projectUsers): array
|
|
{
|
|
return array_map(function (ProjectUser $projectUser) {
|
|
return self::map($projectUser);
|
|
}, array_values($projectUsers));
|
|
}
|
|
}
|