Spaces:
No application file
No application file
namespace Mautic\LeadBundle\Model; | |
use Mautic\LeadBundle\Entity\LeadField; | |
use Mautic\ReportBundle\Event\ReportGeneratorEvent; | |
use Symfony\Contracts\Translation\TranslatorInterface; | |
class CompanyReportData | |
{ | |
public function __construct( | |
private FieldModel $fieldModel, | |
private TranslatorInterface $translator | |
) { | |
} | |
public function getCompanyData(): array | |
{ | |
$companyColumns = $this->getCompanyColumns(); | |
$companyFields = $this->fieldModel->getEntities([ | |
'filter' => [ | |
'force' => [ | |
[ | |
'column' => 'f.object', | |
'expr' => 'like', | |
'value' => 'company', | |
], | |
], | |
], | |
]); | |
return array_merge($companyColumns, $this->getFieldColumns($companyFields, 'comp.')); | |
} | |
public function eventHasCompanyColumns(ReportGeneratorEvent $event): bool | |
{ | |
$companyColumns = $this->getCompanyData(); | |
foreach ($companyColumns as $key => $column) { | |
if ($event->hasColumn($key)) { | |
return true; | |
} | |
} | |
return false; | |
} | |
private function getCompanyColumns(): array | |
{ | |
return [ | |
'comp.id' => [ | |
'alias' => 'comp_id', | |
'label' => 'mautic.lead.report.company.company_id', | |
'type' => 'int', | |
'link' => 'mautic_company_action', | |
], | |
'companies_lead.is_primary' => [ | |
'label' => 'mautic.lead.report.company.is_primary', | |
'type' => 'bool', | |
], | |
'companies_lead.date_added' => [ | |
'label' => 'mautic.lead.report.company.date_added', | |
'type' => 'datetime', | |
], | |
]; | |
} | |
/** | |
* @param LeadField[] $fields | |
* @param string $prefix | |
*/ | |
private function getFieldColumns($fields, $prefix): array | |
{ | |
$columns = []; | |
foreach ($fields as $f) { | |
$type = match ($f->getType()) { | |
'boolean' => 'bool', | |
'date' => 'date', | |
'datetime' => 'datetime', | |
'time' => 'time', | |
'url' => 'url', | |
'email' => 'email', | |
'number' => 'float', | |
default => 'string', | |
}; | |
$columns[$prefix.$f->getAlias()] = [ | |
'label' => $this->translator->trans('mautic.report.field.company.label', ['%field%' => $f->getLabel()]), | |
'type' => $type, | |
]; | |
} | |
return $columns; | |
} | |
} | |