Commit 285a6c61 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Notifications : Les personnes ayant la visibilité sur les documents sont...

Notifications : Les personnes ayant la visibilité sur les documents sont notifiées lors du dépôt d'un nouveau document
parent 6f918935
Loading
Loading
Loading
Loading
+3 −0
Changes for module/Oscar/src/Oscar/Controller/ContractDocumentController.php: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -171,6 +171,9 @@ class ContractDocumentController extends AbstractOscarController

            $datas = $documentService->performRequest($this->getRequest(), $docReplaced,
                function (ContractDocument $document) use( $activity ) {

                    $this->getNotificationService()->generateActivityDocumentUploaded($document);

                    $this->getActivityLogService()->addUserInfo(
                                sprintf("a déposé le document '%s' dans l'activité %s", $document->getFileName(), $activity->log()),
                                'Activity', $activity->getId()
+29 −0
Changes for module/Oscar/src/Oscar/Service/NotificationService.php: 29 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ use Oscar\Entity\ActivityOrganization;
use Oscar\Entity\ActivityPayment;
use Oscar\Entity\ActivityPerson;
use Oscar\Entity\Authentification;
use Oscar\Entity\ContractDocument;
use Oscar\Entity\Notification;
use Oscar\Entity\NotificationPerson;
use Oscar\Entity\OrganizationPerson;
@@ -213,6 +214,34 @@ class NotificationService implements ServiceLocatorAwareInterface, EntityManager
    }


    /**
     * Déclenche l'envoi d'un document lors de l'upload.
     *
     * @param ContractDocument $document
     * @throws \Exception
     */
    public function generateActivityDocumentUploaded( ContractDocument $document ){
        $personToNotify = $this->getPersonsIdFor(Privileges::ACTIVITY_DOCUMENT_SHOW, $document->getGrant());
        $documentText   = $document->getFileName();
        $uploaderText   = (string) $document->getPerson();
        $activityText   = $document->getGrant()->log();

        // Notification de base à la date D
        $message = sprintf("%s a déposé le document %s dans l'activité %s.",
           $uploaderText,
            $documentText,
            $activityText
        );

        $this->getLogger()->debug("PERSONNES NOTIFIEES DOCUMENT : " . implode(',', $personToNotify));

        $this->notification($message,
            $personToNotify, Notification::OBJECT_ACTIVITY,
            $document->getGrant()->getId(), "activity", new \DateTime(),
            new \DateTime(), false);
    }



    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///