Spaces:
No application file
No application file
File size: 2,714 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
<?php
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;
}
}
|