mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Split budget elements in charges and resources column
This commit is contained in:
parent
7689fa254e
commit
d23efa7943
@ -11,6 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\EventBundle\Entity;
|
namespace Chill\EventBundle\Entity;
|
||||||
|
|
||||||
|
use Chill\EventBundle\Repository\EventThemeRepository;
|
||||||
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
|
use Chill\MainBundle\Entity\Embeddable\CommentEmbeddable;
|
||||||
use Doctrine\DBAL\Types\Types;
|
use Doctrine\DBAL\Types\Types;
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
use Doctrine\ORM\Mapping as ORM;
|
||||||
|
@ -11,8 +11,8 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\EventBundle\Export\Export;
|
namespace Chill\EventBundle\Export\Export;
|
||||||
|
|
||||||
|
use Chill\EventBundle\Entity\BudgetTypeEnum;
|
||||||
use Chill\EventBundle\Entity\Event;
|
use Chill\EventBundle\Entity\Event;
|
||||||
use Chill\EventBundle\Entity\EventBudgetElement;
|
|
||||||
use Chill\EventBundle\Export\Declarations;
|
use Chill\EventBundle\Export\Declarations;
|
||||||
use Chill\EventBundle\Repository\EventBudgetElementRepository;
|
use Chill\EventBundle\Repository\EventBudgetElementRepository;
|
||||||
use Chill\EventBundle\Repository\EventThemeRepository;
|
use Chill\EventBundle\Repository\EventThemeRepository;
|
||||||
@ -45,7 +45,8 @@ class ListEvents implements ListInterface, GroupedExportInterface
|
|||||||
'event_moderator',
|
'event_moderator',
|
||||||
'event_participants_count',
|
'event_participants_count',
|
||||||
'event_location',
|
'event_location',
|
||||||
'event_budget_elements',
|
'event_budget_resources',
|
||||||
|
'event_budget_charges',
|
||||||
'event_animators',
|
'event_animators',
|
||||||
'event_themes',
|
'event_themes',
|
||||||
];
|
];
|
||||||
@ -136,33 +137,6 @@ class ListEvents implements ListInterface, GroupedExportInterface
|
|||||||
'event_moderator' => fn ($value) => '_header' === $value ? 'Moderator' : $value,
|
'event_moderator' => fn ($value) => '_header' === $value ? 'Moderator' : $value,
|
||||||
'event_participants_count' => fn ($value) => '_header' === $value ? 'Participants Count' : $value,
|
'event_participants_count' => fn ($value) => '_header' === $value ? 'Participants Count' : $value,
|
||||||
'event_location' => fn ($value) => '_header' === $value ? 'Location' : $value,
|
'event_location' => fn ($value) => '_header' === $value ? 'Location' : $value,
|
||||||
'event_budget_elements' => function ($value) use ($key) {
|
|
||||||
if ('_header' === $value) {
|
|
||||||
return 'export.event.list.'.$key;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$ids = json_decode((string) $value, true, 512, JSON_THROW_ON_ERROR);
|
|
||||||
|
|
||||||
if (!is_array($ids)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$elements = $this->eventBudgetElementRepository->findBy(['id' => $ids]);
|
|
||||||
|
|
||||||
return implode(
|
|
||||||
' | ',
|
|
||||||
array_map(function ($element) {
|
|
||||||
$kindName = $this->translatableStringHelper->localize($element->getKind()->getName());
|
|
||||||
$amount = number_format($element->getAmount(), 2, '.', '');
|
|
||||||
|
|
||||||
return sprintf('%s: %s€', $kindName, $amount);
|
|
||||||
}, $elements)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
'event_animators' => $this->labelThirdPartyHelper->getLabelMulti($key, $values, 'export.list.acp.'.$key),
|
'event_animators' => $this->labelThirdPartyHelper->getLabelMulti($key, $values, 'export.list.acp.'.$key),
|
||||||
'event_themes' => function ($value) use ($key) {
|
'event_themes' => function ($value) use ($key) {
|
||||||
if ('_header' === $value) {
|
if ('_header' === $value) {
|
||||||
@ -181,6 +155,49 @@ class ListEvents implements ListInterface, GroupedExportInterface
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
'event_budget_resources' => function ($value) {
|
||||||
|
if ('_header' === $value) {
|
||||||
|
return 'Resources Budget';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$value) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$ids = explode(',', $value);
|
||||||
|
$ids = json_decode($value, true, 512, JSON_THROW_ON_ERROR);
|
||||||
|
$elements = $this->eventBudgetElementRepository->findBy(['id' => $ids]);
|
||||||
|
|
||||||
|
return implode('|', array_map(function ($element) {
|
||||||
|
$name = $this->translatableStringHelper->localize($element->getKind()->getName());
|
||||||
|
$amount = number_format($element->getAmount(), 2, '.', '');
|
||||||
|
|
||||||
|
return $name.': '.$amount;
|
||||||
|
}, $elements));
|
||||||
|
},
|
||||||
|
|
||||||
|
'event_budget_charges' => function ($value) {
|
||||||
|
if ('_header' === $value) {
|
||||||
|
return 'Charges Budget';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$value) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$ids = explode(',', $value);
|
||||||
|
$ids = json_decode($value, true, 512, JSON_THROW_ON_ERROR);
|
||||||
|
|
||||||
|
$elements = $this->eventBudgetElementRepository->findBy(['id' => $ids]);
|
||||||
|
|
||||||
|
return implode('|', array_map(function ($element) {
|
||||||
|
$name = $this->translatableStringHelper->localize($element->getKind()->getName());
|
||||||
|
$amount = number_format($element->getAmount(), 2, '.', '');
|
||||||
|
|
||||||
|
return $name.': '.$amount;
|
||||||
|
}, $elements));
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
default => fn ($value) => '_header' === $value ? $key : $value,
|
default => fn ($value) => '_header' === $value ? $key : $value,
|
||||||
};
|
};
|
||||||
@ -284,16 +301,29 @@ class ListEvents implements ListInterface, GroupedExportInterface
|
|||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'event_budget_elements':
|
case 'event_budget_resources':
|
||||||
$qb->addSelect(
|
$qb->addSelect(
|
||||||
'(SELECT AGGREGATE(e.id) FROM Chill\EventBundle\Entity\EventBudgetElement e WHERE e.event = event.id) AS event_budget_elements'
|
'(SELECT AGGREGATE(ebr.id)
|
||||||
|
FROM Chill\EventBundle\Entity\EventBudgetElement ebr
|
||||||
|
JOIN ebr.kind kr
|
||||||
|
WHERE ebr.event = event.id AND kr.type = :resource_type) AS event_budget_resources'
|
||||||
);
|
);
|
||||||
|
$qb->setParameter('resource_type', BudgetTypeEnum::RESOURCE->value);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'event_budget_charges':
|
||||||
|
$qb->addSelect(
|
||||||
|
'(SELECT AGGREGATE(ebc.id)
|
||||||
|
FROM Chill\EventBundle\Entity\EventBudgetElement ebc
|
||||||
|
JOIN ebc.kind kc
|
||||||
|
WHERE ebc.event = event.id AND kc.type = :charge_type) AS event_budget_charges'
|
||||||
|
);
|
||||||
|
$qb->setParameter('charge_type', BudgetTypeEnum::CHARGE->value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return $qb;
|
return $qb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user