Skip to content

Commit

Permalink
Merge pull request #1417 from MTES-MCT/fix/1416-check-partner-not-null
Browse files Browse the repository at this point in the history
[QA] Visites - Ajout contrôle sur l'existence partenaire sur une intervention
  • Loading branch information
hmeneuvrier authored Jul 3, 2023
2 parents 497a58b + a6b6592 commit 30775d6
Show file tree
Hide file tree
Showing 14 changed files with 53 additions and 40 deletions.
7 changes: 4 additions & 3 deletions src/Command/NotifyVisitsCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,21 @@ protected function execute(InputInterface $input, OutputInterface $output): int

$listFutureVisits = $this->interventionRepository->getFutureVisits();
foreach ($listFutureVisits as $intervention) {
$partnerName = $intervention->getPartner() ? $intervention->getPartner()->getNom() : 'Non renseigné';
$signalement = $intervention->getSignalement();
$description = '<strong>Rappel de visite :</strong> la visite du logement situé';
$description .= $signalement->getAdresseOccupant().' '.$signalement->getCpOccupant().' '.$signalement->getVilleOccupant();
$description .= ' aura lieu le '.$intervention->getScheduledAt()->format('d/m/Y');
$description .= '<br>La visite sera effectuée par '.$intervention->getPartner()->getNom().'.';
$description .= '<br>La visite sera effectuée par '.$partnerName.'.';
$suivi = $this->suiviManager->createSuivi(
user: null,
signalement: $intervention->getSignalement(),
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_TECHNICAL,
],
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

Expand Down
10 changes: 5 additions & 5 deletions src/Controller/Back/SignalementVisitesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,17 +89,17 @@ public function addVisiteToSignalement(

$requestAddData = $request->get('visite-add');
$visiteRequest = new VisiteRequest(
idIntervention: $requestAddData['intervention'] ?? null,
date: $requestAddData['date'],
time: $requestAddData['time'],
idPartner: $requestAddData['partner'],
idIntervention: $requestAddData['intervention'] ?? null,
details: $requestAddData['details'] ?? null,
concludeProcedure: $requestAddData['concludeProcedure'] ?? null,
isVisiteDone: $requestAddData['visiteDone'] ?? null,
isOccupantPresent: $requestAddData['occupantPresent'] ?? null,
isProprietairePresent: $requestAddData['proprietairePresent'] ?? null,
document: $fileName,
isUsagerNotified: !empty($requestAddData['notifyUsager']),
document: $fileName,
);

if ($intervention = $interventionManager->createVisiteFromRequest($signalement, $visiteRequest)) {
Expand Down Expand Up @@ -188,17 +188,17 @@ public function rescheduleVisiteFromSignalement(
$fileName = $this->getUploadedFile($request, 'visite-reschedule', $uploadHandler, $filenameGenerator);

$visiteRequest = new VisiteRequest(
idIntervention: $requestRescheduleData['intervention'],
date: $requestRescheduleData['date'],
time: $requestRescheduleData['time'],
idPartner: $requestRescheduleData['partner'] ?? $intervention->getPartner()->getId(),
idIntervention: $requestRescheduleData['intervention'],
idPartner: $requestRescheduleData['partner'] ?? $intervention->getPartner()?->getId(),
details: $requestRescheduleData['details'] ?? null,
concludeProcedure: $requestRescheduleData['concludeProcedure'] ?? null,
isVisiteDone: $requestRescheduleData['visiteDone'] ?? null,
isOccupantPresent: $requestRescheduleData['occupantPresent'] ?? null,
isProprietairePresent: $requestRescheduleData['proprietairePresent'] ?? null,
document: $fileName,
isUsagerNotified: !empty($requestRescheduleData['notifyUsager']),
document: $fileName,
);

if ($intervention = $interventionManager->rescheduleVisiteFromRequest($signalement, $visiteRequest)) {
Expand Down
9 changes: 6 additions & 3 deletions src/EventSubscriber/InterventionCanceledSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,19 @@ public function onInterventionCanceled(Event $event): void
$suivi = $this->suiviManager->createSuivi(
user: $currentUser,
signalement: $intervention->getSignalement(),
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_AUTO,
],
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

$this->visiteNotifier->notifyUsagers($intervention, NotificationMailerType::TYPE_VISITE_CANCELED_TO_USAGER);
$this->visiteNotifier->notifyUsagers(
$intervention,
NotificationMailerType::TYPE_VISITE_CANCELED_TO_USAGER
);

$this->visiteNotifier->notifyAgents(
intervention: $intervention,
Expand Down
7 changes: 4 additions & 3 deletions src/EventSubscriber/InterventionConfirmedSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ public function onInterventionConfirmed(Event $event): void
$intervention = $event->getSubject();
$currentUser = $this->security->getUser();
if (InterventionType::VISITE === $intervention->getType()) {
$partnerName = $intervention->getPartner() ? $intervention->getPartner()->getNom() : 'Non renseigné';
$description = 'Après visite du logement';
if ($intervention->getPartner()) {
$description .= ' par '.$intervention->getPartner()->getNom();
$description .= ' par '.$partnerName;
}
$description .= ', la situation observée du logement est :<br>';
foreach ($intervention->getConcludeProcedure() as $concludeProcedure) {
Expand All @@ -48,12 +49,12 @@ public function onInterventionConfirmed(Event $event): void
$suivi = $this->suiviManager->createSuivi(
user: $currentUser,
signalement: $intervention->getSignalement(),
isPublic: $isUsagerNotified,
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_AUTO,
],
isPublic: $isUsagerNotified,
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

Expand Down
7 changes: 4 additions & 3 deletions src/EventSubscriber/InterventionCreatedSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,19 +29,20 @@ public function onInterventionCreated(InterventionCreatedEvent $event): void
{
$intervention = $event->getIntervention();
if (InterventionType::VISITE === $intervention->getType()) {
$partnerName = $intervention->getPartner() ? $intervention->getPartner()->getNom() : 'Non renseigné';
$description = 'Visite programmée : une visite du logement situé '.$intervention->getSignalement()->getAdresseOccupant();
$description .= ' est prévue le '.$intervention->getScheduledAt()->format('d/m/Y').'.';
$description .= '<br>';
$description .= 'La visite sera effectuée par '.$intervention->getPartner()->getNom().'.';
$description .= 'La visite sera effectuée par '.$partnerName.'.';
$suivi = $this->suiviManager->createSuivi(
user: $event->getUser(),
signalement: $intervention->getSignalement(),
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_AUTO,
],
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

Expand Down
18 changes: 10 additions & 8 deletions src/EventSubscriber/InterventionEditedSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,13 @@
use App\Manager\SuiviManager;
use App\Service\Mailer\NotificationMailerType;
use App\Service\Signalement\VisiteNotifier;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class InterventionEditedSubscriber implements EventSubscriberInterface
{
public function __construct(
private Security $security,
private VisiteNotifier $visiteNotifier,
private SuiviManager $suiviManager,
private readonly VisiteNotifier $visiteNotifier,
private readonly SuiviManager $suiviManager,
) {
}

Expand All @@ -32,23 +30,27 @@ public function onInterventionEdited(InterventionEditedEvent $event): void
$intervention = $event->getIntervention();
if (InterventionType::VISITE === $intervention->getType()) {
$currentUser = $event->getUser();
$description = 'Edition de la conclusion de la visite par '.$intervention->getPartner()->getNom().'.<br>';
$partnerName = $intervention->getPartner() ? $intervention->getPartner()->getNom() : 'Non renseigné';
$description = 'Edition de la conclusion de la visite par '.$partnerName.'.<br>';
$description .= 'Commentaire opérateur :<br>';
$description .= $intervention->getDetails();
$suivi = $this->suiviManager->createSuivi(
user: $currentUser,
signalement: $intervention->getSignalement(),
isPublic: $event->isUsagerNotified(),
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_AUTO,
],
isPublic: $event->isUsagerNotified(),
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

if ($event->isUsagerNotified()) {
$this->visiteNotifier->notifyUsagers($intervention, NotificationMailerType::TYPE_VISITE_EDITED_TO_USAGER);
$this->visiteNotifier->notifyUsagers(
$intervention,
NotificationMailerType::TYPE_VISITE_EDITED_TO_USAGER
);
}

$this->visiteNotifier->notifyAgents(
Expand Down
11 changes: 6 additions & 5 deletions src/EventSubscriber/InterventionRescheduledSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
class InterventionRescheduledSubscriber implements EventSubscriberInterface
{
public function __construct(
private VisiteNotifier $visiteNotifier,
private SuiviManager $suiviManager,
private readonly VisiteNotifier $visiteNotifier,
private readonly SuiviManager $suiviManager,
) {
}

Expand All @@ -29,21 +29,22 @@ public function onInterventionRescheduled(InterventionRescheduledEvent $event):
{
$intervention = $event->getIntervention();
if (InterventionType::VISITE === $intervention->getType()) {
$partnerName = $intervention->getPartner() ? $intervention->getPartner()->getNom() : 'Non renseigné';
$description = 'Changement de date de visite : la visite du logement initialement prévue le ';
$description .= $event->getPreviousDate()->format('d/m/Y');
$description .= ' a été décalée au ';
$description .= $intervention->getScheduledAt()->format('d/m/Y').'.';
$description .= '<br>';
$description .= 'La visite sera effectuée par '.$intervention->getPartner()->getNom().'.';
$description .= 'La visite sera effectuée par '.$partnerName.'.';
$suivi = $this->suiviManager->createSuivi(
user: $event->getUser(),
signalement: $intervention->getSignalement(),
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
params: [
'description' => $description,
'type' => Suivi::TYPE_AUTO,
],
isPublic: true,
context: Suivi::CONTEXT_INTERVENTION,
);
$this->suiviManager->save($suivi);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
{% for partner in partnersCanVisite %}
{% set alertPartner = false %}
{% for pendingVisite in pendingVisites %}
{% if pendingVisite.partner.id is same as partner.id %}
{% if pendingVisite.partner is not null and pendingVisite.partner.id is same as partner.id %}
{% set alertPartner = true %}
{% endif %}
{% endfor %}
Expand Down Expand Up @@ -101,4 +101,4 @@
</div>
</div>
</div>
</dialog>
</dialog>
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,17 @@
{% for partner in partnersCanVisite %}
{% set alertPartner = false %}
{% for pendingVisite in pendingVisites %}
{% if pendingVisite.partner.id is same as partner.id and partner.id is not same as intervention.partner.id %}
{% if intervention.partner is not null
and pendingVisite.partner is not null
and pendingVisite.partner.id is same as partner.id
and partner.id is not same as intervention.partner.id %}
{% set alertPartner = true %}
{% endif %}
{% endfor %}
<option
value="{{ partner.id }}"
{% if partner.id is same as intervention.partner.id %}selected="selected"{% endif %}
{% if intervention.partner is not null
and partner.id is same as intervention.partner.id %}selected="selected"{% endif %}
class="{{ alertPartner ? 'alert-partner' : '' }}"
>
{{ partner.nom|upper }}
Expand Down Expand Up @@ -106,4 +110,4 @@
</div>
</div>
</div>
</dialog>
</dialog>
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<strong>{{ signalement.adresseOccupant~', '~signalement.cpOccupant~' '~signalement.villeOccupant|upper }}</strong>
le {{ (intervention.scheduledAt.format('H')) > 0 ? intervention.scheduledAt.format('d/m/Y à H:i') : intervention.scheduledAt.format('d/m/Y') }}.
<br><br>
La visite sera effectuée par {{ intervention.partner.nom }}.
La visite sera effectuée par {{ intervention.partner ? intervention.partner.nom : 'Non renseigné' }}.
<br><br>
Cliquez sur le bouton ci-dessous pour accéder au signalement.
</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<br>
une visite est prévue à cette adresse le {{ (intervention.scheduledAt.format('H')) > 0 ? intervention.scheduledAt.format('d/m/Y à H:i') : intervention.scheduledAt.format('d/m/Y') }}.
<br><br>
La visite sera effectuée par {{ intervention.partner.nom }}.
La visite sera effectuée par {{ intervention.partner ? intervention.partner.nom : 'Non renseigné' }}.
<br><br>
Si vous n'êtes pas disponible à cette date, veuillez nous le signaler au plus vite en cliquant sur le bouton ci-dessous.
</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<br>
<strong>{{ signalement.adresseOccupant~', '~signalement.cpOccupant~' '~signalement.villeOccupant|upper }}</strong>
<br>
effectuée par {{ intervention.partner.nom }} a été mise à jour.
effectuée par {{ intervention.partner ? intervention.partner.nom : 'Non renseigné' }} a été mise à jour.
<br><br>
Cliquez sur le bouton ci-dessous pour y accéder.
</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<strong>{{ signalement.adresseOccupant~', '~signalement.cpOccupant~' '~signalement.villeOccupant|upper }}</strong>
aura lieu le {{intervention.scheduledAt.format('d/m/Y')}}.
<br>
La visite sera effectuée par {{intervention.partner.nom}}.
La visite sera effectuée par {{intervention.partner ? intervention.partner.nom : 'Non renseigné'}}.
<br>
<strong>Attention :</strong> si vous ne vous présentez pas à cette visite, nous ne pouvons pas garantir
qu'une nouvelle date de visite vous sera proposée rapidement.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
La visite du logement initialement prévue le {{ old_date.format('d/m/Y') }} a été décalée au
{{ (intervention.scheduledAt.format('H')) > 0 ? intervention.scheduledAt.format('d/m/Y à H:i') : intervention.scheduledAt.format('d/m/Y') }}.
<br><br>
La visite sera effectuée par {{ intervention.partner.nom }}.
La visite sera effectuée par {{ intervention.partner ? intervention.partner.nom : 'Non renseigné' }}.
<br><br>
Si vous n'êtes pas disponible à cette date, veuillez nous le signaler au plus vite en cliquant sur le bouton ci-dessous.
</p>
Expand Down

0 comments on commit 30775d6

Please sign in to comment.