- {% if entity.civility is not null %}
- {% if entity.civility.name|length > 0 %}
- {{ entity.civility.name|first }}
+ {% embed '@ChillMain/CRUD/_index.html.twig' %}
+
+ {% block index_header %}
+
+ {% endblock %}
+
+ {% block filter_order %}{{ filter_order|chill_render_filter_order_helper }}{% endblock %}
+
+ {% block table_entities_thead_tr %}
+
+ {% endblock %}
+
+ {% block table_entities_tbody %}
+ {% for entity in entities %}
+
+ {% endfor %}
+ {% endblock %}
+
+ {% block pagination %}{{ chill_pagination(paginator) }}{% endblock %}
+
+ {% block list_actions %}
+
+ {% endblock list_actions %}
+
+ {% endembed %}
{% endblock %}
diff --git a/src/Bundle/ChillMainBundle/Resources/views/UserJob/index.html.twig b/src/Bundle/ChillMainBundle/Resources/views/UserJob/index.html.twig
index 3d56265dc..e8ea9ec38 100644
--- a/src/Bundle/ChillMainBundle/Resources/views/UserJob/index.html.twig
+++ b/src/Bundle/ChillMainBundle/Resources/views/UserJob/index.html.twig
@@ -2,12 +2,14 @@
{% block admin_content %}
{% embed '@ChillMain/CRUD/_index.html.twig' %}
+
{% block table_entities_thead_tr %}
{% endblock %}
+
{% block table_entities_tbody %}
{% for entity in entities %}
{% endfor %}
{% endblock %}
-
+
{% block actions_before %}
{% endblock %}
+
{% endembed %}
{% endblock %}
diff --git a/src/Bundle/ChillMainBundle/Resources/views/Workflow/_attachment.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Workflow/_attachment.html.twig
index b825e4d43..24cf3cab4 100644
--- a/src/Bundle/ChillMainBundle/Resources/views/Workflow/_attachment.html.twig
+++ b/src/Bundle/ChillMainBundle/Resources/views/Workflow/_attachment.html.twig
@@ -1,4 +1,7 @@
-{# TODO Adapt condition #}
+{# TODO
+ Check if this template is used
+ Adapt condition or Delete it
+#}
{% if random(1) == 0 %}
{# For a document #}
@@ -22,7 +25,7 @@
{# For an action #}
+
{# dynamic insertion
::: TODO delete all static insertion, remove condition and pass work object in inclusion
#}{% if dynamic is defined %}
diff --git a/src/Bundle/ChillMainBundle/Resources/views/Workflow/index.html.twig b/src/Bundle/ChillMainBundle/Resources/views/Workflow/index.html.twig
index 1a6f3103b..782eae136 100644
--- a/src/Bundle/ChillMainBundle/Resources/views/Workflow/index.html.twig
+++ b/src/Bundle/ChillMainBundle/Resources/views/Workflow/index.html.twig
@@ -11,6 +11,7 @@
{{ encore_entry_script_tags('mod_entity_workflow_subscribe') }}
{{ encore_entry_script_tags('page_workflow_show') }}
{{ encore_entry_script_tags('mod_wopi_link') }}
+ {{ encore_entry_script_tags('mod_document_action_buttons_group') }}
{% endblock %}
{% block css %}
@@ -19,6 +20,7 @@
{{ encore_entry_link_tags('mod_entity_workflow_subscribe') }}
{{ encore_entry_link_tags('page_workflow_show') }}
{{ encore_entry_link_tags('mod_wopi_link') }}
+ {{ encore_entry_link_tags('mod_document_action_buttons_group') }}
{% endblock %}
{% import '@ChillMain/Workflow/macro_breadcrumb.html.twig' as macro %}
diff --git a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLanguageMenuBuilder.php b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLanguageMenuBuilder.php
index a13b33a1e..0d91a0438 100644
--- a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLanguageMenuBuilder.php
+++ b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLanguageMenuBuilder.php
@@ -40,7 +40,6 @@ class AdminLanguageMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 1200,
- 'icons' => ['globe-w'],
]);
$menu->addChild('Language list', [
'route' => 'chill_crud_main_language_index',
diff --git a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLocationMenuBuilder.php b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLocationMenuBuilder.php
index 081d5d84a..b69399daf 100644
--- a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLocationMenuBuilder.php
+++ b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminLocationMenuBuilder.php
@@ -40,7 +40,6 @@ class AdminLocationMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 1300,
- 'icons' => ['map-marker'],
]);
$menu->addChild('Location type list', [
diff --git a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminUserMenuBuilder.php b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminUserMenuBuilder.php
index 96fdcb60d..7bd23c81f 100644
--- a/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminUserMenuBuilder.php
+++ b/src/Bundle/ChillMainBundle/Routing/MenuBuilder/AdminUserMenuBuilder.php
@@ -46,7 +46,6 @@ class AdminUserMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 1000,
- 'icons' => ['key'],
]);
$menu->addChild('Center list', [
diff --git a/src/Bundle/ChillMainBundle/translations/messages.fr.yml b/src/Bundle/ChillMainBundle/translations/messages.fr.yml
index f779cf87f..63e93891f 100644
--- a/src/Bundle/ChillMainBundle/translations/messages.fr.yml
+++ b/src/Bundle/ChillMainBundle/translations/messages.fr.yml
@@ -41,6 +41,7 @@ Last updated on: Dernière mise à jour le
by_user: "par "
lifecycleUpdate: Evenements de création et mise à jour
address_fields: Données liées à l'adresse
+Datas: Données
inactive: inactif
@@ -70,6 +71,7 @@ Centers: Centres
center: centre
comment: commentaire
Comment: Commentaire
+Comments: Commentaires
Pinned comment: Commentaire épinglé
Any comment: Aucun commentaire
Read more: Lire la suite
@@ -227,6 +229,7 @@ Create a new circle: Créer un nouveau cercle
#admin section for location
Location: Localisation
+pick location: Localisation
Location type list: Liste des types de localisation
Create a new location type: Créer un nouveau type de localisation
Available for users: Disponible aux utilisateurs
diff --git a/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php b/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php
index 7b77252be..8d15ca30f 100644
--- a/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php
+++ b/src/Bundle/ChillPersonBundle/Controller/AccompanyingCourseWorkController.php
@@ -178,6 +178,27 @@ class AccompanyingCourseWorkController extends AbstractController
]);
}
+ /**
+ * @Route(
+ * "{_locale}/person/accompanying-period/work/{id}/show",
+ * name="chill_person_accompanying_period_work_show",
+ * methods={"GET"}
+ * )
+ */
+ public function showWork(AccompanyingPeriodWork $work): Response
+ {
+ if (null === $work) {
+ throw $this->createNotFoundException('Unable to find Work entity.');
+ }
+
+ $this->denyAccessUnlessGranted(AccompanyingPeriodWorkVoter::SEE, $work);
+
+ return $this->render('@ChillPerson/AccompanyingCourseWork/show.html.twig', [
+ 'accompanyingCourse' => $work->getAccompanyingPeriod(),
+ 'work' => $work,
+ ]);
+ }
+
private function createDeleteForm(int $id): Form
{
$params = [];
diff --git a/src/Bundle/ChillPersonBundle/Controller/SocialWorkSocialActionApiController.php b/src/Bundle/ChillPersonBundle/Controller/SocialWorkSocialActionApiController.php
index a0d15b6db..3ae5c5b7c 100644
--- a/src/Bundle/ChillPersonBundle/Controller/SocialWorkSocialActionApiController.php
+++ b/src/Bundle/ChillPersonBundle/Controller/SocialWorkSocialActionApiController.php
@@ -14,6 +14,7 @@ namespace Chill\PersonBundle\Controller;
use Chill\MainBundle\CRUD\Controller\ApiController;
use Chill\MainBundle\Pagination\PaginatorFactory;
use Chill\MainBundle\Serializer\Model\Collection;
+use Chill\PersonBundle\Entity\SocialWork\SocialAction;
use Chill\PersonBundle\Repository\SocialWork\SocialIssueRepository;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
@@ -41,7 +42,12 @@ class SocialWorkSocialActionApiController extends ApiController
throw $this->createNotFoundException('socialIssue not found');
}
- $socialActions = $socialIssue->getRecursiveSocialActions();
+ $socialActions = $socialIssue->getRecursiveSocialActions()->toArray();
+
+ usort($socialActions, static function (SocialAction $sa, SocialAction $sb) {
+ return $sa->getOrdering() <=> $sb->getOrdering();
+ });
+
$pagination = $this->paginator->create(count($socialActions));
// max one page
$pagination->setItemsPerPage(count($socialActions));
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/CountSocialWorkActions.php b/src/Bundle/ChillPersonBundle/Export/Export/CountAccompanyingPeriodWork.php
similarity index 97%
rename from src/Bundle/ChillPersonBundle/Export/Export/CountSocialWorkActions.php
rename to src/Bundle/ChillPersonBundle/Export/Export/CountAccompanyingPeriodWork.php
index 0aaf526cc..40253ea0b 100644
--- a/src/Bundle/ChillPersonBundle/Export/Export/CountSocialWorkActions.php
+++ b/src/Bundle/ChillPersonBundle/Export/Export/CountAccompanyingPeriodWork.php
@@ -24,7 +24,7 @@ use Doctrine\ORM\QueryBuilder;
use LogicException;
use Symfony\Component\Form\FormBuilderInterface;
-class CountSocialWorkActions implements ExportInterface, GroupedExportInterface
+class CountAccompanyingPeriodWork implements ExportInterface, GroupedExportInterface
{
protected EntityManagerInterface $em;
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php b/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php
index 28ad94bd3..8c96906fc 100644
--- a/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php
+++ b/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriod.php
@@ -19,7 +19,8 @@ use Chill\MainBundle\Export\Helper\DateTimeHelper;
use Chill\MainBundle\Export\Helper\ExportAddressHelper;
use Chill\MainBundle\Export\Helper\UserHelper;
use Chill\MainBundle\Export\ListInterface;
-use Chill\MainBundle\Form\Type\ChillDateType;
+use Chill\MainBundle\Form\Type\PickRollingDateType;
+use Chill\MainBundle\Service\RollingDate\RollingDateConverterInterface;
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
use Chill\PersonBundle\Entity\AccompanyingPeriod;
use Chill\PersonBundle\Entity\AccompanyingPeriodParticipation;
@@ -87,6 +88,8 @@ class ListAccompanyingPeriod implements ListInterface, GroupedExportInterface
private PersonRepository $personRepository;
+ private RollingDateConverterInterface $rollingDateConverter;
+
private SocialIssueRender $socialIssueRender;
private SocialIssueRepository $socialIssueRepository;
@@ -110,6 +113,7 @@ class ListAccompanyingPeriod implements ListInterface, GroupedExportInterface
SocialIssueRepository $socialIssueRepository,
SocialIssueRender $socialIssueRender,
TranslatableStringHelperInterface $translatableStringHelper,
+ RollingDateConverterInterface $rollingDateConverter,
UserHelper $userHelper
) {
$this->addressHelper = $addressHelper;
@@ -122,14 +126,14 @@ class ListAccompanyingPeriod implements ListInterface, GroupedExportInterface
$this->thirdPartyRender = $thirdPartyRender;
$this->thirdPartyRepository = $thirdPartyRepository;
$this->translatableStringHelper = $translatableStringHelper;
+ $this->rollingDateConverter = $rollingDateConverter;
$this->userHelper = $userHelper;
}
public function buildForm(FormBuilderInterface $builder)
{
$builder
- ->add('calc_date', ChillDateType::class, [
- 'input' => 'datetime_immutable',
+ ->add('calc_date', PickRollingDateType::class, [
'label' => 'export.list.acp.Date of calculation for associated elements',
'help' => 'export.list.acp.The associated referree, localisation, and other elements will be valid at this date',
'required' => true,
@@ -306,7 +310,7 @@ class ListAccompanyingPeriod implements ListInterface, GroupedExportInterface
->setParameter('list_acp_step', AccompanyingPeriod::STEP_DRAFT)
->setParameter('authorized_centers', $centers);
- $this->addSelectClauses($qb, $data['calc_date']);
+ $this->addSelectClauses($qb, $this->rollingDateConverter->convert($data['calc_date']));
return $qb;
}
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriodWork.php b/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriodWork.php
new file mode 100644
index 000000000..d0c1863c3
--- /dev/null
+++ b/src/Bundle/ChillPersonBundle/Export/Export/ListAccompanyingPeriodWork.php
@@ -0,0 +1,396 @@
+entityManager = $entityManager;
+ $this->dateTimeHelper = $dateTimeHelper;
+ $this->userHelper = $userHelper;
+ $this->personHelper = $personHelper;
+ $this->thirdPartyHelper = $thirdPartyHelper;
+ $this->translatableStringExportLabelHelper = $translatableStringExportLabelHelper;
+ $this->socialIssueRender = $socialIssueRender;
+ $this->socialIssueRepository = $socialIssueRepository;
+ $this->socialActionRender = $socialActionRender;
+ $this->rollingDateConverter = $rollingDateConverter;
+ $this->aggregateStringHelper = $aggregateStringHelper;
+ $this->socialActionRepository = $socialActionRepository;
+ }
+
+ public function buildForm(FormBuilderInterface $builder)
+ {
+ $builder
+ ->add('calc_date', PickRollingDateType::class, [
+ 'label' => 'export.list.acpw.Date of calculation for associated elements',
+ 'help' => 'export.list.acpw.help_description',
+ 'required' => true,
+ 'data' => new RollingDate(RollingDate::T_TODAY),
+ ]);
+ }
+
+ public function getAllowedFormattersTypes()
+ {
+ return [FormatterInterface::TYPE_LIST];
+ }
+
+ public function getDescription(): string
+ {
+ return 'export.list.acpw.List description';
+ }
+
+ public function getGroup(): string
+ {
+ return 'Exports of social work actions';
+ }
+
+ public function getLabels($key, array $values, $data)
+ {
+ switch ($key) {
+ case 'startDate':
+ case 'endDate':
+ case 'createdAt':
+ case 'updatedAt':
+ return $this->dateTimeHelper->getLabel('export.list.acpw.' . $key);
+
+ case 'socialAction':
+ return function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.acpw.' . $key;
+ }
+
+ if (null === $value) {
+ return '';
+ }
+
+ return $this->socialActionRender->renderString(
+ $this->socialActionRepository->find($value),
+ []
+ );
+ };
+
+ case 'socialIssue':
+ return function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.acpw.' . $key;
+ }
+
+ if (null === $value) {
+ return '';
+ }
+
+ return $this->socialIssueRender->renderString(
+ $this->socialIssueRepository->find($value),
+ []
+ );
+ };
+
+ case 'createdBy':
+ case 'updatedBy':
+ case 'acp_user':
+ return $this->userHelper->getLabel($key, $values, 'export.list.acpw.' . $key);
+
+ case 'referrers':
+ //$date = $this->rollDateConverter->convert($data['calc_date'])->format('d/m/Y');
+ return $this->userHelper->getLabel($key, $values, 'export.list.acpw.' . $key);
+
+ case 'personsName':
+ return $this->personHelper->getLabelMulti($key, $values, 'export.list.acpw.' . $key);
+
+ case 'handlingThierParty':
+ return $this->thirdPartyHelper->getLabel($key, $values, 'export.list.acpw.' . $key);
+
+ case 'thirdParties':
+ return $this->thirdPartyHelper->getLabelMulti($key, $values, 'export.list.acpw.' . $key);
+
+ case 'personsId':
+ case 'goalsId':
+ case 'goalResultsId':
+ case 'resultsId':
+ case 'evaluationsId':
+ return $this->aggregateStringHelper->getLabelMulti($key, $values, 'export.list.acpw.' . $key);
+
+ case 'goalsTitle':
+ case 'goalResultsTitle':
+ case 'resultsTitle':
+ case 'evaluationsTitle':
+ return $this->translatableStringExportLabelHelper->getLabelMulti($key, $values, 'export.list.acpw.' . $key);
+
+ default:
+ return static function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.acpw.' . $key;
+ }
+
+ if (null === $value) {
+ return '';
+ }
+
+ return $value;
+ };
+ }
+ }
+
+ public function getQueryKeys($data)
+ {
+ return self::FIELDS;
+ }
+
+ public function getResult($query, $data)
+ {
+ return $query->getQuery()->getResult(AbstractQuery::HYDRATE_SCALAR);
+ }
+
+ public function getTitle(): string
+ {
+ return 'export.list.acpw.List of accompanying period works';
+ }
+
+ public function getType(): string
+ {
+ return Declarations::SOCIAL_WORK_ACTION_TYPE;
+ }
+
+ public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
+ {
+ $centers = array_map(static function ($el) {
+ return $el['center'];
+ }, $acl);
+
+ $qb = $this->entityManager->createQueryBuilder();
+
+ $qb
+ ->from(AccompanyingPeriodWork::class, 'acpw')
+ ->distinct()
+ ->select('acpw.id AS id')
+ ->join('acpw.accompanyingPeriod', 'acp')
+ ->join('acp.participations', 'acppart')
+ ->join('acppart.person', 'person')
+ // ignore participation which didn't last one day, at least
+ ->andWhere('acppart.startDate != acppart.endDate OR acppart.endDate IS NULL')
+ // get participants at the given date
+ ->andWhere('acppart.startDate <= :calc_date AND (acppart.endDate > :calc_date OR acppart.endDate IS NULL)')
+ ->andWhere(
+ $qb->expr()->exists(
+ 'SELECT 1 FROM ' . PersonCenterHistory::class . ' acl_count_person_history WHERE acl_count_person_history.person = person
+ AND acl_count_person_history.center IN (:authorized_centers)
+ '
+ )
+ )
+ ->setParameter('authorized_centers', $centers)
+ ->setParameter('calc_date', $this->rollingDateConverter->convert($data['calc_date']));
+
+ $this->addSelectClauses($qb, $this->rollingDateConverter->convert($data['calc_date']));
+
+ return $qb;
+ }
+
+ public function requiredRole(): string
+ {
+ return AccompanyingPeriodVoter::STATS;
+ }
+
+ public function supportsModifiers(): array
+ {
+ return [
+ Declarations::SOCIAL_WORK_ACTION_TYPE,
+ Declarations::ACP_TYPE,
+ Declarations::PERSON_TYPE,
+ ];
+ }
+
+ private function addSelectClauses(QueryBuilder $qb, DateTimeImmutable $calcDate): void
+ {
+ // add regular fields
+ foreach ([
+ 'startDate',
+ 'endDate',
+ 'note',
+ 'createdAt',
+ 'updatedAt',
+ ] as $field) {
+ $qb->addSelect(sprintf('acpw.%s AS %s', $field, $field));
+ }
+
+ // those with identity
+ foreach ([
+ 'createdBy',
+ 'updatedBy',
+ 'handlingThierParty',
+ ] as $field) {
+ $qb->addSelect(sprintf('IDENTITY(acpw.%s) AS %s', $field, $field));
+ }
+
+ // join socialaction
+ $qb
+ ->join('acpw.socialAction', 'sa')
+ ->addSelect('sa.id AS socialActionId')
+ ->addSelect('sa.id AS socialAction')
+ ->addSelect('IDENTITY(sa.issue) AS socialIssue');
+
+ // join acp
+ $qb
+ ->addSelect('acp.id AS acp_id')
+ ->addSelect('IDENTITY(acp.user) AS acp_user');
+
+ // persons
+ $qb
+ ->addSelect('(SELECT AGGREGATE(person_acpw_member.id) FROM ' . Person::class . ' person_acpw_member '
+ . 'WHERE person_acpw_member MEMBER OF acpw.persons) AS personsId')
+ ->addSelect('(SELECT AGGREGATE(person1_acpw_member.id) FROM ' . Person::class . ' person1_acpw_member '
+ . 'WHERE person1_acpw_member MEMBER OF acpw.persons) AS personsName');
+
+ // referrers => at date XXXX
+ $qb
+ ->addSelect('(SELECT IDENTITY(history.user) FROM ' . UserHistory::class . ' history ' .
+ 'WHERE history.accompanyingPeriod = acp AND history.startDate <= :calcDate AND (history.endDate IS NULL OR history.endDate > :calcDate)) AS referrers');
+
+ // thirdparties
+ $qb
+ ->addSelect('(SELECT AGGREGATE(tp.id) FROM ' . ThirdParty::class . ' tp '
+ . 'WHERE tp MEMBER OF acpw.thirdParties) AS thirdParties');
+
+ // goals
+ $qb
+ ->addSelect('(SELECT AGGREGATE(IDENTITY(goal.goal)) FROM ' . AccompanyingPeriodWorkGoal::class . ' goal '
+ . 'WHERE goal MEMBER OF acpw.goals) AS goalsId')
+ ->addSelect('(SELECT AGGREGATE(g.title) FROM ' . AccompanyingPeriodWorkGoal::class . ' goal1 '
+ . 'LEFT JOIN ' . Goal::class . ' g WITH goal1.goal = g.id WHERE goal1 MEMBER OF acpw.goals) AS goalsTitle');
+
+ // goals results
+ $qb
+ ->addSelect('(SELECT AGGREGATE(wr.id) FROM ' . Result::class . ' wr '
+ . 'JOIN ' . AccompanyingPeriodWorkGoal::class . ' wg WITH wr MEMBER OF wg.results '
+ . 'WHERE wg MEMBER OF acpw.goals) AS goalResultsId')
+ ->addSelect('(SELECT AGGREGATE(wr1.title) FROM ' . Result::class . ' wr1 '
+ . 'JOIN ' . AccompanyingPeriodWorkGoal::class . ' wg1 WITH wr1 MEMBER OF wg1.results '
+ . 'WHERE wg1 MEMBER OF acpw.goals) AS goalResultsTitle');
+
+ // results
+ $qb
+ ->addSelect('(SELECT AGGREGATE(result.id) FROM ' . Result::class . ' result '
+ . 'WHERE result MEMBER OF acpw.results ) AS resultsId ')
+ ->addSelect('(SELECT AGGREGATE (result1.title) FROM ' . Result::class . ' result1 '
+ . 'WHERE result1 MEMBER OF acpw.results ) AS resultsTitle ');
+
+ // evaluations
+ $qb
+ ->addSelect('(SELECT AGGREGATE(IDENTITY(we.evaluation)) FROM ' . AccompanyingPeriodWorkEvaluation::class . ' we '
+ . 'WHERE we MEMBER OF acpw.accompanyingPeriodWorkEvaluations ) AS evaluationsId ')
+ ->addSelect('(SELECT AGGREGATE(ev.title) FROM ' . AccompanyingPeriodWorkEvaluation::class . ' we1 '
+ . 'LEFT JOIN ' . Evaluation::class . ' ev WITH we1.evaluation = ev.id '
+ . 'WHERE we1 MEMBER OF acpw.accompanyingPeriodWorkEvaluations ) AS evaluationsTitle ');
+
+ $qb->setParameter('calcDate', $calcDate);
+ }
+}
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php
new file mode 100644
index 000000000..e7d1e5dfd
--- /dev/null
+++ b/src/Bundle/ChillPersonBundle/Export/Export/ListEvaluation.php
@@ -0,0 +1,336 @@
+entityManager = $entityManager;
+ $this->socialIssueRender = $socialIssueRender;
+ $this->socialIssueRepository = $socialIssueRepository;
+ $this->socialActionRender = $socialActionRender;
+ $this->socialActionRepository = $socialActionRepository;
+ $this->userHelper = $userHelper;
+ $this->personHelper = $personHelper;
+ $this->dateTimeHelper = $dateTimeHelper;
+ $this->translatableStringExportLabelHelper = $translatableStringExportLabelHelper;
+ $this->aggregateStringHelper = $aggregateStringHelper;
+ $this->rollingDateConverter = $rollingDateConverter;
+ }
+
+ public function buildForm(FormBuilderInterface $builder)
+ {
+ $builder
+ ->add('calc_date', PickRollingDateType::class, [
+ 'label' => 'export.list.eval.Date of calculation for associated elements',
+ 'help' => 'export.list.eval.help_description',
+ 'required' => true,
+ 'data' => new RollingDate(RollingDate::T_TODAY),
+ ]);
+ }
+
+ public function getAllowedFormattersTypes()
+ {
+ return [FormatterInterface::TYPE_LIST];
+ }
+
+ public function getDescription(): string
+ {
+ return 'export.list.eval.Generate a list of evaluations, filtered on different parameters';
+ }
+
+ public function getGroup(): string
+ {
+ return 'Exports of evaluations';
+ }
+
+ public function getLabels($key, array $values, $data)
+ {
+ switch ($key) {
+ case 'startDate':
+ case 'endDate':
+ case 'maxDate':
+ case 'acpw_startDate':
+ case 'acpw_endDate':
+ case 'createdAt':
+ case 'updatedAt':
+ return $this->dateTimeHelper->getLabel('export.list.eval.' . $key);
+
+ case 'acpw_socialaction':
+ return function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.eval.' . $key;
+ }
+
+ if (null === $value || '' === $value) {
+ return '';
+ }
+
+ return $this->socialActionRender->renderString(
+ $this->socialActionRepository->find($value),
+ []
+ );
+ };
+
+ case 'acpw_socialissue':
+ return function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.eval.' . $key;
+ }
+
+ if (null === $value || '' === $value) {
+ return '';
+ }
+
+ return $this->socialIssueRender->renderString(
+ $this->socialIssueRepository->find($value),
+ []
+ );
+ };
+
+ case 'createdBy':
+ case 'updatedBy':
+ case 'acpw_acp_user':
+ return $this->userHelper->getLabel($key, $values, 'export.list.eval.' . $key);
+
+ case 'acpw_referrers':
+ return $this->userHelper->getLabel($key, $values, 'export.list.eval.' . $key);
+
+ case 'acpw_persons_id':
+ return $this->aggregateStringHelper->getLabelMulti($key, $values, 'export.list.eval.' . $key);
+
+ case 'acpw_persons':
+ return $this->personHelper->getLabelMulti($key, $values, 'export.list.eval.' . $key);
+
+ case 'eval_title':
+ return $this->translatableStringExportLabelHelper
+ ->getLabel($key, $values, 'export.list.eval.' . $key);
+
+ default:
+ return static function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.eval.' . $key;
+ }
+
+ if (null === $value) {
+ return '';
+ }
+
+ return $value;
+ };
+ }
+ }
+
+ public function getQueryKeys($data)
+ {
+ return self::FIELDS;
+ }
+
+ public function getResult($query, $data)
+ {
+ return $query->getQuery()->getResult(AbstractQuery::HYDRATE_SCALAR);
+ }
+
+ public function getTitle(): string
+ {
+ return 'export.list.eval.List of evaluations';
+ }
+
+ public function getType(): string
+ {
+ return Declarations::EVAL_TYPE;
+ }
+
+ public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
+ {
+ $centers = array_map(static function ($el) {
+ return $el['center'];
+ }, $acl);
+
+ $qb = $this->entityManager->createQueryBuilder();
+
+ $qb
+ ->from(AccompanyingPeriodWorkEvaluation::class, 'workeval')
+ ->distinct()
+ ->select('workeval.id AS id')
+ ->join('workeval.accompanyingPeriodWork', 'acpw')
+ ->join('acpw.accompanyingPeriod', 'acp')
+ ->join('acp.participations', 'acppart')
+ ->join('acppart.person', 'person')
+ // ignore participation which didn't last one day, at least
+ ->andWhere('acppart.startDate != acppart.endDate OR acppart.endDate IS NULL')
+ // get participants at the given date
+ ->andWhere('acppart.startDate <= :calc_date AND (acppart.endDate > :calc_date OR acppart.endDate IS NULL)')
+ ->andWhere(
+ $qb->expr()->exists(
+ 'SELECT 1 FROM ' . PersonCenterHistory::class . ' acl_count_person_history WHERE acl_count_person_history.person = person
+ AND acl_count_person_history.center IN (:authorized_centers)
+ '
+ )
+ )
+ ->setParameter('authorized_centers', $centers)
+ ->setParameter('calc_date', $this->rollingDateConverter->convert($data['calc_date']));
+
+ $this->addSelectClauses($qb, $this->rollingDateConverter->convert($data['calc_date']));
+
+ return $qb;
+ }
+
+ public function requiredRole(): string
+ {
+ return AccompanyingPeriodVoter::STATS;
+ }
+
+ public function supportsModifiers(): array
+ {
+ return [
+ Declarations::EVAL_TYPE,
+ Declarations::SOCIAL_WORK_ACTION_TYPE,
+ Declarations::ACP_TYPE,
+ Declarations::PERSON_TYPE,
+ ];
+ }
+
+ private function addSelectClauses(QueryBuilder $qb, DateTimeImmutable $calc_date): void
+ {
+ // add the regular fields
+ foreach (['startDate', 'endDate', 'maxDate', 'warningInterval', 'comment', 'createdAt', 'updatedAt'] as $field) {
+ $qb->addSelect(sprintf('workeval.%s AS %s', $field, $field));
+ }
+
+ // those with identity
+ foreach (['createdBy', 'updatedBy'] as $field) {
+ $qb->addSelect(sprintf('IDENTITY(workeval.%s) AS %s', $field, $field));
+ }
+
+ foreach (['id', 'startDate', 'endDate', 'note'] as $field) {
+ $qb->addSelect(sprintf('acpw.%s AS %s', $field, 'acpw_' . $field));
+ }
+
+ // join socialaction
+ $qb
+ ->leftJoin('acpw.socialAction', 'sa')
+ ->addSelect('sa.id AS acpw_socialaction_id')
+ ->addSelect('sa.id AS acpw_socialaction')
+ ->addSelect('IDENTITY(sa.issue) AS acpw_socialissue');
+
+ // join acp
+ $qb
+ ->addSelect('acp.id AS acpw_acp_id')
+ ->addSelect('IDENTITY(acp.user) AS acpw_acp_user');
+
+ // referrers => at date XXXX
+ $qb
+ ->addSelect('(SELECT IDENTITY(history.user) FROM ' . UserHistory::class . ' history ' .
+ 'WHERE history.accompanyingPeriod = acp AND history.startDate <= :calc_date AND (history.endDate IS NULL OR history.endDate > :calc_date)) AS acpw_referrers');
+
+ // persons
+ $qb
+ ->addSelect('(SELECT AGGREGATE(person_acpw_member.id) FROM ' . Person::class . ' person_acpw_member '
+ . 'WHERE person_acpw_member MEMBER OF acpw.persons) AS acpw_persons_id')
+ ->addSelect('(SELECT AGGREGATE(person1_acpw_member.id) FROM ' . Person::class . ' person1_acpw_member '
+ . 'WHERE person1_acpw_member MEMBER OF acpw.persons) AS acpw_persons');
+
+ // join evaluation
+ $qb
+ ->leftJoin('workeval.evaluation', 'eval')
+ ->addSelect('eval.title AS eval_title');
+ }
+}
diff --git a/src/Bundle/ChillPersonBundle/Export/Export/ListHouseholdInPeriod.php b/src/Bundle/ChillPersonBundle/Export/Export/ListHouseholdInPeriod.php
new file mode 100644
index 000000000..fc72de77b
--- /dev/null
+++ b/src/Bundle/ChillPersonBundle/Export/Export/ListHouseholdInPeriod.php
@@ -0,0 +1,251 @@
+addressHelper = $addressHelper;
+ $this->aggregateStringHelper = $aggregateStringHelper;
+ $this->entityManager = $entityManager;
+ $this->rollingDateConverter = $rollingDateConverter;
+ $this->translatableStringHelper = $translatableStringHelper;
+ }
+
+ public function buildForm(FormBuilderInterface $builder)
+ {
+ $builder
+ ->add('calc_date', PickRollingDateType::class, [
+ 'label' => 'export.list.household.Date of calculation for associated elements',
+ 'help' => 'export.list.household.help_description',
+ 'data' => new RollingDate(RollingDate::T_TODAY),
+ 'required' => true,
+ ]);
+ }
+
+ public function getAllowedFormattersTypes()
+ {
+ return [FormatterInterface::TYPE_LIST];
+ }
+
+ public function getDescription(): string
+ {
+ return 'export.list.household.List description';
+ }
+
+ public function getGroup(): string
+ {
+ return 'Exports of households';
+ }
+
+ public function getLabels($key, array $values, $data)
+ {
+ if (substr($key, 0, strlen('address_fields')) === 'address_fields') {
+ return $this->addressHelper->getLabel($key, $values, $data, 'address_fields');
+ }
+
+ switch ($key) {
+ case 'membersId':
+ case 'membersName':
+ return $this->aggregateStringHelper->getLabelMulti($key, $values, 'export.list.household.' . $key);
+
+ case 'compositionType':
+ //dump($values);
+ return $this->translatableStringHelper->getLabel($key, $values, 'export.list.household.' . $key);
+
+ default:
+ return static function ($value) use ($key) {
+ if ('_header' === $value) {
+ return 'export.list.household.' . $key;
+ }
+
+ return (string) $value;
+ };
+ }
+ }
+
+ public function getQueryKeys($data): array
+ {
+ return array_merge(
+ self::FIELDS,
+ $this->addressHelper->getKeys(ExportAddressHelper::F_ALL, 'address_fields')
+ );
+ }
+
+ public function getResult($query, $data)
+ {
+ return $query->getQuery()->getResult(AbstractQuery::HYDRATE_SCALAR);
+ }
+
+ public function getTitle(): string
+ {
+ return 'export.list.household.List household associated with accompanying period title';
+ }
+
+ public function getType(): string
+ {
+ return Declarations::HOUSEHOLD_TYPE;
+ }
+
+ public function initiateQuery(array $requiredModifiers, array $acl, array $data = [])
+ {
+ $centers = array_map(static function ($el) {
+ return $el['center'];
+ }, $acl);
+
+ $qb = $this->entityManager->createQueryBuilder();
+
+ $qb
+ ->from(Household::class, 'household')
+ ->distinct()
+ ->select('household.id AS id')
+ ->join('household.members', 'hmember')
+ ->join('hmember.person', 'person')
+ ->join('person.accompanyingPeriodParticipations', 'acppart')
+ ->join('acppart.accompanyingPeriod', 'acp')
+ ->andWhere('acppart.startDate != acppart.endDate OR acppart.endDate IS NULL')
+ ->andWhere(
+ $qb->expr()->exists(
+ 'SELECT 1 FROM ' . PersonCenterHistory::class . ' acl_count_person_history WHERE acl_count_person_history.person = person
+ AND acl_count_person_history.center IN (:authorized_centers)
+ '
+ )
+ )
+ ->andWhere('hmember.startDate <= :count_household_at_date AND (hmember.endDate IS NULL OR hmember.endDate > :count_household_at_date)')
+ ->setParameter('authorized_centers', $centers)
+ ->setParameter('count_household_at_date', $this->rollingDateConverter->convert($data['calc_date']));
+
+ $this->addSelectClauses($qb, $this->rollingDateConverter->convert($data['calc_date']));
+
+ return $qb;
+ }
+
+ public function requiredRole(): string
+ {
+ return HouseholdVoter::STATS;
+ }
+
+ public function supportsModifiers(): array
+ {
+ return [
+ Declarations::HOUSEHOLD_TYPE,
+ Declarations::ACP_TYPE,
+ Declarations::PERSON_TYPE,
+ ];
+ }
+
+ private function addSelectClauses(QueryBuilder $qb, DateTimeImmutable $calcDate): void
+ {
+ // members at date
+ $qb
+ ->addSelect('(SELECT COUNT(members0) FROM ' . HouseholdMember::class . ' members0 '
+ . 'WHERE members0.startDate <= :calcDate AND (members0.endDate IS NULL OR members0.endDate > :calcDate) '
+ . 'AND members0 MEMBER OF household.members) AS membersCount')
+
+ ->addSelect('(SELECT AGGREGATE(IDENTITY(members1.person)) FROM ' . HouseholdMember::class . ' members1 '
+ . 'WHERE members1.startDate <= :calcDate AND (members1.endDate IS NULL OR members1.endDate > :calcDate) '
+ . 'AND members1 MEMBER OF household.members) AS membersId')
+
+ ->addSelect("(SELECT AGGREGATE(CONCAT(person2.firstName, ' ', person2.lastName)) FROM " . HouseholdMember::class . ' members2 '
+ . 'JOIN members2.person person2 '
+ . 'WHERE members2.startDate <= :calcDate AND (members2.endDate IS NULL OR members2.endDate > :calcDate) '
+ . 'AND members2 MEMBER OF household.members) AS membersName');
+
+ // composition at date
+ $qb
+ ->addSelect('(SELECT compo.numberOfChildren FROM ' . HouseholdComposition::class . ' compo '
+ . 'WHERE compo.startDate <= :calcDate AND (compo.endDate IS NULL OR compo.endDate > :calcDate) '
+ . 'AND compo MEMBER OF household.compositions) AS compositionNumberOfChildren')
+
+ ->addSelect('(SELECT compo1.comment.comment FROM ' . HouseholdComposition::class . ' compo1 '
+ . 'WHERE compo1.startDate <= :calcDate AND (compo1.endDate IS NULL OR compo1.endDate > :calcDate) '
+ . 'AND compo1 MEMBER OF household.compositions) AS compositionComment')
+
+ ->addSelect('(
+ SELECT type2.label
+ FROM ' . HouseholdComposition::class . ' compo2
+ JOIN compo2.householdCompositionType type2
+ WHERE compo2.startDate <= :calcDate AND (compo2.endDate IS NULL OR compo2.endDate > :calcDate)
+ AND compo2 MEMBER OF household.compositions
+ ) AS compositionType');
+
+ // address at date
+ $qb
+ ->leftJoin('household.addresses', 'addresses')
+ ->andWhere(
+ $qb->expr()->andX(
+ $qb->expr()->lte('addresses.validFrom', ':calcDate'),
+ $qb->expr()->orX(
+ $qb->expr()->isNull('addresses.validTo'),
+ $qb->expr()->gt('addresses.validTo', ':calcDate')
+ )
+ )
+ );
+ $this->addressHelper->addSelectClauses(
+ ExportAddressHelper::F_ALL,
+ $qb,
+ 'addresses',
+ 'address_fields'
+ );
+
+ // inject date parameter
+ $qb->setParameter('calcDate', $calcDate);
+ }
+}
diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasTemporaryLocationFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasTemporaryLocationFilter.php
index 7aadde734..615ace4c6 100644
--- a/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasTemporaryLocationFilter.php
+++ b/src/Bundle/ChillPersonBundle/Export/Filter/AccompanyingCourseFilters/HasTemporaryLocationFilter.php
@@ -72,6 +72,7 @@ class HasTemporaryLocationFilter implements FilterInterface
{
$builder
->add('having_temporarily', ChoiceType::class, [
+ 'label' => 'export.filter.course.having_temporarily.label',
'choices' => [
'export.filter.course.having_temporarily.Having a temporarily location' => true,
'export.filter.course.having_temporarily.Having a person\'s location' => false,
diff --git a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php
index febc57a17..b7e9ff56e 100644
--- a/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php
+++ b/src/Bundle/ChillPersonBundle/Export/Filter/SocialWorkFilters/ReferrerFilter.php
@@ -11,13 +11,12 @@ declare(strict_types=1);
namespace Chill\PersonBundle\Export\Filter\SocialWorkFilters;
-use Chill\MainBundle\Entity\User;
use Chill\MainBundle\Export\FilterInterface;
+use Chill\MainBundle\Form\Type\PickUserDynamicType;
use Chill\MainBundle\Templating\Entity\UserRender;
use Chill\PersonBundle\Export\Declarations;
use Doctrine\ORM\Query\Expr\Andx;
use Doctrine\ORM\QueryBuilder;
-use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
use function in_array;
@@ -61,13 +60,8 @@ class ReferrerFilter implements FilterInterface
public function buildForm(FormBuilderInterface $builder)
{
- $builder->add('accepted_agents', EntityType::class, [
- 'class' => User::class,
- 'choice_label' => function (User $u) {
- return $this->userRender->renderString($u, []);
- },
+ $builder->add('accepted_agents', PickUserDynamicType::class, [
'multiple' => true,
- 'expanded' => true,
]);
}
diff --git a/src/Bundle/ChillPersonBundle/Menu/AdminAccompanyingCourseMenuBuilder.php b/src/Bundle/ChillPersonBundle/Menu/AdminAccompanyingCourseMenuBuilder.php
index f75d2844b..42c5dd4c2 100644
--- a/src/Bundle/ChillPersonBundle/Menu/AdminAccompanyingCourseMenuBuilder.php
+++ b/src/Bundle/ChillPersonBundle/Menu/AdminAccompanyingCourseMenuBuilder.php
@@ -39,7 +39,6 @@ class AdminAccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 2200,
- 'icons' => ['random'],
]);
$menu->addChild('person_admin.closing motives', [
diff --git a/src/Bundle/ChillPersonBundle/Menu/AdminHouseholdMenuBuilder.php b/src/Bundle/ChillPersonBundle/Menu/AdminHouseholdMenuBuilder.php
index 6a9e9dedc..0cbc48330 100644
--- a/src/Bundle/ChillPersonBundle/Menu/AdminHouseholdMenuBuilder.php
+++ b/src/Bundle/ChillPersonBundle/Menu/AdminHouseholdMenuBuilder.php
@@ -39,7 +39,6 @@ class AdminHouseholdMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 2100,
- 'icons' => ['home'],
]);
$menu->addChild('Position', [
diff --git a/src/Bundle/ChillPersonBundle/Menu/AdminPersonMenuBuilder.php b/src/Bundle/ChillPersonBundle/Menu/AdminPersonMenuBuilder.php
index 8459e4b89..ee2dad9dc 100644
--- a/src/Bundle/ChillPersonBundle/Menu/AdminPersonMenuBuilder.php
+++ b/src/Bundle/ChillPersonBundle/Menu/AdminPersonMenuBuilder.php
@@ -39,7 +39,6 @@ class AdminPersonMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 2000,
- 'icons' => ['child'],
]);
$menu->addChild('Civility', [
diff --git a/src/Bundle/ChillPersonBundle/Menu/AdminSocialWorkMenuBuilder.php b/src/Bundle/ChillPersonBundle/Menu/AdminSocialWorkMenuBuilder.php
index cec672dd2..2b98c98a6 100644
--- a/src/Bundle/ChillPersonBundle/Menu/AdminSocialWorkMenuBuilder.php
+++ b/src/Bundle/ChillPersonBundle/Menu/AdminSocialWorkMenuBuilder.php
@@ -39,7 +39,6 @@ class AdminSocialWorkMenuBuilder implements LocalMenuBuilderInterface
->setAttribute('class', 'list-group-item-header')
->setExtras([
'order' => 2300,
- 'icons' => ['handshake-o'],
]);
$menu->addChild('person_admin.social_action', [
diff --git a/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php b/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php
index 7de509f1f..e28832bf9 100644
--- a/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php
+++ b/src/Bundle/ChillPersonBundle/Repository/AccompanyingPeriodACLAwareRepository.php
@@ -187,8 +187,12 @@ final class AccompanyingPeriodACLAwareRepository implements AccompanyingPeriodAC
);
foreach ($scopes as $key => $scope) {
- $orx->add($qb->expr()->isMemberOf(':scope_' . $key, 'ap.scopes'));
+ $orx->add($qb->expr()->orX(
+ $qb->expr()->isMemberOf(':scope_' . $key, 'ap.scopes'),
+ $qb->expr()->eq('ap.user', ':user')
+ ));
$qb->setParameter('scope_' . $key, $scope);
+ $qb->setParameter('user', $this->security->getUser());
}
$qb->andWhere($orx);
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/accompanying_period_work.scss b/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/accompanying_period_work.scss
index ed474911f..eeb2eb2be 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/accompanying_period_work.scss
+++ b/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/accompanying_period_work.scss
@@ -1,13 +1,16 @@
-/// AccompanyingCourse Work list Page
-div.accompanying_course_work-list {
+/// AccompanyingCourse Work Pages
+div.accompanying-course-work {
table.obj-res-eval {
border-collapse: collapse;
border-radius: 5px;
width: 100%;
+ margin-top: 1em;
+ margin-bottom: 1em;
&, tr, th, td {
border: 1px solid lightgray;
padding: 0.3em;
+ background-color: $white;
}
th {
h4.title_label {
@@ -26,6 +29,11 @@ div.accompanying_course_work-list {
}
td.eval {
width: 100%;
+ div.download {
+ .row > * {
+ transform: scale(0.85);
+ }
+ }
}
}
@@ -47,10 +55,32 @@ div.accompanying_course_work-list {
}
}
+ div.item-bloc {
+ &.short {}
+ &.long {}
+ &.uniq {}
+ &.extended {
+ table.obj-res-eval {
+ margin-top: 0;
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+ &.colored {
+ background-color: $chill-llight-gray;
+ }
+ }
+
}
-div.flex-table div.item-bloc:nth-child(2n) table.obj-res-eval {
- &, tr, th, td {
- background-color: $chill-llight-gray;
+/// item-bloc with background-color altern: even case
+div.flex-table div.item-bloc:nth-child(2n) {
+
+ // set table background
+ table.obj-res-eval {
+ &, tr, th, td {
+ background-color: $chill-llight-gray;
+ }
}
}
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/badge.scss b/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/badge.scss
index b359f84d6..072f13949 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/badge.scss
+++ b/src/Bundle/ChillPersonBundle/Resources/public/chill/scss/badge.scss
@@ -128,7 +128,7 @@ ul.columns { // XS:1 SM:2 MD:1 LG:2 XL:2 XXL:2
}
/// dashboard_like_badge in AccompanyingCourse Work list Page
-div[class*='accompanying_course_work'] {
+div[class*='accompanying-course-work'] {
div.dashboard,
h4.badge-title,
h3.badge-title,
diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/AdminLocation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/AdminLocation.vue
index 9b3a6ade9..35b2f8847 100644
--- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/AdminLocation.vue
+++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/AdminLocation.vue
@@ -34,7 +34,7 @@