Commit 2f049378 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Fix : Le mail est maintenant divisé en 3 partie :

1°/ Les jalons "à faire" non réalisé (Pour les rôles concernés)
2°/ Les versements en retard (uniquement pour les personnes ayant le droit d'édition sur les payments)
3°/ Les notifications non-lues
parent a4996af6
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@ class OscarNotificationsMailsPersonsCommand extends OscarCommandAbstract
        $date = $input->getOption('date');
        $dateRef = new \DateTime();
        if( $date ){
            $dateRef = new \DateTime(date('Y-m-d ') . $date);
            $dateRef = new \DateTime($date);
        }

        /** @var PersonService $personService */
+5 −0
Original line number Diff line number Diff line
@@ -145,6 +145,11 @@ class ActivityPayment implements ITrackable
        return $this->datePredicted;
    }

    public function getDatePredictedStr($format='Y-m-d')
    {
        return $this->datePredicted ? $this->getDatePredicted()->format($format) : null;
    }

    /**
     * @param datetime $datePredicted
     */
+22 −0
Original line number Diff line number Diff line
@@ -43,6 +43,28 @@ class ActivityRepository extends EntityRepository
        return array_map('current', $queryBuilder->getQuery()->getArrayResult());
    }

    /**
     * Retourne les activités avec des jalons en retard.
     * @return array
     */
    public function getActivitiesWithUndoneMilestones( string $dateRef = "") :array
    {
        if( !$dateRef ){
            $dateRef = date('Y-m-d');
        }

        $queryBuilder = $this->createQueryBuilder('a')
            ->innerJoin('a.milestones', 'm')
            ->innerJoin('m.type', 't')
            ->where('t.finishable = true AND m.dateStart < :dateRef AND (m.finished IS NULL OR m.finished < 100)');

        $pameters = [
            'dateRef' => $dateRef
        ];
        $queryBuilder->setParameters($pameters);
        return $queryBuilder->getQuery()->getResult();
    }


    protected function baseQueryWithOrganizationOf(): QueryBuilder
    {
+8 −0
Original line number Diff line number Diff line
@@ -196,6 +196,14 @@ class DateType implements ITrackable
        return $this->roles;
    }

    public function getRolesId() :array {
        $roles = [];
        foreach ($this->getRoles() as $role) {
            $roles[] = $role->getId();
        }
        return $roles;
    }

    /**
     * @param Role $role
     * @return $this
+16 −0
Original line number Diff line number Diff line
@@ -513,6 +513,22 @@ class Organization implements ResourceInterface, IConnectedObject
        return false;
    }

    public function getPersonRolesId( Person $person) {
        $roleIds = [];
        if( $this->hasPerson($person) ){
            /** @var OrganizationPerson $member */
            foreach ($this->getPersons() as $member) {
                if ($member->getPerson()->getId() == $person->getId()) {
                    $roleId = $member->getRoleObj()->getId();
                    if( !in_array($roleId, $roleIds) ){
                        $roleIds[] = $roleId;
                    }
                }
            }
        }
        return $roleIds;
    }


    public function hasResponsable(Person $person)
    {
Loading