Commit ac016be0 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

UP : Système permettant de personnaliser les messages des notifications pour les jalons

parent a68ffc4f
Loading
Loading
Loading
Loading
Loading
+24 −3
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
namespace Oscar\Entity;

use Doctrine\ORM\Mapping as ORM;
use Moment\Moment;

/**
 * Dates des Activités (Jalons)
@@ -85,8 +86,6 @@ class ActivityDate implements ITrackable
     */
    private $finishedBy;



    /**
     * Date à laquelle le jalon a été complété.
     *
@@ -95,7 +94,6 @@ class ActivityDate implements ITrackable
     */
    private $dateFinish;


    public function finish( $value = 100, $date = null ){
        $this->finished = $value;
        if( $this->finished >= self::VALUE_VALIDED ){
@@ -103,6 +101,29 @@ class ActivityDate implements ITrackable
        }
    }


    public function getMessage(){
        if( !$this->getType()->getMessage() ){
            return sprintf(
                "Le jalon %s de l'activité %s arrive à échéance",
                $this->getType()->getLabel(),
                $this->getActivity()->log()
            );
        } else {
            $pattern = $this->getType()->getMessage();

            $activityRE = '/(:activity)/m';
            $message = preg_replace($activityRE, $this->getActivity()->log(), $pattern);

            $dateRE = '/(:date)/m';
            Moment::setLocale('fr_FR');
            $moment = Moment::fromDateTime($this->getDateStart());
            $message = preg_replace($dateRE, $moment->format('l d F Y'), $message);

            return $message;
        }
    }

    public function isFinishable(){
        if( $this->getType() ){
            return $this->getType()->isFinishable();
+23 −0
Original line number Diff line number Diff line
@@ -75,6 +75,29 @@ class DateType implements ITrackable
     */
    protected $roles;

    /**
     * Message de la notification.
     * @var
     * @ORM\Column(type="text", nullable=true)
     */
    private $message;

    /**
     * @return mixed
     */
    public function getMessage()
    {
        return $this->message;
    }

    /**
     * @param mixed $message
     */
    public function setMessage($message): self
    {
        $this->message = $message;
        return $this;
    }

    /**
     * DateType constructor.
+15 −0
Original line number Diff line number Diff line
@@ -105,6 +105,20 @@ class DateTypeForm extends Form implements InputFilterProviderInterface
            'type'=>'Textarea'
        ]);

        // DESCRIPTION
        $label = 'Message';
        $this->add([
                       'name'   => 'message',
                       'options' => [
                           'label' => $label
                       ],
                       'attributes'    => [
                           'class'       => 'form-control',
                           'placeholder'   => $label,
                       ],
                       'type'=>'Textarea'
                   ]);

        // ROLES
        $label = 'Roles';
        $this->add(
@@ -139,6 +153,7 @@ class DateTypeForm extends Form implements InputFilterProviderInterface
        return [
            'label' => [ 'required' => true ],
            'description' => [ 'required' => false ],
            'message' => [ 'required' => false ],
            'recursivity' => [ 'required' => false ],
            'finishable' => [ 'required' => false ],
            'roles' => ['required' => false],
+2 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ class DateTypeFormHydrator implements HydratorInterface, ServiceLocatorAwareInte
        $data = [
            'id' => $object->getId(),
            'description' => $object->getDescription(),
            'message' => $object->getMessage(),
            'facet' => array_search($object->getFacet(), OscarFacet::getFacets()),
            'label' => $object->getLabel(),
            'recursivity' => $object->getRecursivity(),
@@ -64,6 +65,7 @@ class DateTypeFormHydrator implements HydratorInterface, ServiceLocatorAwareInte

        $object->setDescription($data['description'])
            ->setFacet(OscarFacet::getFacets()[$data['facet']])
            ->setMessage($data['message'])
            ->setRecursivity($data['recursivity'])
            ->setFinishable(array_key_exists('finishable', $data) ? true : false)
            ->setLabel($data['label']);
+1 −5
Original line number Diff line number Diff line
@@ -506,11 +506,7 @@ class NotificationService implements UseServiceContainer
            }

            // Notification de base à la date D
            $message = sprintf(
                "Le jalon %s de l'activité %s arrive à échéance",
                $milestone->getType()->getLabel(),
                $activity->log()
            );
            $message = $milestone->getMessage();

            $hashs[] = $this->buildNotificationCore(
                $message,
Loading